Attiny 13 Pacsal – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Attiny 13 Pacsal – Pascal – Fórum – Programujte.comAttiny 13 Pacsal – Pascal – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Rytir91
~ Anonymní uživatel
15 příspěvků
21. 7. 2011   #1
-
0
-

Ahoj, mám malej problém, v e-labu píšu malej program a nedáří se mi ho zkompilovat, vždy píše chybu:

Error: Adr: $4 not inside current ram page: IDATA

Program je následující:

program blik;

{$NOSHADOW}

{ $WG}                     {global Warnings off}

Device = Tiny13, VCC=5;

Import SysTick;

From System Import LongInt;

Define

  ProcClock      = 4000000;       {Hertz}

  SysTick        = 10;             {msec}

  StackSize      = $0064, iData;

  FrameSize      = $0064, iData;

Implementation

{$IDATA}

{ Type Declarations }

type


{ Const Declarations }

{ Var Declarations }

{$IDATA}

{ functions }

procedure InitPorts;

begin

  PortB:= %00111111;

end InitPorts;


{ Main Program }

{$IDATA}

begin

  InitPorts;

  EnableInts;

  loop

  PortB := %00000001;

  MDelay(60000);

  PortB := %00000000;

  MDelay(1000);

  endloop;

end blik.

Děkuji za rady.

Nahlásit jako SPAM
IP: 88.100.219.–
Mircosoft+1
Věrný člen
22. 7. 2011   #2
-
0
-

A píše aspoň, na kterém řádku ta chyba je?

Tenhle jazyk má s normálním Pascalem společných jenom pár klíčových slov, jinak je to něco úplně jiného. Jednočipy 8051 znám, ale Attiny13 ne. Dej mi dokumentaci k procesoru a k tomu jazyku (stačí nějaký dobře mířený odkaz, s Googlem jsem moc nepochodil) a možná ti poradím.

Jinak asi bude lepší zeptat se v sekci Mikrokontroléry: http://programujte.com/…okontrolery/

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Rytir91
~ Anonymní uživatel
15 příspěvků
22. 7. 2011   #3
-
0
-

#2 Mircosoft
 

Jedná se o řádek 62. Příkládám odkaz na GME kde v sekci dokumenty je datasheet. WEB

Program je psán v prostředí E-LAB PED32 (AVRco) WEB

Odkaz na mikro Paskal nemám, používám publikaci ATMEL AVR PASCAL (Vladimír Váňa), předpokládám že celý problém je v nastavení velikosti

StackSize      = $0064, iData;
  FrameSize      = $0064, iData;

Přesné hodnoty neznám a nemám tušení kde je vycucat.

Nahlásit jako SPAM
IP: 88.100.219.–
Řešení
Mircosoft+1
Věrný člen
22. 7. 2011   #4
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Paráda, manuály až pod nos, tak se mi to líbí :-). Díky.

Jestli dobře čtu, tak procesor má 64 B SRAM pro data, 64 B EEPROM pro program a 1 KB flashe pro trvalé ukládání dat. Takže asi nepůjde nastavit velikost $64 (což je desítkově 100).

Termín Stacksize obvykle znamená velikost zásobníku, čili místa v RAM, kam se ukládají návratové adresy při volání procedur, parametry a podobné věci. V tomhle programu nemáš žádné velké složitosti ani rekurze, takže zásobník bude stačit relativně malý - dal bych tak 16.

Framesize by mohla být velikost stránky. Na 8051 se stránkovalo tuším nějak přes dva bity v PSW a uvnitř stránky se pak indexovalo registrem 0 nebo tak nějak. Velikost stránky byla každopádně konstantní a nešla změnit. Ještě se podívám, jak je to tady. V tom programu bych hodnotu $64 určitě změnil na něco menšího.

Ze zdejšího formátování se nedá poznat, co je vynechaný řádek a co jednoduchý enter, takže nejdou počítat řádky :-(. Kdyžtak ten 62. nějak popiš...

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Rytir91
~ Anonymní uživatel
15 příspěvků
22. 7. 2011   #5
-
0
-

#4 Mircosoft

řádek 62: end blik.

K mému překvapení proběhla kompilace.

Hned jak to rozjedu na bastl desce tak potvrdím funkčnost. Mohl bys mi prosím ještě pořádně vysvětlit co to je?

StackSize      = $0064, iData;
  FrameSize      = $0064, iData;

Pro příště abych si to mohl nastavit sám :) Jinak díky.

Nahlásit jako SPAM
IP: 88.100.219.–
Mircosoft+1
Věrný člen
22. 7. 2011   #6
-
+1
-
Zajímavé

.

Stack je LIFO zásobník používaný na ukládání mezivýsledků (např. u složitějších výrazů), dá se použít i ručně (instrukce Push a Pop). Stacksize určuje, jak má být velký (v bytech); slovo za čárkou říká, do které paměti se má umístit (normálně idata, čili běžná SRAM; teoreticky jde ještě xdata, ale u ATtiny13 asi ne). Minimální možná velikost je 16.

Frame je něco podobného, ale používá se na ukládání lokálních proměnných, parametrů a návratových adres procedur a funkcí. Framesize funguje obdobně jako Stacksize, minimální velikost je 8. Jenom jsem z manuálu (DocuCompiler.pdf) nepochopil, jestli je frame součástí stacku jako na PC, nebo jestli je to úplně samostatná oblast, která nemá se stackem nic společného. Tipuju spíš tu druhou možnost, ale nevím. A je to určitě jenom softwarová konstrukce, samotný procesor žádné speciální instrukce pro práci s framem nemá.

Velikosti si nastav takové, jaké budeš potřebovat. Jestli používáš dlouhé a složité výrazy, zvětši stack. Jestli máš hodně procedur a funkcí (obzvlášť když se volají navzájem nebo rekurzivně) s parametry a lokálními proměnnými, zvětši frame. Překladač ti vynadá, když zjistí, že velikosti nebudou stačit, ale většinou na to nepřijde, takže ti pak program bude blbnout (když stack nebo frame přeleze do globálních proměnných a něco tam přepíše).

Jo, a tu direktivu {$IDATA} tam máš zbytečně mockrát - stačí jednou a bude platit tak dlouho, dokud ji nepředefinuješ jinou.
Import Longintu je zbytečný, protože ho nepoužíváš.
Řádek s { $WG} můžeš smazat, tohle je defaultní nastavení. Když to aktivuješ, překladač ti nahlásí zbytečné deklarace.

To bude tak asi všechno. Díky za zajímavý studijní materiál :-).

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Rytir91
~ Anonymní uživatel
15 příspěvků
22. 7. 2011   #7
-
0
-

#6 Mircosoft

taky moc děkuji, bylo to poučující.

Nahlásit jako SPAM
IP: 91.219.240.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Attiny 13 — založil Rytir91

Attiny 13 programovanie — založil Martingt89

Programator ATtiny — založil _Radek_

Attiny - Podmínka — založil Interrupt

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý