Registerprogrammierung

In letzter Zeit habe ich zwei Beispiele von Registerprogrammierung bzw. Registermanipulation im Zuge meiner Projekte gezeigt, nämlich "Pin Change Interrupt" und "Timer-Interrupt". Da die Erklärungen dazu aber in den Projekten "versteckt" sind, habe ich mich entschlossen, einen eigenen Bereich dafür zu schaffen und mit "Fast PWM" auch gleich ein neues Thema einzustellen. In der Zwischenzeit sind noch ein paar Themen dazugekommen ...


Alle Registermanipulationen beziehen sich auf den Arduino Uno bzw. Arduinos mit Atmega328P - Mikrocontroller (Nano, Mini) - und wo angegeben - für den Attiny45/85. Bei der Verwendung von anderen Mikrocontrollern sind die entsprechenden Anpassungen den jeweiligen Datenblättern zu entnehmen.


Bitmanipulation

Wie man einzelne Bits innerhalb eines Registers setzt, löscht, invertiert oder abfragt, ohne die anderen Bits zu verändern, ist hier zu finden.


Ein-Ausgangsports

Wenn man auf die Ein-Ausgabe-Pins ohne die Arduino-Anweisungen digitalRead() und digitalWrite() zugreifen möchte, kann man das direkt über die Port-Register erledigen. Einfach in der Programmierung, schneller als Faktor 10 im Programmablauf .....


Pin Change Interrupt

Wer mit den zwei Standard-Interrupt-Pin eines Unos nicht auskommt, kann jeden Digital- oder Analog-Pin mit einem "Pin Change Interrupt" belegen. Dazu sind nur Manipulationen an drei Registern erforderlich. Wie es geht, zeige ich hier.

Auch für Attiny!


Timer Interrupt

Will man gesichert in regelmäßigen Zeitabständen Aktionen durchführen, kommt man um Timer-Interrupts nicht herum. Wie das geht, zeige ich hier am Beispiel Arduino Uno Timer1.

Auch für Attiny!


Fast PWM

NEU: Ergänzt um "Nachtrag zu Pulsweite setzen"

Hier zeige ich, wie durch Registerprogrammierung die Möglichkeiten des Uno's bei der Pulsweitenmodulation (PWM) in Bezug auf Auflösung und PWM-Frequenz gegenüber der Standard-Arduino-Funktion "analogWrite..." erweitert werden können.


Watchdog Time-out Interrupt

Wie man zyklische Vorgänge mit Hilfe des Watchdog Time-out Interrupt auslöst, ist hier zu sehen.

Auch für Attiny!