mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI mit Interrupts


Autor: Martin Haller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

seit ein paar Wochen beschaeftige ich mich mit dem Atmel ATMega8
Controller. Ich moechte zwei dieser Controller ueber TWI/I2C mit
einander sprechen lassen.

Dazu verwende ich die I2C Routinen aus der AVRLib. Nachdem ich
keinerlei Kommunikation zustande gebracht hatte, habe ich testweise
einen 24C64 (kleiner 64kB EEPROM) ueber I2C angebunden. Dabei habe ich
festgestellt, dass die interrupt-losen Funktionen (i2cMasterSendNI()
bzw. i2cMasterReceive()) einwandfrei arbeiten, nur die
Interrupt-Versionen funktionieren nicht.

Ich habe testweise einen rprintf Befehl in den Interrupt-Handler (die
SIGNAL() Routine in i2c.c) eingebaut und dabei festgestellt, dass nie
ein Interrupt ausgeloest wird.

i2cInit() wird aber zu anfangs aufgerufen und darin wird sowohl der
TWI-Interrupt enabled (sbi(TWCR, TWIE);) als auch global Interrupts
eingeschaltet (sei();).

Hat jemand einen Tip, warum keine Interrupts ausgeloest werden ?

Vielen Dank,

Gruss Martin

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probier mal

#include <signal.h>

in deiner Main.c aus.

Gruß Hagen

Autor: Martin Haller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Hagen,

nein, hilft leider nichts. i2c.c included es auch schon:

#include <avr/signal.h>
#include <avr/interrupt.h>

Daran lags leider nicht. Ich hab zwischenzeitlich nochmal ueberprueft,
ob ich ueberhaupt Interrupts ausloesen kann - das funktioniert
prinzipiell, denn ein Handler fuer den Overflow Interrupt vom Timer
wird aufgerufen. Es scheint also vermutlich ein TWI-spezifisches
Problem zu sein.

Tappe weiterhin im Dunkeln...

Weitere Ideen ?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne C-Quelltext (Dateianhang) keine Hilfe möglich.


Zu oft wurde behauptet, man hätte irgendeinen XY-Code völlig
unverändert genommen und später stellt sich das dann als Lüge heraus.


Auch ist es nicht nett, wenn der Helfende eine XY-Lib erst suchen muß,
ganz abgesehen davon, daß es bestimmt mehrere Versionen der Lib gibt.


Peter

Autor: Martin Haller (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Peter,

"Ohne C-Quelltext (Dateianhang) keine Hilfe möglich.

Zu oft wurde behauptet, man hätte irgendeinen XY-Code völlig
unverändert genommen und später stellt sich das dann als Lüge heraus.

Auch ist es nicht nett, wenn der Helfende eine XY-Lib erst suchen muß,
ganz abgesehen davon, daß es bestimmt mehrere Versionen der Lib
gibt."

eine Library-Versionsangabe habe ich leider bei der AVRlib nicht
gefunden. Es gibt aber eine Versionsangabe in die i2c.* Files:
Verion 0.9.

Ich habe mal die relvanten Files und das Makefile zusammengepackt und
angehaengt. In den Files der AVRlib habe ich folgende Dinge
veraendert:

1) Die Zeile "#include "uart2.h"" ein einen #ifdef Block gepackt:

        #ifdef I2C_DEBUG
        #include "uart2.h"
        #endif

2) Im Interrupt-Handler eine Debug-Zeile eingefuegt:

    // Debug-Code: Wird der Interrupt-Handler ueberhaupt
    // ausgefuehrt ?
    rprintf("Interrupt-Handler called\r\n");

Die Details bzgl. der I2C-Calls stehen in der main().

Danke schon mal !

Gruss Martin

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.