Hallo zusammen, Ich habe schon einige Schaltungen mit AVRs erfolgreich zum Laufen gebracht, aber was mir im Moment passiert, kapiere ich nicht ansatzweise. Also ich habe einen ATMega16 und möchte den PORTC als Datenport für ein Display benutzen. Nachdem es mit Beispielcode nicht klappte habe ich mal von vorne angefangen und die Pinne einzeln durchgemessen und überprüft. Ich habe dann das Display abgekoppelt und den Port auf High, bzw Low gesetzt. Das klappte nicht wie erwartet. Also gut, ich konnte nicht aussschließen, dass ich beim Port was zerstört hatte. Also 2 neue Atmegas besorgt. Zweiter IC, gleiches Spiel. Beim dritten habe ich dann nur die Stromversorgungspinne, die ich natürlich auch nachgemessen habe, in der Fassung gelassen. Alle anderen Beine sind frei. Am PORTC gibt es aber immer das gleiche Spiel. Ist der Port auf low gesetzt, oder ist der ATmega gänzlich unprogrammiert, so kann man an den Pinnen 00101100 messen, Setzt man den kompletten Port auf high ergibt sich 11101111. An einem anderen Port kann ich eine LED blinken lassen, der Prozessor läuft also. Wie gesagt, die Pinne von PORTC haben keine Verbindung zu irgendeiner Schaltung. Auch der Code könnte einfacher ja nicht sein und funktioniert im Simulator. Mit einem C-Compiler habe ich es auch probiert, immer das gleiche Ergebnis. .include "m16def.inc" .def temp1 = r16 .org 0x000 rjmp main .org 0x00E main: LDI temp1, HIGH(RAMEND) ; Oberes Byte OUT SPH,temp1 ; an Stapelzeiger LDI temp1, LOW(RAMEND) ; Unteres Byte OUT SPL,temp1 ; an Stapelzeiger ldi temp1, 0b11111111 out DDRC, temp1 ldi temp1, 0b11111111 out PORTC, temp1 loop: rjmp loop Nun bin ich sehr ratlos, sowas ist mir noch nicht passiert. Hat einer eine Idee, was das sein könnte? Die ATMegas sind auch von unterschiedlichen Lieferanten, ein Hardware-Fehler scheint also ausgeschlossen. In der Hoffnung auf neue Ideen, schöne Grüße Andreas
Hi! JTAG Fuse noch aktiv ? Ich glaub da stolpert jeder drüber g http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf Seite 59 Gruss, Simon
JTAG kann man auch ohne Fusebit-Veränderung deaktivieren. In der Reset-Routine (nach Stackpointer-Init): in wl,mcucsr ;JTAG- sbr wl,1<<jtd ;Interface out mcucsr,wl ;deaktivieren out mcucsr,wl ;(PortC aktivieren) Und schon sind die Portpins verfügbar... ...
Vielen Dank!!! Ist zwar schon peinlich, aber das hat mich eine ganze Woche Suchen gekostet. Jetzt funktioniert es ohne Probleme! An JTAG habe ich überhaupt nicht gadacht, hatte vorher nur AVRs, die das nicht unterstützen. Ich dachte die alternativen Portfunktionen gehen nur wenn man sie explizit einschaltet, und nicht dass man sie ausschalten muss. Auch mit der Forensuche hatte ich es probiert, aber wenn man nicht weiß wonach man suchen muss ;-) Auf jeden Fall wieder was entscheidendes gelernt und nochmal herzlichen Dank! Gruß Andreas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.