Die Arduino-Hardware :o)
Arduinos sind fertig bestückte Leiterplatten mit USB-Schnittstelle,
8-Bit-Microcontroller (AVR) und der notwendigen Minimalbeschaltung um sofort mit
dem Programmieren loslegen zu können. Größere Typen haben manchmal sogar Bluetooth oder W-Lan on
board. Eine großartige Lösung um auch mit wenig Elektronikerfahrung und für oft
nichtmal 2€ Kosten eigene Projekte zu realisieren!
Wozu ich ín diesem Tutorial verleiten will ist sich etwas näher mit dem Controller zu beschäftigen um die Nachteile und Beschränkungen der zugehörigen Arduino-Programmierumgebung zu umgehen. Ein weiterer Vorteil: wenn Sie gelernt haben den Controller direkt zu programmieren, können sie jeden beliebigen AVR auch als losen Chip, ohne Arduino-Platine programmieren und verwenden, benötigen den Arduino-Bootloader nicht mehr und verschaffen sich Zugang zu neuen, sehr schnellen Hardwarefunktionen.
8-Bit-Controller heißt, er verarbeitet Ein-/Ausgaben an 8 zu einem "Port" zusammengefassten Pins gleichzeitig und löst ganzzahlige Rechenoperationen bis 255 oft in nur einem einzigen Prozessortakt. Welche anderen Hardwarefunktionen an den Pins zusätzlich zur Verfügung stehen und was diese können schlägt man direkt im Datenblatt des Controllers nach, der auf der Arduino-Platine verwendet wird.
Am Beispiel des Arduino-Nano ist das der AVR "ATmega328" (Datenblatt)
Wichtiger als die Pinbelegung des ICs ist aber welcher dieser Pins mit welchem nach außen geführten Anschluß des Arduino verbunden ist:


Man sieht, daß die Anschlüsse A0 bis A7 größtenteils dem Port C (PC0 - PC5) des Controllers entspechen, PC6 ist mit Reset fest verbunden und damit praktisch nicht mehr anders nutzbar. Die Pins PD0 und PD1 sind im Controller als Zweitfunktion mit den Kommunikationssignalen RXD und TXT belegt. Am "losen" Controller könnte man diese verwenden, beim Arduino ist hier aber schon der boardeigene USB-Wandler angeschlossen, der für die Programmierung erforderlich ist (solange man kein Programmiergerät besitzt).
Die Arduino-Software ;o(
Wohl um die Eingewöhnung für Laien zu vereinfachen
ignoriert die Arduinosoftware die beschränkten Resourcen und die 8-Bit-Natur des
Controllers und tut so als hätte man es mit einem PC zu tun. Durchnummerierte
Anschlüsse
befinden sich z.B. auf verschiedenen Ports ( D7/ D8
-> PD7 / PB0) und müßen im Hintergrund in mehreren Rechenschritten verarbeitet
werden, Standardvariablen nutzen pauschal mehr als 8 Bit und das Kommazahlen
eigentlich gar nichts in µControllern zu suchen haben ist auch keine Erwähnung
wert. Das die
eine serielle Schnittstelle (UART) rein garnichts mit
Software-emulierten Notlösungen gemein hat, scheint auch nicht wesentlich zu sein, wenn
die Art (soft/hard) nur ein Parameter ist. Der Controller besitzt außerdem einen umfangreich
konfigurierbaren 16Bit-Timer, der sehr genaue Takte, Zeitbasen oder präzise
Analogwerte per PWM generieren kann und außerdem als extrem schneller Zähler
oder vollautomatsierter Hardware-Teiler für Eingangstakte verwendbar wäre, wenn die Arduino-IDE ihn nicht selbst für den Basistakt ver(sch)wenden
würde. Die Verwendung der interruptgesteuerten Eingänge, die sofortige,
priorisierte
Reaktionen auf Signale ohne Pin-Abfrage ermöglichen könnten den Basistakt
beeinflussen und wird vermieden.
Kurz: Um den Anwender nicht mit technischen Details zu nerven benutzt Arduino µController mit viel Speicher und macht sinnlose Resourcen- und Geschwindigkeitsverschwendung zum Standard. Schnelle Hardwarefunktionen mit höherer Priorität werden zugunsten der eigenen Zeitbasis ígnoriert.
Um zu zeigen, daß es genau so einfach und laienfreundlich, aber ganz ohne irgendwelche Beschränkungen geht verwende ich hier in allen Beispielen BASCOM, das schnelle Erfolge ermöglicht und dabei noch das Verständnis für die Funktionalität des Controllers fördert.