Odpálené všechny porty na ATMEGA32-jak poznám odpálený port?

Zdravím, prosím, potřeboval bych pomoct s “diagnostikou” , jak poznám odpálený port na ATMEGA32 ? Koupil jsem nový kus a nejde mi nastavit žádný z výstupů na jendičku, JTAG jsem vypnul.
Dá se to nějak změřit ? Nebo jsem zapoměl něco zapnout ?
Kód , kterým se o to snažím :

ldi R16,255
out DDRA,R16
out DDRB,R16
out DDRC,R16

out PORTA,R16
out PORTB,R16
out PORTC,R16

Před tím je ještě tabulka vektorů přerušení opsaná z datasheetu, výstup zkouším LED diodou přes omezovací odpor 500ohm a voltmetrem . Na všech výstupech je napětí kolem 0,3V

:arrow_right: administrator: přejmenováno z "Odpálené všchny porty ?"

Zničené všechny piny všech portů jsou vcelku nepravděpodobné :wink:
Komunikuje ti procesor s programátorem? Neměnil jsi fuses?

Toto dle simulátoru funguje:

[code].include “m32def.inc”
.def temp = r16

.cseg
rjmp RESET ;reset handle

RESET:
ldi temp,low(RAMEND)
out SPL,temp
ldi temp,high(RAMEND)
out SPH,temp ;init Stack

main:
ldi temp,255
out DDRA,temp
out DDRB,temp
out DDRC,temp

out PORTA,temp 
out PORTB,temp 
out PORTC,temp

konec:
rjmp konec[/code]

myslim ze to skoncilo na tom ze to nekmita interne … cize to nejde vobec…
I ked nemaly by byt piny na pullup tj nejake mekke napatie.

nn, pull-upy si musíš zapnout když je chceš použít, defaultně zapnuty nejsou - mohly by za určitých podmínek zvyšovat spotřebu.
Taky myslím, že mu nejdou hodiny nebo má na začátku v programu něco, co zablrání vykonání zde uvedeného.

S programátorem se to baví normálně , Fuses jsem měnil, pouze jsem vypínal JTAG(zabral si jeden port) , co naprogramuju, to z čipu zase přečtu , na ATMEGA 8 mi to fungovalo , než jsem ho přepóloval , Pak už nebyl k sehnání , tak jsem si koupil ATMEGA 32 , studuju a učím se , ještě mě napadá , jestli nemusí být spojeno GND na pinu 11 s GND na pinu 31 …

Listing sem dám, uvidíme

Celý listing :

.include “./m32def.inc”
.ORG 0x0000
.cseg
rjmp START

START:

ldi R16,255
out DDRA,R16
out DDRB,R16
out DDRC,R16

out PORTA,R16
out PORTB,R16
out PORTC,R16 

Na tom neni skoro co zkazit , tak nevím

Když odpojíš programátor taky nic?
Jinak už mě nic nenapadá.

Procesor vyndavám z programátoru a dávám ho do experimentální desky .

FUSES jsou :
lfuse 0xe4
hfuse 0xd9

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Jako zdroj hodin máš “External Low-frequency Crystal”. Vrať tam pro začátek interní 1MHz RC oscilátor (defaultní nastavení Fuse Low Byte).

Cpal jsem tam hodnotu z kalkulátoru … měl to být 8 Mhz , dlouhý náběh , vyplý JTAG

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

CKSEL3:0=9=1001 => “External Low-frequency Crystal”
Kdyby byla hodnota ve skutečnosti negována, bylo by to 0110 => “External RC 0.9-3 MHz”.
Pro interní RC 8MHz => CKSEL3:0 = 0100.

Díky, byly to FUSES , holt asi webová kalkulačka asi kalkulačkuje špatně počítá :frowning:

Tak válčím s fuses zatím se zdá, že jsem nic moc nerozbil, jen mi procesor přestal hlásit signaturu :slight_smile: Ale naprogramovat jde a dokonce dělá, co mu naprogramuju, ale ne to, co chci … Děkuju za odhalení problému s porty

S nastavováním fuses bych na nějaký udělátka radši moc nespoléhal.
Psal jsi něco o vyndávání z patice, takže máš asi nějaký paralelní výtvor nebo isp s vlastním zrojem hodin. Když napíšeš nesmysl do programu, obvykle se inc neděje. Pokud bys však programoval ISP/JTAG, nesprávným počochtáním fuse a lock bitů si můžeš zařídit příjemnou výměnu procesoru :wink:.
V datasheetu každého avrka je sekce “Memory Programming”, kde jsou tyto věci popsané. Když už nějaké to udělátko používáš, radši si tam zkontroluj, co ti to vytvořilo za nastavení než to tam naleješ :wink:

Používám STK 200, s oddělením registrem . připojeno přes lpt . JInak ty fuses konzultuju s datasheetem av nějak tomu nerozumím , pokud to vezmu podle datasheetu , tak výběr oscilátoru je ve FUSE LOW , to mi pr 8 Mhz vychází 1110 0100, tedy E4 , nebo jsem si popletl MSB a LSB ?
Podle té samé logiky by E3 mělo být interní 4 MHz , to funguje , ale na E4 to prostě nekmitá.

Z patice procesor přendavám , protože jsem tu objevil 2ks ZIF patici, tak mám jednu v programátoru a druhou v pokusné desce, nějak se mi nelíbila představa ISP vzhledem k citlivosti LPT portu :slight_smile:

Rozumíš tomu správně. Jesli ti to na 8MHz nejede, tak je tam buď jiná závada nebo horší kousek.
Ještě by měla být CKOPT=1, piny XTAL nezapojeny.
Blokovací kondík na napájení předpokládám máš.
Jaký je to přesně typ mcu? Má správné napájení?

CKOPT je 1
Procesor je ATMEGA32-16PU , podle datasheetu by měl 8 MHz umět možná je nějak poškozen, protože nechtěl nastavovat piny ještě před změnou fuses , něco bylo na LOG1, ale jak jsem vyzkoumal z dokumentace, dělal to zapnutý JTAG :slight_smile: Do lock bitů se raději nepouštím, vlastně tam ani není nic, co bych momentálně potřeboval nastavit.

Záhadou zůstává ta smazaná signatura , do té by teoreticky nemělo jít sahat

Ještě k napájení. Napájím to přes stabilizátor 78L05 , na vstupu filtrace 470uF + blokovací kondenzátory u stabilizátoru , ješte zkusím připojit kondík 100nF přímo k napájení procesoru.
Na procesoru je 4.95V :slight_smile:

Smazaná signatura vyřešena, nemělo by to jít , ale podle Atmelu se může stát, že se smaže tovární nastavení čipu.

Stane se to při pulsujícím napájení (teda jestli jsem to dobře pochopil).

Takže všem vřele nedoporučuji paralelní programovací výtvory napájené z LPT portu, tady napájení nebývá stabilní.

Po dlouhám googlení jsem našel jediný odkaz na tento problém:tady