Moin, ich habe hier einen 10bit AD-Wandler, den ich über SPI auslesen möchte. In den ersten 3 Takten der CLK wird die Wandlung vorgenommen, darauf folgt der 10-bit Wert, und anschließend noch 2 Nullen. Da ich die ja aber gar nicht brauche, aber den Wert gemessenen Wert noch nach rechts schieben muss, würde ich die SPI Kommunikation gerne früher beenden, um den Wert dann zu shiften. Kennt Ihr da eine Lösung? Ich benutze einen ATmega128, und programmiere in AVR Studio mit avrgcc und für die Kommuniktion in Assembler. MfG, und vielen Dank, Ozzy
Ohne den ADC jetzt genau zu kennen, aber wenn der am Ende noch zwei Nullen ausgeben will, dann wird er das auch tun! D.h. selbst wenn Du die Übertragung nach den 10 bit abbrechen würdest, würde er beim nächsten mal eben die Nullen am Anfang der Datenübertragung nachliefern... mit vermutlich chaotischer Wirkung auf Dein gewünschtes Programmverhalten!
Nö, der Slave wird ja durch das zurücknehmen der Slave-Select-Leitung wieder "resettet". Sonst würde ja immer Müll rauskommen, wenn sich ein Slave mal um einen Takt vertut...
Naja, die Übetragung/Empfang laufen ja in einer Schleife:
1 | Wait_Transmit: |
2 | sbis SPSR,SPIF |
3 | rjmp Wait_Transmit |
Theoretisch sollte diese ja 8x durchlaufen werden, aber kann man sie deshalb einfach ausrollen? Und wie verhält es sich dann mit der SPI-clk, die man eingestellt hat?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.