ATMEGA 644 ukončeno
Moderátor: Moderátoři
ATMEGA 644 ukončeno
Zdravím všechny v Novém roce . Potřebuji poradit .
K jéźísku jsem dostal kit :
AVR Minimum System Board ATMEGA16 ATmega32 + USB ISP USBasp Programmer For ATMEL
programuje se s nim dobře READ , WRITE všechny fce jdou ale program
viz přiloha nefunguje .Procesor nepracuje tak jako pracuje virtuální simulátor tohoto programu ....
Předem děkuji za radu ..
Odladěnej program na simulátoru kterej nefunguje v procesoru :
.DEF REG=R16 ;pracovní registr REG LIBOVOLNY POPIS REGISTRU
.EQU DDR=DDRB ;řízení směru PORTU B
.EQU XTAL=CLKPR ;řízení OSCILATORU
;-------------- NASTAVENI PROCESORU-------------------------
LDI REG,0b00000001 ; PORT B JAKO VYSTUPNI 00
OUT DDR,REG ;aktivuj výstupy PORTU B
;----------------------------------HLAVNI PROGRAM-----------------------------------------------------
H1: CBI PORTB,0
RCALL T2
SBI PORTB,0
RCALL T2
RJMP H1 ;SKOK NA H1
;------------------------------------------------------KONEC HLAVNIHO PROGRAMU--------------------------------
;======================================PODPROGRAMY--------------------------------------------------
T1:
LDI R31,0 ; = KONSTANTA DEKADICKA
T11: INC R31
CPI R31,255
BRNE T11
RET
;------------------------------------------------------
T2:
LDI R30,0 ; = KONSTANTA DEKADICKA
RCALL T1
T21: INC R30
CPI R30,255
BRNE T21
RET
K jéźísku jsem dostal kit :
AVR Minimum System Board ATMEGA16 ATmega32 + USB ISP USBasp Programmer For ATMEL
programuje se s nim dobře READ , WRITE všechny fce jdou ale program
viz přiloha nefunguje .Procesor nepracuje tak jako pracuje virtuální simulátor tohoto programu ....
Předem děkuji za radu ..
Odladěnej program na simulátoru kterej nefunguje v procesoru :
.DEF REG=R16 ;pracovní registr REG LIBOVOLNY POPIS REGISTRU
.EQU DDR=DDRB ;řízení směru PORTU B
.EQU XTAL=CLKPR ;řízení OSCILATORU
;-------------- NASTAVENI PROCESORU-------------------------
LDI REG,0b00000001 ; PORT B JAKO VYSTUPNI 00
OUT DDR,REG ;aktivuj výstupy PORTU B
;----------------------------------HLAVNI PROGRAM-----------------------------------------------------
H1: CBI PORTB,0
RCALL T2
SBI PORTB,0
RCALL T2
RJMP H1 ;SKOK NA H1
;------------------------------------------------------KONEC HLAVNIHO PROGRAMU--------------------------------
;======================================PODPROGRAMY--------------------------------------------------
T1:
LDI R31,0 ; = KONSTANTA DEKADICKA
T11: INC R31
CPI R31,255
BRNE T11
RET
;------------------------------------------------------
T2:
LDI R30,0 ; = KONSTANTA DEKADICKA
RCALL T1
T21: INC R30
CPI R30,255
BRNE T21
RET
Naposledy upravil(a) franta22 dne 10 led 2015, 04:56, celkem upraveno 1 x.
A co konkrétně? Jaká úroveň je na PORTB.0 ? Raději bych začal:
H1: SBI PORTB, 0
aby se ověřilo, že se program vůbec rozběhl. Jinak si pořiďte nějaký JTAG ICE pro AVR nebo podobný, stojí to kolem 7 dolarů můžete krokovat program přímo v HW.
Jo, a proč se téma jmenuje ATMEGA 644?
H1: SBI PORTB, 0
aby se ověřilo, že se program vůbec rozběhl. Jinak si pořiďte nějaký JTAG ICE pro AVR nebo podobný, stojí to kolem 7 dolarů můžete krokovat program přímo v HW.
Jo, a proč se téma jmenuje ATMEGA 644?
Programtor je typu USBASP V2.0 k tomu SW AVRDUDE-GUI pomocí kerého
programuji ATTINY 13 bez problémů ....
po vanocich jsem dostal kit
DO kitu se daji zasouvat obvody ATMEGA 644 nebo ATMEGA 16 NEBO ATMEGA 32 .....
Kazdej program před spustením do programatoru kontroluji na simulatoru AVR SIMULATOR IDE jehoz mam licenci .
program ATMEGA 644 se jmenuje proto že v simulátoru je zasunut obvod ATMEGA 644 ...na pinu PB0 se objevují ctverce cca 2khz i když je vysunut krystal z patice
.............................................
Dle mého názoru se mi nepodařilo aktivovat režim procesoru pro konkrétní obvod ATMEGA 644 a krystal 4MHz .
Asi procesor běži na RC oscilator ....ale statickej režim mi taky nefunguje .stale tam jsou ty ctverce na pinu PB0.
..............................................
Matoucí je že simulátor mi pracuje bez problémů ...program by se mohl jmenovat libovolně ...
Mě jde o to rozchodit ATMEGU 644 jež jsem ziskal 5KS za výhodnou cenu ...
S procesorama ATTINY 13 jsem spokojenej i pro složité programy v assembleru programované ...
Demonstrativni program jsem sem dal tento neboť aktivace ATMEGA 644´= jeho PROCESORU v assembleru se mi nedaři !!!
Programy pro atmegu 644 psané v assembleru ...= jejich počateční aktivaci jsem zatím nikde nenašel ...
programuji ATTINY 13 bez problémů ....
po vanocich jsem dostal kit
DO kitu se daji zasouvat obvody ATMEGA 644 nebo ATMEGA 16 NEBO ATMEGA 32 .....
Kazdej program před spustením do programatoru kontroluji na simulatoru AVR SIMULATOR IDE jehoz mam licenci .
program ATMEGA 644 se jmenuje proto že v simulátoru je zasunut obvod ATMEGA 644 ...na pinu PB0 se objevují ctverce cca 2khz i když je vysunut krystal z patice
.............................................
Dle mého názoru se mi nepodařilo aktivovat režim procesoru pro konkrétní obvod ATMEGA 644 a krystal 4MHz .
Asi procesor běži na RC oscilator ....ale statickej režim mi taky nefunguje .stale tam jsou ty ctverce na pinu PB0.
..............................................
Matoucí je že simulátor mi pracuje bez problémů ...program by se mohl jmenovat libovolně ...
Mě jde o to rozchodit ATMEGU 644 jež jsem ziskal 5KS za výhodnou cenu ...
S procesorama ATTINY 13 jsem spokojenej i pro složité programy v assembleru programované ...
Demonstrativni program jsem sem dal tento neboť aktivace ATMEGA 644´= jeho PROCESORU v assembleru se mi nedaři !!!
Programy pro atmegu 644 psané v assembleru ...= jejich počateční aktivaci jsem zatím nikde nenašel ...
Měl jsem podobný problém s procesorem Atmega324. Na některé piny portu C mi nešlo zapisovat ani z nich číst, nakonec jsem cpu vyměnil (pouzdro TQFP44), nepomohlo to. Začal jsem znovu pátrat v datasheetu až mě trklo, že cpu má defaultně zapnutý JTAG právě na portu C, když jsem ho ve fuses vypnul, začalo vše fungovat správně. Ale u ATmega644 se port B zdá být bezproblémový. Snad jedině špatně nastavený oscilátor, či trvalý reset.
Edit: koukám, že jsem byl pomalý. Tak máš asi špatně nastevené fuses, zkus je vyčíst. Tato stránka ti pomůže s jejich dekódováním/kódováním http://www.engbedded.com/fusecalc/
Edit: koukám, že jsem byl pomalý. Tak máš asi špatně nastevené fuses, zkus je vyčíst. Tato stránka ti pomůže s jejich dekódováním/kódováním http://www.engbedded.com/fusecalc/
Dík za radu ale s FUSema ... pojistkama a i dle kalkulatoru moc hejbat nechci neboť
se mi několikrat stalo že potom obvod ATTINY 13 nešlo smazat ani přeprogramovat .....U ATMEGY 644 bych nerad takto dopadl....
POKUD JE MOZNÉ POŠLETE MI ASPOň VÝPIS programu pro ATMEGU 324
tzn. nastavení oscilatoru pro krystal 4MHz
a dalši povely aventuelně celej program ale jen v assembleru AVR ...
atmega 644 by mela bejt analogická jako ATMEGA 324 co se týka počatečnímu rituálu SW v assembleru ...
Děkuju moc předem
se mi několikrat stalo že potom obvod ATTINY 13 nešlo smazat ani přeprogramovat .....U ATMEGY 644 bych nerad takto dopadl....
POKUD JE MOZNÉ POŠLETE MI ASPOň VÝPIS programu pro ATMEGU 324
tzn. nastavení oscilatoru pro krystal 4MHz
a dalši povely aventuelně celej program ale jen v assembleru AVR ...
atmega 644 by mela bejt analogická jako ATMEGA 324 co se týka počatečnímu rituálu SW v assembleru ...
Děkuju moc předem
Všechny AVR jsou z výroby nastaveny na taktování z vnitřního RC oscilátoru. Proto máš na výstupu ty pulzy i když odpojíš krystal.
Proto je potřeba změnit pojistky(fuse byte).
Na krystal 4MHz jsou pojistky takto LOW BYTE=hFD , HIGH BYTE=h99 (pro ATmega 644)
JTAG je na portu C tedy by nemělo vadit, že je zapnutý
Proto je potřeba změnit pojistky(fuse byte).
Na krystal 4MHz jsou pojistky takto LOW BYTE=hFD , HIGH BYTE=h99 (pro ATmega 644)
JTAG je na portu C tedy by nemělo vadit, že je zapnutý
Naposledy upravil(a) nekmil dne 05 led 2015, 19:49, celkem upraveno 3 x.
S fuses to chce opravdu třikrát měřit a jednou programovat s tím souhlasím, ale vyčítání by mělo být bezpečné. Já též používám avr-dude, ale pod Linuxem a v příkazové řádce, což mi v případě práce s fuses přijde bezpečnější, protože člověk přesně ví co se kam zapisuje narozdíl od všelijakých klikacích molochů typu avr-studio.
takže přečíst lze takto (pokud používáš programátor usbasp)
takže přečíst lze takto (pokud používáš programátor usbasp)
Kód: Vybrat vše
sudo avrdude -p m1284 -c usbasp
Tak si můžeš nastavit vnitřní oscilátor na 4 MHz:pojistkama a i dle kalkulatoru moc hejbat nechci neboť
Kód: Vybrat vše
ldi r16, (1<<CLKPCE)
sts CLKPR, r16
ldi r16, (1<<CLKPS0)
sts CLKPR, r16
V jakém IDE to kompiluješ? Pro začátek se vyhni asembleru! Nainstaluj si AVRstudio, WinAVR a programuj v C. Vývoj aplikace se zjednoduší na editování .C->kompilace->naprogramování chipu.
Pozn.1. avr-gcc umí vygenerovat asm. pokud chceš (přepínač -S)
Pozn.2. v asm. se myslím na začátku programu nastavuje nějaká hodnota adresy zásobníku (SPL, SPH).
http://www.mikrocontroller.net/articles ... ial:_Stack
Pozn.1. avr-gcc umí vygenerovat asm. pokud chceš (přepínač -S)
Pozn.2. v asm. se myslím na začátku programu nastavuje nějaká hodnota adresy zásobníku (SPL, SPH).
http://www.mikrocontroller.net/articles ... ial:_Stack
- ross4435897
- Příspěvky: 426
- Registrován: 10 lis 2009, 01:00
- Bydliště: Brno
Pro Megu644 by bylo mozne pro zacatek zkusit treba i Arduiini IDE vcetne knihoven, sam jsem s tim zacinal. Mel jsem kit EVB4.3 (delal se i s 644), Arduiini IDE a Sanuino core. Sanguino byla kdysi vyvojova platforma pro Megu644, a nejaky dobrak to domestikoval pro Arduini verejnost. Potvrzuju ze funguje 100%.
- Přílohy
-
- evb4.3_1[1].jpg
- (193.06 KiB) Staženo 49 x
Děkuji děkuji za rady od všech ....
jednalo se o kombinovanou závadu
1. chyba v programové smyčce
RCALL T1
T21: INC R30
T21: měla bejt hned před RCALL T1...proto mě mátla stále stejná odezva na parametr registru R30 ....procesor pracoval v default
režimu =fuse pro interni oscilator ......
Po nastaveni fuse na FH´= 99H a FL´=FDH pracuje procesor s krystalem 4MHz ...
..............................................
Pro krystal 20MHz fachá 5x rychleji pro stejnou fusi pojistku ...
.............................................
Předpokládám že po odladění programu s krystalem nebo s internim oscilatorem
je nejspolehlivejsi uzamceni programu ulomenim nožiček pinů PB7 PB6 a PB5 -:)
...............................................
Jsem velmi rád že jsem se prokousal assemblerem AVR jedinou závadu této rodiny vidím
v komplikovanem uzamykání programu !!!!
AT89Sxx to má snadné ...po vymazání programu se vše obnoví ...u AVR špatné uzamčení vede
k trvalému znemožnění přeprogramování nebo i k nefunkčnosti obvodu .
IDE simulátor co používám je na
http://www.oshonsoft.com/avr.html
ne jen pro avr ale celou řadu procesorů
nic lepšiho neznám včetně avrdude....
................................................................
Arduino ani jazyky typu C nevedu jen assembler ....
nejvetsi problem nevidim v typu jazyka či procesoru ale v oblasti
kterou ještě procesory zatím nezvládly pojmout do svého repertoáru
===.....tam je treby orat a sázet .
....
Přeji hodně nápadů a aplikací v oboru elktroniky
jednalo se o kombinovanou závadu
1. chyba v programové smyčce
RCALL T1
T21: INC R30
T21: měla bejt hned před RCALL T1...proto mě mátla stále stejná odezva na parametr registru R30 ....procesor pracoval v default
režimu =fuse pro interni oscilator ......
Po nastaveni fuse na FH´= 99H a FL´=FDH pracuje procesor s krystalem 4MHz ...
..............................................
Pro krystal 20MHz fachá 5x rychleji pro stejnou fusi pojistku ...
.............................................
Předpokládám že po odladění programu s krystalem nebo s internim oscilatorem
je nejspolehlivejsi uzamceni programu ulomenim nožiček pinů PB7 PB6 a PB5 -:)
...............................................
Jsem velmi rád že jsem se prokousal assemblerem AVR jedinou závadu této rodiny vidím
v komplikovanem uzamykání programu !!!!
AT89Sxx to má snadné ...po vymazání programu se vše obnoví ...u AVR špatné uzamčení vede
k trvalému znemožnění přeprogramování nebo i k nefunkčnosti obvodu .
IDE simulátor co používám je na
http://www.oshonsoft.com/avr.html
ne jen pro avr ale celou řadu procesorů
nic lepšiho neznám včetně avrdude....
................................................................
Arduino ani jazyky typu C nevedu jen assembler ....
nejvetsi problem nevidim v typu jazyka či procesoru ale v oblasti
kterou ještě procesory zatím nezvládly pojmout do svého repertoáru
===.....tam je treby orat a sázet .
....
Přeji hodně nápadů a aplikací v oboru elktroniky
Já bych se C pro AVR nebál. Na střední jsme dělali s 89C5x v asm, zkoušeli i C, ale tam to na nic většího nebylo kvůli nedostatku paměti a registrů, a se spolužáky jsme se utvrzovali v tom, že C není pro mikráče. Ale jakmile se mi dostal pod ruku AVR a při prvních pokusech v ASM jsem zjistil jak je vše oproti 8051 složitější, rozhodl jsem se vyzkoušet C a najednou bylo vše jednodušší, rychleji hotové, takže jsem u C zůstal. Navíc je AVR pro C přizpůsobený počtem registrů i velikostí paměti, megy začínají na 1KB (oproti max 256B u 89C52) a kompilátor avr-gcc je hodně dobrý a zdarma, neb vychází z gcc a prý ten projekt podporuje samotný ATMEL.
"Pro krystal 20MHz fachá 5x rychleji pro stejnou fusi pojistku ..."
Ty pojistky se nenastavují na konkrétní kmitočet, ale na rozsah.
Např. 0.4 - 0.9 MHz
0.9 - 3.0 MHz
3.0 - 8.0 MHz
> 8MHz
Jazyk C, pro mě teda hrůza. Samé "include" a těch závorek.
Ty středníky tam fakt musí být ? Komentáře, dvě lomítka, proč ?
Ty pojistky se nenastavují na konkrétní kmitočet, ale na rozsah.
Např. 0.4 - 0.9 MHz
0.9 - 3.0 MHz
3.0 - 8.0 MHz
> 8MHz
Jazyk C, pro mě teda hrůza. Samé "include" a těch závorek.
Ty středníky tam fakt musí být ? Komentáře, dvě lomítka, proč ?