mikrocontroller.net

Forum: Compiler & IDEs SPI über USI Schnittstelle des Tiny84


Autor: Julian D. (maelcum)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo AVR Experten,

ich habe folgendes Problem:

Ich möchte den DA-Wandler TLV5638 über SPI mit meinem Tiny84 ansprechen.
Ich mache, dass eigentlich auch genauso, wie im datasheet angegeben ist.
Im der Simulation im AVR Studio, sehe ich jedoch, dass mein 4bit counter 
nicht hochzählt, in der Praxis tut es ebenfalls nicht. Ich bekomme also 
nie einen overflow und das USIDR Register wird auch nicht geschoben.
Ich habe mir auch schon die verschiedensten application notes (app 307, 
319) von avr angesehen und meine, dass die das genauso machen, wie ich.
Was habe ich vergessen?
Sieht vielleicht jemand von euch meinen bug?
Wäre super!!!
Vielen Dank im Voraus!

MfG
Julian

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Eingang als Ausgang zu definieren ist nicht erfolgversprechend:
DDRA = (1<<DDA4) | (1<<DDA5) | (1<<DDA7); /*Pin PA4 USCK, PA5 DO, PA7 DI

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin auf deinen falschen Kommentar reingefallen. PA7=CS. Dann stimmts 
dieser Teil.

Bei deinem SPI dürfte der AVR Master sein. Dazu passt dein Code 
allerdings überhaupt nicht, denn bei einem USI als SPI Master wird der 
Takt per Software erzeugt. Nochmal ins Datasheet reinsehen und den 
richtigen Codeschnipsel finden.

Autor: Julian D. (maelcum)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung, jetzt sollte der Kommentar aber stimmen


A.K. wrote:
> Bei deinem SPI dürfte der AVR Master sein. Dazu passt dein Code
> allerdings überhaupt nicht, denn bei einem USI als SPI Master wird der
> Takt per Software erzeugt. Nochmal ins Datasheet reinsehen und den
> richtigen Codeschnipsel finden.

Ich muss dir leider widersprechen,
wenn ich im USICR USICLK=1 setze aktiviere ich die Software clock und 
über den Befehl USITC=1 wird der Clock port getoggelt.
Da ist doch mein avr ein master. Oder muss man den avr noch anders als 
master definieren?

MfG
Julian

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wenn ich im USICR USICLK=1 setze aktiviere ich die Software clock
> und über den Befehl USITC=1 wird der Clock port getoggelt.

Kein Widerspruch. Ich sehe bloss nirgends wo du ihn toggelst, ausser ein 
einziges Mal in der Initialisierung des Registers. Dein Missverständnis: 
Der toggelt sich nicht selber (eben "software clock", nicht "hardware 
clock"), da ist pro Bit 2xUSITC fällig. Und genau das steht schön 
beschrieben im Datasheet.

Autor: Julian D. (maelcum)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für diese Erkenntnis!#
Stimmt das, dass sich im Avr studio dieses toggeln nicht simulieren 
lässt?
ZUmindest tut bei mir immer noch nicht.
Könntest du vielleicht dir nochmals den code anschauen?
Ich toggle jetzt 2mal pro zyklus.

Danke!

Autor: Julian D. (maelcum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach was ich noch sagen wollte:

Im Datasheet steht nur, was passiert, wenn ich USITC=1 setze, aber 
nicht, wie und wann ich es setzen muss. Ist auch kein code dabei.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seite 125. Ok, ist kein C-Code sondern Assembler-Schnipsel.

Autor: Julian D. (maelcum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe.

Autor: Julian D. (maelcum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub ich steh brutal auf dem schlauch, auch wenn ich usíclk setze 
und toggle, bei mir zählt der 4bit counter nicht hoch.
Muss man den irgendwie noch anders intialisieren?
Seufz.

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Simulator funktioniert kein USI, kein TWi, kein ADC, kein AD-Comp (in 
der Hilfe unter "Known Issues")
Schau mal hier: 
http://www.atmel.com/dyn/products/app_notes.asp?fa...
Note: "AVR319" "Using the USI module for SPI communication", mit C-Code 
(kein GCC, ist aber nicht so schlimm)

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Preview des Simulators V2 (im aktuellen Studio) könnte USI vielleucht 
funktionieren. Zumindest klingen die Release-Notes so.

Autor: FBI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... Simulators V2 ...

der kann aber keinen ATtiny84 :(

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na und? Das USI ist gleich. Üb damit und wende die Erkenntnis beim 84 
an.

Autor: Julian D. (maelcum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, das wars.
Der SPI Master funktioniert.
Nur das Simulieren tut nicht.
Vielen Dank für eure Hilfe.

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.