PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : INT am PCF8574 löschen (GNU-C)



papuadive
27.03.2009, 19:48
vielleicht kann mir jemand helfen....
habe keine Ahnung wie ich den INT am PCF 8574 zurücksetzen kannst (im Lesemodus) damit ich auf eine neuerliche Änderung am PCF reagieren kann. Pin 12 des PCF ist mit den INT1 des µP verbunden, den ich über einen Pullup nach high gezogen habe.
I2C zum Schreiben funktioniert bereits, nur das Lesen habe ich noch nicht im Griff, bzw. Löschen des INT am PCF8574!
Danke Papua

PS: Bin ich da überhaupt richtig am Weg?????

#define READ_ADRESSE_1 0x41 // Lese - Adresse
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

// wartet ms Millisekunden
void delay_ms(uint16_t ms)
{
for(uint16_t t=0; t<=ms; t++)
_delay_ms(1);
}
ISR (INT0_vect)
{
hier sollte der Code zum Löschen des PCF Interrupt steht, nur wie geht das????????
}
//lesen der PCF's Adresse
i2c_start_wait(READ_ADRESSE_1+I2C_READ);
wert = i2c_readNak();
i2c_stop();
delay_ms(30);

};

Dirk
28.03.2009, 21:56
... habe keine Ahnung wie ich den INT am PCF 8574 zurücksetzen kannst (im Lesemodus)
Durch einen zweiten Lesezugriff auf den Port.

Gruß Dirk

papuadive
29.03.2009, 12:00
Danke Dirk,
es ist der Schreibbefehl der das INT am PCF8574 löscht!
Dank dir
was noch nicht ganz funktioniert ist das Lesen aus dem PCF 8574.
Habe ich da noch was vergessen im Code? Normal sollte in der Variablen "wert" der Zustand der Port Pin's am PCF wiedergegeben werden, oder?
Papua

Yossarian
29.03.2009, 17:51
Hallo
Sowohl ein Lese- als auch ein Schreibzyklus setzt den INT Ausgang zurück.
Also z.B INT erkannt, daraufhin Port gelesen, INT ist wieder gelöscht.
Auch die Wiederherstellung des ursprünglichen Zustandes des Ports löscht INT.
Mit freundlichen Grüßen
Benno

papuadive
30.03.2009, 07:50
Danke Benno;
Leider habe ich das Lesen noch nicht im Griff...
Vielleicht kannst du mir da noch einen guten Tipp geben....
Oben steht mein Code zum Lesen der PCF's..
Danke Papua

Dirk
30.03.2009, 18:21
... was noch nicht ganz funktioniert ist das Lesen aus dem PCF 8574. Habe ich da noch was vergessen im Code?
Keine Ahnung. Das Problem ist der "I2C-Dialekt", den ich nicht spreche.

Gruß Dirk

Yossarian
30.03.2009, 20:13
Hallo
Ich habe keine Ahnung, wie das Programm abläuft.
Warum

READ_ADRESSE_1+I2C_READ);?
0x41 ist doch bereits die "Leseadresse".

Mit freundlichen Grüßen
Benno