Forum: Mikrocontroller und Digitale Elektronik atmega88 portb probleme lastseite ausgänge


von john (Gast)


Lesenswert?

Hallo,
vielleicht kann mir jemand weiterhelfen?

Bei meinem Atmega88 verhält sich PORTB anders als PORTC.

Mit dem PORTC steuer ich die Schaltung einer 4-stelligen 
7-Segment-LED-Anzeige an. Die Schaltung mit gemeinsamer Anode wie hier 
auf den Seiten im Tutoral abgebildetet ist.
Sobald ich die Segmente auf dem PORTB umlege und dann PORTB wie PORTC 
ansteuere, passiert nichts mehr.
Alle PORTs habe ich als Ausgänge und gleich initialisiert.

Trotz aller Bemühungen im Atmega88 Handbuch etwas über die Unterschiede 
oder ähnliches zu finden, habe ich bisher keine Lösung für mein Problem 
gefunden.

Zu aller letzt habe ich auch schon den Controller gegen neue 
ausgetauscht (unbenutzte) und bin zur simplen Programmierung mittel cbi 
und sbi der einzelnen PORT-Ausgänge übergegangen. Alle nicht benötigten 
Programmteile abgeschaltet und nur doch statische Ansteuerungen immer 
wieder in verschiedenen Varianten (Bit-Muster) in den Controller 
eingespielt.

Mit PORTB bekomme ich kein vernünftiges LOW-Signal hin, High-Pegel sind 
in Ordnung nur die Low-Pegel liegen irgendwo dazwischen. 
Programmieradapter ist dann auch nicht angeschlossen. Beim Programmieren 
sind aktivietäten auf der Anzeige zu sehen, was darauf hinweist, das 
etwas mit meinen Signalen aus dem Controller im Normalbetrieb nicht 
stimmt.


Gibt es Unterschiede in der Hard- oder Software bei als Ausgängen 
geschaltete PORTB und PORTC?


HIERMIT FUNKTIONIERT DIE ANZEIGE:

ldi    tmp,  0b11111111   ; PortB (0-Input, 1-Output)
out    DDRB,  tmp
out    DDRC,  tmp
out    DDRD,  tmp

sbi    PORTD,  4  ; Anzeige 1 anwählen
sbi    PORTD,  5  ; Anzeige 2 anwählen
cbi    PORTD,  6  ; Anzeige 3 anwählen
cbi    PORTD,  7  ; Anzeige 4 anwählen

cbi    PORTC,  0  ; Segment a anwählen
sbi    PORTC,  1  ; Segment b anwählen
cbi    PORTC,  2  ; Segment c anwählen
sbi    PORTC,  3  ; Segment d anwählen
cbi    PORTC,  4  ; Segment e anwählen
sbi    PORTC,  5  ; Segment f anwählen
cbi    PORTC,  6  ; Segment g anwählen
sbi    PORTC,  7  ; Segment DP anwählen





HIERMIT FUNKTIONIERT DIE ANZEIGE NICHT:

ldi    tmp,  0b11111111   ; PortB (0-Input, 1-Output)
out    DDRB,  tmp
out    DDRC,  tmp
out    DDRD,  tmp

sbi    PORTD,  4  ; Anzeige 1 anwählen
sbi    PORTD,  5  ; Anzeige 2 anwählen
cbi    PORTD,  6  ; Anzeige 3 anwählen
cbi    PORTD,  7  ; Anzeige 4 anwählen

cbi    PORTB,  0  ; Segment a anwählen
sbi    PORTB,  1  ; Segment b anwählen
cbi    PORTB,  2  ; Segment c anwählen
sbi    PORTB,  3  ; Segment d anwählen
cbi    PORTB,  4  ; Segment e anwählen
sbi    PORTB,  5  ; Segment f anwählen
cbi    PORTB,  6  ; Segment g anwählen
sbi    PORTB,  7  ; Segment DP anwählen


Irgendwie seltsam!

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.