Hallo, an den Portpins meines 4433 kann ich keine Spannung feststellen, nicht gegen 5V und auch nicht gegen Masse. Habe alle Register durchprobiert, immer das Gleiche. Ist da was gestorben? Gruß, Gerrit
Hallo, versuch mal folgendes: Die DDR-Register (z.B. DDRA für Port A) auf 1 setzten. Damit wird der Pin als Ausgang konfiguriert. Jetzt kannst du den Pin mit Setzten oder löschen, indem du das PORT-Register setzt. (z.B. PORTA für Port A) Gruß, Florian
Hallo Florian, danke für deine Antwort. In der Simulation werden die Pins gesetzt, nur direkt am µC kann ich nichts messen. Das "Programm" ist der Vierzeiler aus dem Tutorial, das DDR wird auf 0xFF gesetzt. Kann das auch mit irgendwelchen Fuse- oder Lockbits zusammenhängen? Gruß, Gerrit
Ich glaub nicht. Meines Wissens hat der 4433 keine Fuse-Bits, welche sich auf die Ports auswirken. Kannst du das Programm mal hier posten? Gruß, Florian
Hier ist es: ****************************************************************** .include "4433def.inc" ;Definitionsdatei einbinden, ggf. durch ;2333def.inc ersetzen ldi r16, 0xFF ;0xFF ins Arbeitsregister r16 laden out DDRB, r16 ;Inhalt von r16 ins IO-Register DDRB ldi r16, 0b11111100 ;0b11111100 in r16 laden out PORTB, r16 ;r16 ins IO-Register PORTB ausgeben ende: rjmp ende ;Sprung zur Marke "ende" Endlosschleife *********************************************************************** Ich weiß allerdings nicht, ob das nun alles so richtig ist. Habe schonmal ein paar Tage mit dem AVR verbracht, ebenso erfolglos. Beschreiben und auslesen kann ich ihn - was mich nur verwundert ist, das die Pins keinen definierten Pegel haben. Kann doch irgendwie nicht sein, dass ich gegen 5V und auch gegen Masse keinerlei Potential messen kann, egeal, welchen Port ich verwende. Die Spannungsversorgung gemäß AVR-Datenblatt stimmt. Gruß, Gerrit
Hallo, Vielleicht ist es das. Der Controller geht auf die erste Adresse nämlich 0x0000. Wenn dort nichts ist, dann macht er auch nichts. Du musst ihm sagen, dass er in Dein Hauptprogramm springen muss. Das Simulationsprogramm allerdings geht einfach auf den ersten Befehl, macht also alles ordentlich -- weiss auch nicht? .CSEG .ORG 0x00 rjmp Init Init: ;Stackpointer setzen ser temp out DDRB,temp ;usw
Hmmm....ich habe gelesen, das .cseg und .org gar nicht notwendig sind, im Tutorial steht auch nichts davon. Werde ich aber gleich probieren. Danke erstmal, Gerrit
Also ich habs gerade mal ausprobiert. Bei mir funktionierts wunderbar. Der Controller setzt die Pins B0 u. B1 auf Low und B2-B5 auf High. @Jens-Erwin: Das mit dem sprung ins Hauptprogramm kann nicht der Fehler sein, denn das Programm wird sowieso an die erste Adresse im Speicher geschrieben. Also dahin, wo du deinen Sprung setzt. Was evt. noch ein Fehler sein könnte währe, wenn irgendein Interrupt ausgelöst werden würde. Aber das kann eigentlich nicht vorkommen, da ja alle interrupts bei einem Reset deaktivert werden. Gruß, Florian
Hallo Florian, danke für den Test! Dann wird es wird wohl ein Defekt im AVR sein. Nur...wenn ich gegen Masse und 5V jeweils 0V messe, müsste das ja schon ein Kurzschluss sein!? Gruß, Gerrit
"Nur...wenn ich gegen Masse und 5V jeweils 0V messe, müsste das ja schon ein Kurzschluss sein!?" Halt mal einen Anschluss vom Messgerät in die Luft, und messe dann nach Masse und nach +5V. Was siehst du? IC-Pins können auch den Zustand "hochohmig" haben, also keine Spannung führen. Beim AVR machen das alle Portpins nach einem Reset (Eingang ohne Pull-up).
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.