PicoBasic für den ATtiny3216
Elektronik-Labor
Projekte
Mikrocontroller PicoBasic
Seit einiger Zeit bin ich ein großer Freund der Tiny-Serien 0
und 1. Diese Controller sind sehr leicht über nur einen Pin (UPDI) zu
programmieren, sind sehr vielseitig und außerdem preiswert. Hier kommt
der ATtin3216 mit 20 Beinchen zum Einsatz. Es sollte ein möglichst
kleines Platinchen für den universellen Einsatz werden. Deshalb liegt
der USB/Seriell-Adapter extern. Hier habe ich ein FT232-Kabel
verwendet, das über eine vierpolige Stiftleiste angeschlossen wird.
Wenn ein Programm entwickelt wurde und in das EEPROM gebrannt wird, hat
man ein kleines System, das auch für Batteriebetrieb geeignet ist.
Weil das
ursprüngliche PicoBasic des Rpi Pico mit der Arduino-IDE entwickelt wurde, war
der Umstieg auf einen anderen Controller relativ einfach. Nur die speziellen
Eigenheiten des neuen Controllers mussten angepasst werden. Die acht digitalen
Ein/Ausgänge D0 bis D7 wurden auf die drei Ports, PB, BC und PA verteilt,
sodass sie auf einer Seite liegen. Auf der anderen Seite hat man dann RXD, TXD
und die analogen Anschlüsse. Wie bisher beim RPI Pico gibt es AD0 bis AD2. Eine
Besonderheit des Tiny3216 ist sein echter 8-Bit-DA-Wandler. Darauf wollte ich
nicht verzichten und habe ihn an die Stelle von PWM2 gesetzt, während PWM1 ein
normaler PWM-Ausgang geblieben ist. Weil der Reset-Eingang als UPDI-Anschluss
gebraucht wird, wurde ein Ersatz-Reset mit einem Tastschalter an PB1 erzeugt.
Damit kann man jederzeit den Grundzustand herstellen oder auch ein Programm aus
dem EEPROM neu starten.
Anders als der Rpi Pico hat der Tiny3216 keine internen
Pulldown-Widerstände. Die dadurch freigewordene Befehlstaste hat nun
eine andere Funktion und heißt Pout = NOT 0...255, sie invertiert also
die angegebene Konstante für die Portausgabe. Tatsächlich wird hier
dasselbe Kommando 0x09 wie beim Pout-Befehl verwendet. Das hat immerhin
den Vorteil, dass man oft eine Änderung der Konstante einspart und
damit etwas schneller programmieren kann. Mit dem Tiny3216 entwickelte
PicoBasic-Programme sind trotzdem voll kompatibel zur Pico-Version und
können dort direkt eingelesen werden.
Die zweite Änderung betrifft den analogen DA-Ausgang, der an die
Stelle von PWM2 tritt. Die interne Referenz des DA-Wandlers wurde auf
2,5 V eingestellt. Mit DA = 100 erhält man dann relativ genau eine
Spannung von 1,0 V, und das ganz unabhängig von der Betriebsspannung im
Bereich 3 V bis 5 V. Dieselbe Referenz wurde auch für alle drei Kanäle
des AD-Wandlers verwendet. Damit hat man auch bei Batteriebetrieb eine
genaue Spannungsmessung.
Elektronik-Labor
Projekte
Mikrocontroller
PicoBasic