www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik pcf8574a interrupt Probleme


Autor: nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade, zwei Pins des Portexpander an einem Mega644 per 
INT2 einzulesen, allerdings werde ich mit Interrupts überhäuft...

Angeschlossen ist der PCF an I2C mit zwei 4k7 Pullups. Der INT# Pin ist 
direkt mit PB2 ohne Pullup verbunden, da der ja sowieso 1 sein sollte, 
wenn sich nichts tut an seinen Eingängen...

Die Zwei Eingänge sind P0 und P1 vom Portexpander, an den restlichen 
Pins hängen via ULN2003 ein paar LEDs, da soll später eine Lichsteuerung 
für ein ferngesteuertes Auto draus werden.

P0 und P1 sind an einen Stecker herausgeführt, keine Pullups/Pulldowns.

Der Code funktioniert an sich soweit, dass wenn ich den PCF rausnehme 
und PB2 (INT2) offen lasse, löst er keine Interrupts aus und wenn ich 
ihn auf Masse lege, löst er aus.
I2C funktioniert auch, die Ein- und Ausgänge des Portexpanders lassen 
sich ohne Probleme schalten.

Wenn ich nun P0 auf Masse lege, hören die Interrupts auf. Bei P1 bringt 
das allerdings nichts.

Hier mein Code:
int main() {
        init_uart();
        uart_puts("test\n");
        DDRB |= (1<<PB2);
        PORTB |= (1<<PB2);
        EIMSK |= (1<<INT2);
        i2c_start(0x7E);
        i2c_write(0xFF);
        i2c_stop();
        sei();
        for(;;);

Wie gesagt, I2C funktioniert, der UART auch, auch der externe Interrupt 
an sich.
Ich hoffe ihr könnt mir dabei weiterhelfen und mich auf die richtige 
Spur bringen...

Autor: nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat denn keiner eine Idee?

Autor: 1.8T-Passat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PB2 sollte doch eigentlich auf Eingang geschaltet sein für diesen Zweck, 
oder? DDRB |= (1<<PB2); schaltet das DDR-Register aber auf Ausgang.

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell hört der Eingang eine parallele schnelle Leitung mit?? Mal 
Pull-Up R ranhängen und schauen, ob die Interrupts abnehmen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.