großes Prob mit PCF8574P

Gast #135231
Lesenswert?
• ▲
▼
Hallo Leuz!!

Ich habe volgendes problem, an dem ich jetzt schon fast 15h rumräzel
ich schilder es mal, villeicht kann mir einer von euch einen tip
geben.

Ich habe an meinem at90s8515 via i2c zwei mal nen pcf8574P mit
natürlich 2 verschiedenen adressen angeschlossen. an dem einen hängen 8
taster und an dem anderen 8 led´s. ich lese die tasterwerte von dem
einen pcf in den µC. dort liegen die daten auch alle korrekt,  hab ich
nachgemessen. und dann gebe ich die daten an den anderen pcf, den mit
den led´s, aus. aber da kommt das problem das funktioniert bei allen
tastern außer beim taster7. wenn ich den taster 7 drüche, dann werden
alle leds dunkler ?!?. aber wenn ich die led vom µc unabhängig von den
tastern am andern pcf steuern lasse funktioniert alles tadellos.

ich hoffe mir kann jemand helfen.

THX

mein CODE:

.include "8515def.inc"




.equ scl    = 6
.equ sda    = 7
.equ  i2c_port  = PORTC
.equ  i2c_pin   = PINC
.equ  i2c_ddr   = DDRC
.def temp = r16

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp





ldi r16, 0xff
out DDRA, r16
out DDRC, r16

ldi r16, 0x00
out PORTA, r16

ldi temp, 25
out UBRR, temp
sbi UCR,TXEN






read:

rcall i2c_start
ldi r16, 0b01001101
rcall putbyte

rcall getbyte
mov r10, r16

out PORTA, r16

rcall i2c_stop


rcall i2c_start

ldi r16, 0b01000000
rcall putbyte

mov r16, r10

rcall putbyte

rcall i2c_stop

rjmp read








serout:


; =============================
;   Warteschleifen-Generator
;     4000 Zyklen:
; -----------------------------
; warte 3999 Zyklen:
          ldi  R20, $1F
WGLOOP02:  ldi  R21, $2A
WGLOOP12:  dec  R21
          brne WGLOOP12
          dec  R20
          brne WGLOOP02
; -----------------------------
; warte 1 Zyklus:
          nop
; =============================




ret

delay:
; =============================
;   Warteschleifen-Generator
;     20000000 Zyklen:
; -----------------------------
; warte 19999992 Zyklen:
          ldi  R20, $BF
WGLOOP0:  ldi  R21, $A7
WGLOOP1:  ldi  R22, $D0
WGLOOP2:  dec  R22
          brne WGLOOP2
          dec  R21
          brne WGLOOP1
          dec  R20
          brne WGLOOP0
; -----------------------------
; warte 6 Zyklen:
          ldi  R20, $02
WGLOOP3:  dec  R20
          brne WGLOOP3
; -----------------------------
; warte 2 Zyklen:
          nop
          nop
; =============================
ret



.include "i2c_routinen.txt"
Gast #135233
Lesenswert?
• ▲
▼
Nur mal so ne Vermutung:
Die 8574 können eigentlich nur einen Low-Pegel erkennen, d.h. man muß
den 8574 mit den Tastern mit $FF vordefinieren und dann die Taster
gegen Masse schalten lassen, oder mit entsprechenden Pull-Ups
arbeiten.
Dementsprechend ist es auch im Betrieb als Ausgang: Die LEDs müssen so
angeschlossen werden, daß sie bei einem GND am 8574 leuchten.
Einen belastbaren High-Pegel liefert der 8574 nur ganz kurz nach einem
Schreibvorgang.

Gruß
Thomas
Gast #135234
Lesenswert?
• ▲
▼
wenn ich alle led´s abklemme, d.h. die ausgätge vom 8574 stehen alleine
und ich messe die spannungen, dann geht die spannung, wenn ich den
entsprechenden taster drücke auch nich auf 0v aber bei allen anderen
tastern gehz! nur nich bei dem an p7 und wie gesagt die daten liegen
alle richtig im µc -> der fehler kann nicht am einlesen entstehen!

an was kanns noch liegen?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.