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