MCU Grundlagen

Wenn man AVR Mikrocontroller programmieren möchte, muss man sich zwangsweise ein wenig mit der Architektur der Chips  auseinandersetzen und verstehen, wie Mikrocontroller funktionieren. Im Prinzip kann man sagen, dass sich im Prozessor ein Rechenwerk befindet, dass schrittweise mit den Informationen (dem Programmcode) aus dem Flashspeicher gefüttert wird. Wie genau jetzt die Codierung der Befehle aussieht, die sich im Flash befinden, spielt jetzt hier erstmal eine nebensächliche Rolle.

Neben dem Rechenwerk sind je nach Typ des Mikrocontrollers verschiedene Hardwarefunktionen integriert wie z.B. Timer, Watchdog, I2C-Bus usw. Um diese Funktionen nutzen zu können, müssen die entsprechenden Register konfiguriert werden. Selbst wenn man die GPIO-Pins des Prozessors als Ein- bzw. Ausgang verwenden möchte, müssen die entsprechenden Register konfiguriert werden.

Nimmt man den ATMega8 als Beispiel und werfen einen Blick ins Datenblatt:ATMega8 Pinout

Die Pins des Mikrocontrollers sind in Gruppen mit maximal 8Bit organisiert. Für gewöhnlich heißen diese Gruppen dann PORTA, PORTB, PORTC usw. Jeder PORT besteht aus den drei Registern PORTn, PINn und DDRn. Mit dem DDRn-Register stellt man ein, ob die entsprechenden Pins als Ein- oder Ausgang arbeiten sollen. Mit dem PINn-Register lässt sich der Eingangspegel lesen, also ob 5V anliegt oder nicht. Und mit dem PORTn-Register kann man HIGH oder LOW Pegel an den Pin Anlegen, wenn er als Ausgang arbeitet.

 

Nehmen wir als konkretes Beispiel mal PORTB und legen an PB2 HIGH-Pegel an. Als erstes müssen wir nun im Datenrichtungsregister des PORTS einstellen, dass wir PB2 als Ausgang verwenden möchten. Dazu schreiben wir eine “1” in das DDRB an der Stelle DDB5 mit dem Befehl: DDRB |= (1<<DDB5);

 

Das DDRB besteht aus den Bits [DDB7][DDB6][DDB5][DDB4][DDB3][DDB2][DDB1][DDB0].

Jedes dieser Bits repräsentiert einen Pin des Ports.

 

 

bei Zeiten gehts hier weiter…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.