ATMEGA 644 ukončeno

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

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
franta22
Příspěvky: 110
Registrován: 26 lis 2013, 01:00

ATMEGA 644 ukončeno

#1 Příspěvek od franta22 »

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
Naposledy upravil(a) franta22 dne 10 led 2015, 04:56, celkem upraveno 1 x.

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#2 Příspěvek od mtajovsky »

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?

Uživatelský avatar
franta22
Příspěvky: 110
Registrován: 26 lis 2013, 01:00

#3 Příspěvek od franta22 »

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 ...

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#4 Příspěvek od Zmije »

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/

Uživatelský avatar
franta22
Příspěvky: 110
Registrován: 26 lis 2013, 01:00

#5 Příspěvek od franta22 »

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

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#6 Příspěvek od nekmil »

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ý
Naposledy upravil(a) nekmil dne 05 led 2015, 19:49, celkem upraveno 3 x.

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

#7 Příspěvek od jiriS »

Já měl problém s mega64, takže nevím, jak moc Ti to pomůže.
1. signály pro ISP byly na jiných pinech, než podle datasheetu.
2. byl zapnutý ve fuse pojistkách JTAG
3. byl zapnutý režim ATmega103 Compatibility Mode -také fuse

Jirka

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#8 Příspěvek od Zmije »

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)

Kód: Vybrat vše

sudo avrdude -p m1284 -c usbasp

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

#9 Příspěvek od AB1 »

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

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#10 Příspěvek od frpr666 »

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

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

#11 Příspěvek od AB1 »

v asm. se myslím na začátku programu nastavuje nějaká hodnota adresy zásobníku (SPL, SPH).
Mega644 nastavuje stack pointer automaticky na konec RAM.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#12 Příspěvek od ross4435897 »

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

Uživatelský avatar
franta22
Příspěvky: 110
Registrován: 26 lis 2013, 01:00

#13 Příspěvek od franta22 »

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 :D :idea: :arrow: :idea: :D

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#14 Příspěvek od Zmije »

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.

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#15 Příspěvek od nekmil »

"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č ?
:D

Odpovědět

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