Hallo Leute! Ich möchte gerne einen BMA020 Sensor auslesen (über TWI/I2C). Diese Daten sollen anschließend über USART an eine Matlab Oberfläche gesendet werden und visualisiert werden. (Hier sind verschiedene Modi möglich: Initialisierung, Messung, Pause) Jetzt meine Frage: Kann jemand bitte einmal mein Programm durchschauen und mir evtl sagen, wo mein Fehler bzw meine Fehler liegen? (Die Funktionen von DATA_SYNC waren vorgegeben) Im Anhang befindet sich das Programm (Atmel Studio 6.2). Vielen Dank schon mal vorab :) LG
In den TWI Routinen So etwas
1 | ...
|
2 | while((TWSR & 0xF8)!= 0x10); // prueft acknowledgement |
3 | ...
|
ist mutig. Wenn du kein Acknowledge kriegst, dann ist das ein Fehler! Da kann dein Code solange warten wie er will, wenn nach dem Abwarten der Kommunikation kein Acknowledge vorliegt, dann kommt der auch nicht mehr. -> Im Fehlerfall hast du eine Endlosschleife. Abgesehen davon: was bzw. welche Subsysteme hast du denn schon unabhängig vom Gesamtprojekt einzeln getestet? Funktioniert die UART? Funktionert die Steuerung in Data_Sync? Hast du die TWI Funktionen schon mal losgelöst von der Aufgabenstellung getestet. Zb. in dem du mit einer LED kontrolliert hast, ob du entsprechende Reaktionen vom BAM kriegst? Hast du deine Statemachine in der ISR soweit getestet, dass sie richtig reagiert, selbst wenn du die TWI Kommunikation da einfach mal durch eine Fake-Variante ersetzt, die einfach mal irgendwelche Werte in das DataArray einträgt und du im Frontend nachsiehst, ob die auch tatsächlich ankommen. Oder ist das wieder mal so ein Thread, wo du tage- bzw. wochenlang Code produziert hast, ohne den in irgendeiner Form zwischendurch immer wieder mal zu testen und dich dann wunderst, warum das Gesamtsystem nicht auf Anhieb funktioniert und du keine Ahnung hast, wo du mit der Fehlersuche auch nur anfangen sollst? Denn: so etwas ist gerade bei unerfahrenen Neulingen immer ein schwerer Fehler! Man produziert nicht massig Code in der Annahme, man würde das schon auf Anhieb fehlerfrei bewältigen können.
:
Bearbeitet durch User
Also ich habe folgendes getestet: USART, Data_Sync wurde korrekt vorgegeben, genau wie die ISR. Aus diesem Grund weiß ich nicht, wo noch der Fehler sein könnte. Die TWI Funktionen waren auch fast alle vorgegeben bis auf die Send und Receive, habe ich da evtl etwas falsch nacheinander aufgerufen/übergeben?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.