simulace 4313 v AVR studiu

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

simulace 4313 v AVR studiu

#1 Příspěvek od jiriS »

Ahoj,
prosím o pomoc, pokud se s tím někdo setkal.Vnější přerušení PCIE obsahuje u 4313 tři přerušení PCIE (0,1,2)(GIMSK), stejně tak samozřejmě vlajky (GIFR resp.EIFR). Ovšem při zapnutí simulace v AVR Studiu (verze 4.12.460) je ale zobrazeno jen přerušení PCIE bez číslice, překladač přerušení s číslicí také nezná. To při použití názvů bitů pro nastavení také působí potíže a simulace nefunguje. Netuší někdo, co by mohlo být příčinou?
Děkuji
jirS

Uživatelský avatar
vicious
Příspěvky: 635
Registrován: 10 srp 2007, 02:00
Bydliště: 3 km od Humenného

#2 Příspěvek od vicious »

Napadlo ma, či máš vybratý správny procesor v Device selection :?:

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#3 Příspěvek od FHonza »

V instalaci WinAVR je v souboru iotn4313.h několik chyb proti Atmel datasheetu. V příloze je opravený soubor. Liší se pouze na několika málo místech. Zdroj je zde

Kód: Vybrat vše

#define PCMSK0 _SFR_IO8(0x020) // misto #define PCMSK _SFR_IO8(0x020)
#define GIFR _SFR_IO8(0x03A) // misto #define EIFR _SFR_IO8(0x03A)
#define PCIF1 3
#define PCIF2 4
#define PCIF0 5

#define PCIE1 3
#define PCIE2 4
#define PCIE0 5

// misto USART_xxxx
#define USART0_RX_vect_num  7
#define USART0_RX_vect      _VECTOR(7)  /* USART, Rx Complete */
#define USART0_UDRE_vect_num  8
#define USART0_UDRE_vect      _VECTOR(8)  /* USART Data Register Empty */
#define USART0_TX_vect_num  9
#define USART0_TX_vect      _VECTOR(9)  /* USART, Tx Complete */
Přílohy
iotn4313.zip
(4.14 KiB) Staženo 77 x

Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

#4 Příspěvek od jiriS »

Ahoj,
díky za reakce. (Správný typ procesoru jsem měl.) Dík za ten soubor, dnes to zkusím přeinstalovat, mohlo by to odpovídat tomu chování. Dám vědět.
Dík
JiriS

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#5 Příspěvek od FHonza »

Nic neinstaluj znovu, jenom původní soubor nahraď novým. Je to určitě tím, vlastní zkušenost.

Edit: je v adresáři x:\WinAVR\avr\include\avr\

Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

#6 Příspěvek od jiriS »

Ahoj,
dík za upozornění, měl jsem na mysli jen náhradu. Udělal jsem to, ale zatím se vše chová stejně- jednak v souboru tn4313def.inc je taky uveden jen PCIE bez číslic, možná bude chyba i tam. Simulátor taky zobrazuje jen jeden PCIE. Ale i tak díky, kdybyste někdo ještě něco věděli, budu rád.
JiriS

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#7 Příspěvek od FHonza »

Tak nějak mě nedošlo že moje první zásadní otázka měla znít: Co používáš za překladač a toolchain ?
Vše co jsem psal je pro WinAVR a AVR Studio 4.19.

V simulátoru pak jednotlivé bity skutečně nejsou označeny jako např. PCIFx, ale stačí se koukat na příslušný registr a jeho odpovídající bity. Oprava *.h souboru řeší pouze překlad kódu tak, aby se daly použít stejná označení registrů a bitů jako v Atmel datasheetu.

Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

#8 Příspěvek od jiriS »

Ahoj, už jsem se sem zase dostal. Používám Avr studio 4.12, a pracuju v assembleru. Co se týče překladu: když jsem zkusmo doplnil soubor tn4313.def o deklaraci PCIEx, překladač to okamžitě pochopil. Ale v zobrazení registru při simulaci se už tento přidaný bit nezobrazil, nebyl tedy ani přístupný pro ruční úpravu, stejně tak tam chybí bity Flag příslušné jednotlivým PCIEx. Zároveň, jak jsem vlastně uvedl, v definičním souboru tyto bity rovněž chybí. Je tu tedy rozpor mezi datasheetem a avrstudiem. Předpokládám, že datasheet je v pořádku, tedy je chyba v AVR st., a protože nemám ještě tolik zkušenotí, je to pro mě téměř neodladitelné. (Je možnost samozřejmě vždy přeprogramovat čip a zobrazovat výsledky na LCD, ale...) A navíc mám mírný hendikep- jsem poněkud starší, a tím pádem se spíš orientuji v ruské verzi angličtiny :) .

Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

#9 Příspěvek od jiriS »

Pardon,
překouk jsem se, je to verze 4.19

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#10 Příspěvek od Standa33 »

Pro nastavení externího přerušení se používají registry: GIMSK,EIFR,MCUCR,PCMSK,PCMSK1,PCMSK2.

v registru GIMSK se povoluje přerušení INT1,INT0,PCIE(PCINT0..15)
takže pro jakékoliv přerušení od PCINTx je nutné nastavit PCIE = 1.

Příznak přerušení je v registru EIFR.PCIF - aktivací jakéhokoliv PCINTx se nastaví na 1.

Pomocí registrů:
PCMSK - PCINT(7..0) - (v AVR Studiu je v záložce CPU)
PCMSK1 - PCINT10..8
PCMSK2 - PCINT(17..11)
se provede výběr vstupu.

MCUCR - nastavení úrovně aktivace INT0,INT1 a nastavení režimu spotřeby.

Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

#11 Příspěvek od jiriS »

Dík, Stando33.
V podstatě jsem tohle taky vykoumal. Zaráží mě ale, že v datasheetu jsou nejen uvedeny bity PCIE0(1,2) (GIMSK,b5,4,3), ale také odpovídající vlajky v EIFR(bit5,4,3), t.j. PCIF0(1,2) a také má procesor odpovídající vektory přerušení PCINT0,PCINT1 a PCINT2. Takže jsem byl překvapený, když přakladač hlásil chybu při pokusu o nastavení (1<<PCIE0). V podstatě tedy datasheet neodpovídá skutečnosti a AVR studio simuluje procesor, nebo druhá možnost- chyba v AVR Sudiu. Datasheet jsem si stáhl asi před týdnem, je společný jak pro 4313, tak pro 2313 jen s rozdíly, které nejsou pro aplikaci tak důležité. Jinak, jak popisuješ, simulátor i překladač mi tak funguje. Ale protože i v souboru xxx.XMLS (snad jsem to nepopletl), včetně tnxxxdef je popis stejný, jak jsi uvedl, předpokládám, že i procesor takhle pracuje a neměl by nakonec problém to odladit. Ale stejně si myslím, že by datasheet měl odpovídat skutečnosti.
Zatím dík
Ahoj

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#12 Příspěvek od FHonza »

Obávám se že v simulátoru je to tak, jak píše Standa33, ale v reálu "na procesoru" to bude dle datasheetu. PCINT1, PCINT2, PCMSK1 a PCMSK2 byly doplněny do datasheetu až v pozdější revizi (viz. Datasheet Revision History). Na druhou stranu je mě záhadou že i v posledním AVR Studiu 6.1 je to stejně. Bohužel momentálně nemám procesor v šuplíku, takže to nevyzkouším.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#13 Příspěvek od AB1 »

Takže jsem byl překvapený, když přakladač hlásil chybu při pokusu o nastavení (1<<PCIE0).
Pokusil jsem se opravit soubor "tn4113def.inc". Bit PCIE0 (a jiné) nebyl definovaný. Můžeš vyzkoušet.
Přílohy
tn4313def_new.zip
(5.84 KiB) Staženo 92 x

Uživatelský avatar
jiriS
Příspěvky: 609
Registrován: 14 led 2014, 01:00
Bydliště: Ašsko
Kontaktovat uživatele:

#14 Příspěvek od jiriS »

Dík za odpovědi. Definici v tn4313.def jsem taky zapsal, takže překladač to vzal v pořádku. Ale v simulátoru ty bity nejsou zobrazeny, tím není možné nasimulovat přerušení jiné než původní (AVR podle mých poznatků neumí vygenerovat přerušení změnou hodnoty na příslušném pinu, musí se ručně nastavit vlajka v EIFR. A to taky znamená, že se generuje pouze vektor přerušení PCIE, nikoliv PCIE1 a 2.
Do historie jsem moc nelezl, mám s angličtinou ten problém, že jí moc nerozumím, takže louskám co to jde.
No ale už jsem se rozhodl, 4313 pořídím, neměl by být problém zjistit, jak 4313 pracuje v reálu a podle mtoho program napsat.
V každém případě DÍKY všem, moc mi to pomohlo ujasnit situaci a zorientovat se. Už jsem i uvažoval nad jiným typem (mega8).
Ještě jednou moc díky, opravdu jste mi pomohli.
JiriS

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#15 Příspěvek od FHonza »

Taky mě to nedalo a jednu tiny jsem objednal. Příští týden vyzkouším a pak poreferuji.
Do historie jsem moc nelezl, mám s angličtinou ten problém, že jí moc nerozumím, takže louskám co to jde.
Ruština mě povinně provázela celé moje základní a střední vzdělávání, nebudu na tom o moc líp :)

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“