kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Programmierung eines Arduino-Micro-Boards

(EN google-translate)

(PL google-translate)

Zum leichteren Einstieg in die Programmierung eines Arduino-Boards, werden in den folgenden Unterkapitel eine Reihe an ersten kleinen Schaltungen mit zugehörigen Programmen gegeben und eine kleine Aufgabe ergänzt, die selbsttätig zu lösen ist.

Pinlayout des Arduino-Micro.

Bild 0-1: Pinlayout des Arduino-Micro.

  • Die Nummern neben den Pins bezeichnen digitale Ein- und Ausgänge in der Nummerierung, wie sie im Programm benutzt werden muß.
  • Z.B. 1 / TX heißt: als alternative Funktion kann auch der TX-Pin als digitaler Ein- oder Ausgang benutzt werden und wird im Programm unter der Nummer 1 angesprochen.
Weitere Informationen #pdf arduino-micro-schematic.pdf arduino-micro-schematic.pdf - Anschlußschema.
Pinzuordnung zwischen Chip und Board.

Bild 0-2: Pinzuordnung zwischen Chip und Board.

Spezifikation des Arduino-Micro-Boards

  • Microcontroller ATmega32u4
  • Operating Voltage 5V
  • Input Voltage (recommended) 7-12V
  • Input Voltage (limits) 6-20V
  • Digital I/O Pins 20
  • PWM Channels 7
  • Analog Input Channels 12
  • DC Current per I/O Pin 40 mA
  • DC Current for 3.3V Pin 50 mA
  • Flash Memory 32 KB (ATmega32u4) of which 4 KB used by bootloader
  • SRAM 2.5 KB (ATmega32u4)
  • EEPROM 1 KB (ATmega32u4)
  • Clock Speed 16 MHz
  • #pdf
  • Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
  • Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf - Vollständiges Datenblatt des ATmega32u4 von Atmel.

Praktische Hinweise (schon einmal vorab für die späteren Übungen)

Beim Arduino kann man nicht voraussetzen, dass die jeweils konfigurierten Register in ihrem Startzustand sind. Typisch wäre, dass jedes Bit mit Null initialisiert wurde. Statt dessen führt eine Arduino-eigene Initialisierung Veränderungen an den Registern insbesondere der Timer durch.

Insbesondere wird der Timer0 von der Arduino-Firmware verwendet und ist deshalb vorkonfiguriert.

D.h. man muß nicht nur die Bits setzen, die gesetzt werden müssen, sondern auch die anderen löschen.

Einfache Abhilfe: Statt TCCR1A |= ... einfach TCCR1A = ... schreiben, so werden Bits, die gelöscht werden müssen auf Null gesetzt.