Hallo Leute
Habe da wieder ein Problem..![]()
Möchte meinen AVR mit dem PCF8574A (I2C Expander) erweitern und dazu den Interruptausgang (INT)vom Baustein nutzen.
Der INT Pin zieht ja gegen Masse wenn am PCF8574er ein Pin auf Eingang geht.
Dazu habe ich vom AVR den INT0 Eingang verwendet, der mir bei fallender Flanke dann den PCF8574 auslesen soll...
Leider funktioniert das Ganze nicht so richtig.
Irgendwie spinnt der AVR dann und bringt nur mehr wirres Zeug oder bleibt hängen oder der Int0 reagiert nicht mehr ...
Das Ganze läuft normalerweise auf einem Mega32.
Zum testen und damit ich einen Minimalcode zum zeigen zusammenbekomme, habe ich das nochmal mit dem Mega8 aufgebaut.
Hier der Code:
Irgendwie passiert beim Mega8 das gleiche.Code:'============ PCF 8574 versuch_2 mit INT0================================= $regfile = "m8def.dat" $crystal = 10000000 $hwstack = 250 $swstack = 250 $framesize = 250 '##################### Config für LCD #################################################### Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , Rs = Portb.4 , E = Portb.5 Config Lcdbus = 4 Config Lcdmode = Port Cursor On Cls '############################ Config I2C Bus ################################### Config Scl = Portd.1 ' I2C-Port festlegen Config Sda = Portd.0 ' I2C-Port festlegen Config Portd.2 = Input 'Int0 Portd.2 = 1 'Pull up '############################ Config INT0 ####################################### Config Int0 = Falling On Int0 Int0_auswerten Enable Int0 Dim Tasten As Byte Dim Taste0 As Byte Dim Taste1 As Byte Dim Taste2 As Byte Dim Zaehler As Word Enable Interrupts '############################################################################### Do 'Tasten_lesen: I2cstart I2cwbyte &B01110001 'lese Adresse von PCF8574A I2crbyte Tasten , Nack I2cstop Locate 2 , 2 Lcd Tasten Loop End '################# Tasten_lesen Anfang (INT0) ################################## Int0_auswerten: Waitms 10 'Tasten_lesen: I2cstart I2cwbyte &B01110001 'lese Adresse von PCF8574A Baustein B I2crbyte Tasten , Nack I2cstop Taste0 = Tasten.0 Taste1 = Tasten.1 Taste2 = Tasten.2 Locate 1 , 1 Lcd Tasten Locate 1 , 7 Lcd Taste0 If Taste1 = 0 Then If Taste0 = 0 Then Zaehler = Zaehler + 1 Locate 1 , 30 Lcd " Arbeite!!" Wait 1 Locate 1 , 30 Lcd " " Wait 1 Locate 2 , 25 Lcd "Zaehler= " ; Zaehler ; " " End If End If Return
Nach ein paar mal aktivieren von einem Pin vom PCF8574er , habe ich am LCD nur mehr wirre zeichen und dann sehe ich gar nix mehr...![]()
Hat jemand schon mal diesen Ausgang vom PCF8574er ausgewertet ?
Könnt Ihr vielleicht einen Fehler in meinem Code sehen ?
Ideen?
Bin für jeden Tipp dankbar
Ps.:
Der I2C Bus ist mit 10K gegen +5V und am INT hängen 5k gegen +5V
l.G. Roberto







Zitieren

Lesezeichen