Hab etwas rumgegoogelt. Der halbwegs vergleichbare Attiny202/402 hat wenigstens die korrekten Belgungen der Mux-Tabelle. Dafür ist dort PA1 auf Pin 5 und PA2 auf Pin 4 angegeben - es ist aber andersrum und der Quatsch mit dem 10 und 6 Bits steht da auch. (Der Faktor 64 in der Formel ist wohl genau dieses Shifting der 6 Nachkommastellen in die unteren 6 Bits - man kann es auch kompliziert machen!) Dafür stimmt wengistens die Pinanordnung in der Pinout-Grafik (in beiden Datenblättern).
Atmel Start liefert die Pindaten ebenso falsch, wenn man in der Konfiguration die alternativen Ports PA1/2 wählt und sich das dann in der Pinmux-Übersicht anschaut. Zwar stimmt die Zuordnung der PAn, aber die Pinnummern stimmen nicht und die Grafik ist falsch.
Falls also noch jemand mal den UART eines neueren Tiny nutzen will:
Die UART-Standardbelegung des Attiny412 ist
Tx = PA6 = Pin 2
Rx = Pa7 = Pin 3
Die alternative Pinbelegung ist:
Tx = PA1 = Pin 4
Rx = PA2 = Pin 5
(Rx hab ich allerdings in beiden Fällen noch nicht ausprobiert...)
Der Berechnete Wert BAUD = (64 * CLK_PER) / (S * fBAUD), im NORMAL MODE = 4 * CLK_PER / fBaud wird ganz einfach in das 16-Bit-Regsiter BAUD geschrieben.
- CLK-PER ist der durch den Prescaler PDIV runtergeteilte Systemtakt (Standard also 3333333, weil 20000000 durch den Standard-Prescaler 6 geteilt wird).
- S ist 16 im NORMAL MODE und 8 im CLK2X MODE (letzteres hab ich nicht probiert).
- fBAUD ist die gewünschte Baudrate (9600, ...). Maximal müsste der Tiny 20000000/16 = 1250000 schaffen (NORMAL MODE).
Ich habs bis 500000 probiert - mehr macht mein Serial Monitor nicht mit. Die übertragung läuft über 10 Meter dünnen Schaltdraht einwandfrei. Der Interne Taktgeber reicht dafür offenbar aus - in der Hinsicht sind die AVR-1-Serie Controller wohl echt besser als die alten.
Lesezeichen