Moin,
ich möchte gerne einen SPI-SPI-"Wandler" bauen, und habe mich hierbei
für einen ATtiny4312 entschieden, da dieser bis zu 20Mhz taktbar ist.
Nun würde ich gerne, wie im Datenblatt beschrieben, den USART im
SPI-Modus benutzen. Hier steht auf Seite 146:
"Setting both UMSEL1:0 bits to one enables the USART in MSPIM logic."
Ok, das klingt einfach.
Auf Seite 149 ist dann auch gleich noch einmal ein Beispiel:
1 | ; Set MSPI mode of operation and SPI data mode 0.
|
2 | ldi r18, (1<<UMSEL1)|(1<<UMSEL0)|(0<<UCPHA)|(0<<UCPOL)
|
Nun probiere ich das ganze im AVRStudio (Version 4.19, Build 730), und
das meckert, dass es UMSEL1 und UMSEL0 nicht kennt. Also mal
reingeschaut in die "tn4313def.inc", und diehe da, da steht auch nur
".equ UMSEL = 6 ; USART Mode Select".
Wenn ich ein
1 | ldi R16, (3<<UMSEL)
|
2 | out UCSRC, R16
|
dann meckert der Compiler wenigstens nicht. Beim simulieren sieht man,
dass das vordere Bit im UCSRC grau hinterlegt und, und an Bitstelle 6
auch nur UMSEL steht. Schreibt man dann die 0XC0 von oben rein, dann
steht die da auch drin, allerdings wird nie das RXC-Bit im UCSRA
gesetzt.
Kann mir jemand von Euch sagen, ob das nur im Simulator so in die die
Grütze geht, und ob das in der Realität dann doch funktioniert? Sonst
muss ich nämlich einen anderen Chip auswählen (habe noch nichts
bestellt...)
Vielen Dank und viele Grüße
Christoph