Forum: Mikrocontroller und Digitale Elektronik Portpins ohne Potential?


von gerrit (Gast)


Lesenswert?

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

von Florian Pfanner (Gast)


Lesenswert?

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

von gerrit (Gast)


Lesenswert?

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

von Florian Pfanner (Gast)


Lesenswert?

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

von gerrit (Gast)


Lesenswert?

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

von Jens-Erwin (Gast)


Lesenswert?

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

von gerrit (Gast)


Lesenswert?

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

von Florian Pfanner (Gast)


Lesenswert?

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

von gerrit (Gast)


Lesenswert?

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

von Fritz Ganter (Gast)


Lesenswert?

"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
Noch kein Account? Hier anmelden.