ATMEGA 644 ukončeno
Moderátor: Moderátoři
ATMEGA 644 ukončeno
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
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?
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 ...
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/
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
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ý
takže přečíst lze takto (pokud používáš programátor usbasp)
Kód: Vybrat vše
sudo avrdude -p m1284 -c usbasp
pojistkama a i dle kalkulatoru moc hejbat nechci neboť
Tak si můžeš nastavit vnitřní oscilátor na 4 MHz:
Kód: Vybrat vše
ldi r16, (1<<CLKPCE)
sts CLKPR, r16
ldi r16, (1<<CLKPS0)
sts CLKPR, r16
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/AVR-Tutorial:_Stack
- ross4435897
- Příspěvky: 426
- Registrován: 10 lis 2009, 00:00
- Bydliště: Brno
- Přílohy
-
evb4.3_1[1].jpg- (193.06 KiB) Staženo 91 x
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
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č ?