µC hängt bei SPI über USI

Gast #1983740
Liebe Community,

ich versuche mit einem Attiny2313 eine RTC über die USI - Schnittstelle 
(SPI) anzusprechen. Da ich in C programmiere, habe ich den Beispielcode 
aus dem Datenblatt des µC in C übersetzt. Leider funktioniert das ganze 
scheinbar nicht. Beim Simulieren ist mir aufgefallen, dass der Bug wohl 
in der Do-While - Schleife liegen muss. Nur find ich partout den Fehler 
nicht. Hab hier im Forum auch schon gesucht und bin auf den identischen 
Code gestoßen. Jemand eine Idee wo mein Fehler liegt?

Gruß Micro
Angehängte Dateien:
Gast #1984751
Hey Spess

danke für die Links. Das es die Module bereits fertig gibt wusste ich. 
Allerdings sind die leider sehr veraltet. Die dortigen Bibliotheken 
gibts nicht mehr und selbst wenn man diese durch die aktuellen ersetzt, 
lässt sich der Code nicht fehlerfrei kompilieren. Nen paar Sachen hab 
ich zwar raus gekriegt, aber so tief steck ich leider nicht in der 
Materie drin um alle Fehler beseitigen zu können.

In dem von mir beschriebenen Programm kommt es mir so vor als wenn der 
µC entweder die Daten nicht sendet oder nach dem Senden das benötigte 
Flag nicht setzt um zu signalisieren, dass er fertig ist. Ich find nur 
leider den Fehler nicht... Wahrscheinlich nur ne Kleinigkeit, wie immer 
=)

Gruß Micro
Gast #1985102
hmm das ist ja seltsam. An sich die gleiche Routine. Habs gerade 
umgewandelt wie bei dir, aber der Simulator hängt immernoch während der 
while Schleife. Bedingung wird scheinbar nie erfüllt. Lässt sich das im 
AVRStudio mit dem Simulator etwa nicht simulieren ?
Gast #1986732
Hi

>hmm das ist ja seltsam. An sich die gleiche Routine. Habs gerade
>umgewandelt wie bei dir, aber der Simulator hängt immernoch während der
>while Schleife. Bedingung wird scheinbar nie erfüllt. Lässt sich das im
>AVRStudio mit dem Simulator etwa nicht simulieren ?

Welchen Simulator benutzt du? Im Simulator2 funktioniert es bei mir.

MfG Spess
Gast #1987158
Hey Spess,

ich hab deinen Algorythmus gerade mal für den Tiny24 simuliert. 
Funktioniert. Dann hab ich mein Programm nochmal versucht und dabei 
bemerkt, das er im Status Register das Counter Overflow Flag nicht 
setzt. Aus mir unerklärchen gründen nimmt er den  USISR = (1<<USIOIF) 
Befehl nicht.

Dann hab ich nochmal versucht deine Methode einzufügen und zu simulieren 
für den tiny2313.Clock und Miso natürlich angepasst. Gleiches Spiel. Er 
setzt die Flag nicht. Daher kommt der Algorythmus auch nicht über die 
Schleife hinaus.

Zu guter letzt hab ich den Algorythmus für den tiny2313 auf beiden 
Simulatoren getestet.
Fazit: "Simulator" setzt die Flag nicht, "Simulator2" läuft einwandfrei.
Weist du zufällig wo der Unterschied in den beiden Simulatoren ist? 
Kommt mir irgendwie komisch vor. Da kann ich natürlich lange suchen...

Gruß Micro
Gast #1987187
Hi

>Weist du zufällig wo der Unterschied in den beiden Simulatoren ist?
>Kommt mir irgendwie komisch vor. Da kann ich natürlich lange suchen...

Eigentlich haben sie nur etwas gemeinsam: Sie sind nicht perfekt. Lies 
dir bitte in der Hilfe zu den Simulatoren die 'Known Issues' und' 
Simulator Modules' durch. Zum Simulator1 steht da z.B.

Universal Serial Interface (USI)
USI is not supported

Beide Simulatoren sind durchaus brauchbar, man muss nur gewisse 
Einschränkungen bei den IO-Modulen im Hinterkopf haben.
Wenn möglich würde ich aber den Simulator2 benutzen

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.