mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ASF I2C Dummy_Handler


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: F. K. (superpcfan)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich verwende das Atmel Studio 7 um einen ATSAMC20J18 auf einer 
selbstdesingten Platine zu programmieren. Das Programm verwendet die 
Libs des ASF.

Mein Problem ist, dass ich nicht verstehe, warum die ASF I2C Lib 
"plötzlich" seinen internen Callback Handler nicht mehr korrekt 
registriert.

Ich hatte bereits diverse Peripherie Module (TC0, TC2, TCC0, TCC2, 
SERCOM3, EINT, DMA, usw) am laufen. Dann habe ich das Modul SERCOM0 als 
I2C ebenfalls zum Laufen gebracht. Ich konnte fehlerfrei die Zeit aus 
der angeschlossenen RTC DS1337 auslesen.

Danach habe ich mit der Implementierung des Modules SERCOM2 
weitergemacht und dabei ist das Problem aufgetreten. Beim Debuggen des 
SERCOM2 hängte sich plötzlich das ganzes Programm auf. Der CallStack hat 
gezeigt, dass das Modul SERCOM0 (das eigentlich schon funktionierende 
I2C) plötzlich den Dummy_Handler aus startup_samc20.c aufruft und dort 
hängen bleibt.

Nachdem ich alle Implementierungen zum SERCOM2 wieder entfernt hatte, 
bliebt das Problem trotzdem bestehen.
Dann habe ich alles aus dem Programm entfernt, was nicht unbedingt für 
die I2C RTC benötigt wird und das Problem bleibt trotzdem immernoch 
bestehen.
Diese "minimal" main.c befindet sich im Anhang.

Ich finde in meinem Programm nichts mehr, was dafür verantwortlich sein 
könnte, dass die I2C Lib ihre +internen+ Callbacks nicht mehr 
registriert.
Diese Lib-interne Funktion hatte bereits funktioniert und ich habe in 
der Lib nichts verändert.

Ich habe sogar ein neues Projekt erzeugt und lediglich die Inhalte von 
main.c dort hinein kopiert. Das Problem ist wieder aufgetreten.

Daher vermute ich, dass ich irgendein Verhalten des ASF nicht verstehe.

Hat jemand eine Idee oder einen Tip?

Autor: F. K. (superpcfan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich schubs den Post mal nach oben.

Ich habe zwar ein wenig weiter rumprobiert, aber noch nicht die zündende 
Idee oder das Problem gefunden.

Eventuell findet sich ja noch jemand, der einen heißen Tip hat.

Autor: F. K. (superpcfan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das Problem gefunden.

Als ich das Minimal-main.c langsam Schritt für Schritt ausgeführt habe, 
ist die Lib nicht mehr in den Dummy-Handler abgebogen.

Die ASF I2C Lib scheint ein Timing Problem zu haben, in das ich beim 
Debuggen "reingerutscht" bin. Dieses Timing-Problem kommt dann zum 
Tragen, wenn man die Statusrückmeldung der "Job-Start-Methode" verwendet 
und gleichzeitig versucht einen neuen Job startet.
Eigentlich sollte das der Beschreibung der "Job-Start-Methode" nach 
möglich sein.

Dies führt zum Timing Fehler:
if (i2c_master_read_packet_job(&i2c_master_inst_rtc, &i2c_master_read_packet_rtc_time) == STATUS_OK){
    iRTC_ControlStep = 3;
}

Dies funktioniert:
if (i2c_master_get_job_status(&i2c_master_inst_rtc) == STATUS_OK){
    i2c_master_read_packet_job(&i2c_master_inst_rtc, &i2c_master_read_packet_rtc_time);
    iRTC_ControlStep = 3;
}

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.