Forum: Mikrocontroller und Digitale Elektronik Mega644P resettet beim Zugriff auf PORTA


von Marius W. (mw1987)


Angehängte Dateien:

Lesenswert?

Hallo,

habe mir als kleines Projekt mal eine kleine serielle Konsole aufm 
ATMega644P programmiert, die auch soweit ganz ordentlich funktioniert.

Als Test habe ich dann mal eine Funktion geschrieben, welche über die 
Konsole einen Port schaltet.
-led init: Port auf Ausgang setzen
-led on: LEDs on
-led off: LEDs off
-led toggle: LEDs toggle

Alles funktioniert auch klasse, aber wenn ich PORTA nutze, dann stürzt 
der Controller immer beim Kommando "PORTA = 0x00" bzw. "PORTA ^= 0xFF" 
ab. Und zwar reproduzierbar. Jedoch scheint das Kommando "PORTA = 0xFF" 
ohne Probleme zu funktionieren. Habe das ganze mit dem JTAGICE mkII bis 
zu dem Kommando zurückverfolgen können.

Nehme ich statt PORTA nun einfach PORTB oder PORTC, so funktioniert 
alles einwandfrei.

Nun meine Frage: Hat jemand dasselbe Problem schon einmal gehabt oder 
ist einfach mein Controller kaputt?

Das Programm hab ich einfach mal als rar-Datei angehängt. Vielleicht 
hilft es ja.

MfG
Marius

von spess53 (Gast)


Lesenswert?

Hi

AVCC ordentlich angeschlossen?

MfG Spess

von Marius W. (mw1987)


Lesenswert?

Müsste eigentlich passen, wenn Atmel auf dem STK600 nicht groben Unfug 
getrieben hat.

Ich mess das aber gleich nochmal nach.

MfG
Marius

von ahem (Gast)


Lesenswert?

Wenn ein Pin von PortA einen Schluss nach Vcc hat und somit die Speisung 
kurzschliesst...

von Marius W. (mw1987)


Lesenswert?

Soo,

habe jetzt zu Beginn meines Programms mal ein paar LED-Tests eingebaut.

Diese Tests sind soweit in Ordnung gewesen. Ich bin jetzt echt verwirrt. 
Überall funktioniert es, nur in meinem gar nicht so komplexen 
led-Programm nicht.
Ich habe einfach keine Erklärung für den Reset.
Mit dem JTAGICE mkII kann ich das Programm so lange verfolgen, bis der 
Befehl st Z, r0 aufgerufen wird. In Z steht passend auch die Adresse von 
PORTA. Danach lande ich in einem undefinierten Speicherbereich. Von da 
aus läuft der Controller wohl dann durch bis er wieder 0x0000 erreicht.

MfG
Marius

von spess53 (Gast)


Lesenswert?

Hi

>In Z steht passend auch die Adresse von PORTA. Danach lande ich in einem 
>undefinierten Speicherbereich. Von da...

Welche Adresse? Die IO-Adresse oder die Adresse von PortA im 
Speicherbereich?

MfG Spess

von Marius W. (mw1987)


Lesenswert?

Adresse war 0x02, wenn ich mich recht entsinne. Das müsste ja auch 
soweit passen. Im Simulator vom AVR Studio funktioniert das Programm 
ebenfalls einwandfrei. Deshalb schließe ich eigentlich einen 
Software-Fehler aus.

MfG
Marius

EDIT: Mittlerweile hab ich das Programm auch auf dem Mega2560, der dem 
STK600 beilag, verifiziert. Ohne Probleme.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.