TWI kann nicht simuliert werden

Gast #1210316
Lesenswert?
• ▲
▼
Hallo,

ich versuche mich gerade daran einen LED Treiber, welcher per I2C 
anzusteuern ist zum laufen zu bringen. Leider scheitere ich kläglich. 
Bei dem Chip handelt es sich um einen TLC59116 von TI, der Controller 
ist ein Atmega8 mit 16MHz Quartz. Mit einer Bascom Software kriege ich 
die Hardware zu laufen, aber Bascom ist mir so unsympathisch. Mein C 
Programm schreibe ich im AVR Studio, womit man es ja auch eigentlich 
simulieren können sollte. Da fangen aber schon die Probleme an. Immer 
wenn mein Programm versucht eine der Funktionen twiStart oder twiSend zu 
benutzen bleibt die Simulation stehen. Ich kann nicht sehen, das der 
Simulator überhaupt in die Funktion rein springt. Ist bestimmt was recht 
einfaches, aber ich komme gerade nicht drauf. Währt ihr also so lieb mal 
drüber zu schauen?

Danke schonmal Daniela
Angehängte Dateien:
Gast #1210914
Lesenswert?
• ▲
▼
Ohne jetzt da ins Detail reinzuschauen, hängt die Simulation des 
Hardware-TWI normalerweise deshalb, weil die Slaves nicht da sind, und 
damit niemals irgendwas vom Bus zurückkommt.
Also Simulation anhalten, und das fehlende Bit in den Registern von Hand 
setzten, dann geht es auch weiter.

"Reinspringen" sollte der Debugger in dir Funktionen aber schon. Hast du 
ohne Optimierung kompiliert?

Oliver
Gast #1211097
Lesenswert?
• ▲
▼
Ja das mit den fehlenden Interrupt ist mir bewusst. Mein Problem ist 
momentan, daß der Debugger einfach nicht in die Funktion springt. 
Initialisierung vom TWI klappt noch, sobal ich jedoch in die twiStart 
springen will bleibt die Simulation stehen. Sie kommt erst gar nicht bis 
zu der Stelle, wo sie auf den Interrupt warten müsste.
Gast #1211306
Lesenswert?
• ▲
▼
>Ansicht Dissassembler aktivieren, dann im Assembler-code durchsteppen

Noch besser. Auf den Mega flashen, Gehäuse runterschleifen, und unterm 
Rasterelektronenmikroskop nachschauen, wie die Bits durch den Prozessor 
flitzen.

Wenn das Programm ohne Optimierung (-O0) kompilert wurde, lässt es sich 
auch problemlos im C-Sourcecode debuggen, und bleibt dann bei
1
while(!(TWCR & (1<<TWINT)));          //Warten auf das Interruptflag;
hängen. Dort hängt es natürlich auch bei eingeschalteter Optimierung. 
Wenn man die Simulation mittels "break" abbricht, findet das Studio bei 
mir auch dann die richtige C-Zeile.

Oliver
Gast #1211309
Lesenswert?
• ▲
▼
@Oliver

du kommst problemlos bis zu der Zeile? Komisch, bei geht der Pfeil der 
die Zeile anzeigt einfach verloren beim Funktionsaufruf. Abbrechen kann 
ich dann die Simulation auch nicht mehr. Ich muss sie erst Resetten um 
den Stop Button drücken zu können. Auch das manuelle Auslösen des 
Interrupt bringt keine Abhilfe.
Gast #1211316
Lesenswert?
• ▲
▼
>Komisch, bei geht der Pfeil der
>die Zeile anzeigt einfach verloren beim Funktionsaufruf.

Das tut er bei mir auch, wenn ich bei mit Optimierung per F10 (step 
over) da duchsteppen will. Break im Menu Debug ist aber möglich und 
landet dann auch in der richtigen Zeile.

F11 (step into) springt zwar etwas unmotiviert durch die Funktionen, 
funktioniert aber ansonsten.

Sinnvoller ist das alles natürlich ohne Optimierung.

getestet mit:
AVRStudio V4.16, WinAVR2009xxx, Simulator

Zip doch mal den Projektordner zusammen und stell den hier ein.

Oliver

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.