Mikrocontroller

Jeder Embedded Programmierer kennt das: Man will nur eben mal schnell einen ADC oder einen Timer in Betrieb nehmen. Eigentlich eine simple Aufgabe. Aber bis alle Register richtig gesetzt sind und die Peripherie wunschgemäss läuft, vergeht viel mehr, wie man eigentlich geplant hatte. Hier hilft die Sourcecodesammlung von electronicsplanet.ch weiter.

Die Sourcecode Sammlung enthält einfache Codebeispiele für die AT-Mega Mikrocontroller von Microchip. Die Beispielprogramme sind vollständig läuffähige Codes, die jeweils eine einzelne Controllerperipherie in Betrieb nehmen. Die Peripherie steuert dabei immer einige Ausgänge an, damit die Funktion beobachtet werden kann.

Wer an der Inbetriebnahme einer Mikrocontroller Peripherie scheitert, kann diese einfachen Programme testweise separat auf dem Controller laufen lassen und sie anschliessend in das eigene Programm intrgrieren. Viel Erfolg!
ATMega8
Timer 0
Timer0 Overflow
Der ATmega8 Timer 0 mit Overflow und anzeige des MSB vom Timer Register
Timer0 Interrupt
Der ATmega8 Timer0 löst bei Overflow einen Interrupt aus
Timer 1
Timer1 Normal Mode
Der ATmega8 Timer 1 mit Overflow. Ein Digitalport visualisiert das MSB vom Zählerregister
Timer1 CTC
Der ATmega8 Timer1 im CTC Mode
Timer1 Fast PWM
Der ATmega8 Timer1 im Fast PWM Mode
Timer1 Phase Correct PWM
Der ATmega8 Timer1 im Phase Correct PWM Mode
Timer1 Servo
Der ATmega8 Timer1 erzeugt ein Signal für einen Modellbauservo
ADC
ADC Free Running
Der ADC läuft im free running mode und liest so viele Werte wie möglich ein
ADC Single Conversion
Der ADC führt genau eine einzige Konversion aus
Single Conversion mit Interrupt
Der ADC führt nur eine Wandlung aus und läst dann einen Interrupt aus
Free Running mit Interrupt
Der ADC führt so viele Wandlungen aus, wie er kann und erzeugt jedes mal einen Interrupt
Externe Interrupts
Ext Int 0 falling
Der externe Interrupt 0 reagiert auf eine fallende Flanke
Ext Int 0 rising
Der externe Interupt 0 reagiert auf eine steigende Flanke
Ext Int 0 f/r
Der externe Interrupt 1 reagiert auf steigende und fallende Flanken
Ext Int 1 falling
Der externe Interrupt 1 reagiert auf eine fallende Flanke
Ext Int 1 rising
Der externe Interupt 1 reagiert auf eine steigende Flanke
Ext Int 1 f/r
Der externe Interrupt 1 reagiert auf steigende und fallende Flanken
ATMega16
Timer 0
Timer0 Normal Mode
ATmega16 Timer 0 im Nomral Mode erzeugt Rechtecksignale mit dem Overflow Interrupt
Timer0 Fast PWM
Fast PWM mit dem Timer 0 Beispielcode
Timer0 CTC Mode
ATmega16 Timer0 CTC Mode Initialisierung
Timer0 Phase Correct PWM
ATmega16 Timer0 im Phase correct PWM Mode mit Interrupts
Timer 1
Timer1 Normal Mode
ATmega16 Timer1 im Normal Mode C Code
Timer1 Fast PWM
ATmega16 Timer1 Fast PWM C Example
Timer1 CTC Mode
ATmega16 Timer1 CTC Mode C Beispiel
Timer1 Phase Correct PWM
ATmega16 Timer1 im Phase correct PWM Mode mit Interrupts
ADC
ADC Single Conversion
ATmega16 ADC im Single Conversion Mode C Codebeispiel
ADC Free Running
ATmega16 ADC im Free Running Mode C Example
Autotrigger mit Timer0
ATmega16 ADC wird über den Timer0 Compare Event getriggert
ADC mit Interrupt
Der ADC löst nach der Wandlung den ADC Interrupt aus
Externe Interrupts
Ext Int 0 falling
ATmega16 Externer Interrupt 0 reagiert auf fallende Flanke
Ext Int 1 falling
ATmega16 Externer Interrupt 1 reagiert auf fallende Flanke
Ext Int 2 rising
ATmega16 Externer Interrupt 2 reagiert auf steigende Flanke
ATMega32
Timer 0
Timer0 Normal Mode
ATmega32 Timer0 Normal Mode mit Interrupt Demo
Timer0 Fast PWM
ATmega32 Timer0 Fast PWM Beispielcode
Timer0 CTC
ATmega32 Timer0 CTC Mode Initialisierung
Timer0 Phase Correct PWM
ATmega32 Timer0 im Phase correct PWM mit Interrupts
Timer 1
Timer1 Normal Mode
ATmega32 Timer1 im Normal Mode betrieben
Timer1 Fast PWM
ATmega32 Timer1 Fast PWM Sourcecode
Timer1 CTC Mode
ATmega32 Timer1 CTC Mode C Example
Timer1 Phase Correct PWM
ATmega32 Timer1 Phase correct PWM Mode mit Interrupts
ADC
ADC Single Conversion
ATmega32 ADC im Single Conversion Mode C Codebeispiel
ADC Free Running
ATmega32 ADC im Free Running Mode C Example
Autotrigger mit Timer 0
ATmega32 ADC wird über den Timer0 Compare Event getriggert
ADC Interrupt
Der ADC löst nach der Wandlung den ADC Interrupt aus
Externe Interrupts
Ext Int 0 falling
ATmega16 Externer Interrupt 0 reagiert auf fallende Flanke
Ext Int 1 falling
ATmega32 Externer Interrupt 1 bei fallender Flanke
Ext Int 2 rising
ATmega32 Externer Interrupt beisteigender Flanke