mikrocontroller.net

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


Autor: Micro (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

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

MfG Spess

Autor: Micro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

MfG Spess

Autor: Micro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Micro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner ne Idee wieso die Bedingung zum Schleifenende nie erfüllt ist ?

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Micro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Micro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 =)

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.