Forum: Mikrocontroller und Digitale Elektronik µC hängt bei SPI über USI


von Micro (Gast)


Angehängte Dateien:

Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

Hi

>Da ich in C programmiere, habe ich den Beispielcode
>aus dem Datenblatt des µC in C übersetzt.

Wozu? Gibt es fertig bei Atmel:

http://www.atmel.com/dyn/resources/prod_documents/doc2582.pdf

http://www.atmel.com/dyn/resources/prod_documents/AVR319.zip

MfG Spess

von Micro (Gast)


Lesenswert?

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

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

Also der Code im Anhang läuft bei mir auf einem ATTiny24.

MfG Spess

von Micro (Gast)


Lesenswert?

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 ?

von Micro (Gast)


Lesenswert?

keiner ne Idee wieso die Bedingung zum Schleifenende nie erfüllt ist ?

von Spess53 (Gast)


Lesenswert?

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

von Micro (Gast)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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

von Micro (Gast)


Lesenswert?

alles klar. Vielen dank aufjedenfall für die Hilfe. Ich wär nie drauf 
gekommen, dass es am Simulator liegen könnte. Danke Danke Danke =)

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
Noch kein Account? Hier anmelden.