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
Gast
#575622
Den Eingang als Ausgang zu definieren ist nicht erfolgversprechend:
1 | |
Gast
#575624
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.
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
Gast
#575982
> 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.
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!
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.
Gast
#576019
Seite 125. Ok, ist kein C-Code sondern Assembler-Schnipsel.
Danke für deine Hilfe.
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.
Gast
#576445
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?family_id=607 Note: "AVR319" "Using the USI module for SPI communication", mit C-Code (kein GCC, ist aber nicht so schlimm)
Gast
#576480
Im Preview des Simulators V2 (im aktuellen Studio) könnte USI vielleucht funktionieren. Zumindest klingen die Release-Notes so.
Gast
#576636
... Simulators V2 ... der kann aber keinen ATtiny84 :(
Gast
#576637
Na und? Das USI ist gleich. Üb damit und wende die Erkenntnis beim 84 an.
Genau, das wars. Der SPI Master funktioniert. Nur das Simulieren tut nicht. Vielen Dank für eure Hilfe.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.