simulace 4313 v AVR studiu
Moderátor: Moderátoři
simulace 4313 v AVR studiu
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
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 119 x
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
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.
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.
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
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 130 x
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