atmega88 portb probleme lastseite ausgänge

Gast #1369870
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.