Signal LED
1 Infos Mikrocontroller
dsPIC33-Mikrocontroller

Ein Mikrocontroller (kurz MC) ist ein Minirechner bei dem alle notwendigen Komponenten in einem Chip integriert sind. Der 16 Bit MC dsPIC33EP32MC204 enthält eine CPU mit 7,347 MHz, 4 kB RAM, 32 kB Flash, 36 I/Os, 5 Timer, AD-Wandler, 6 PWM Ausgänge und Schnittstellen (UART, SPI, I2C).

Bei einem normalen PC steht nur ein Monitorprogramm (BIOS) im EPROM. Das Programm wird vom BIOS aus gestartet und von einem Datenträger ins RAM gelesen (von Neumann). Dadurch hat man eine höhere Flexibilität.

Bei einem Mikrocontroller hingegen wird das Programm direkt im EPROM bzw. Flash gespeichert und startet sofort. Daten während des Programmablaufs werden im RAM gespeichert (Havard). Dadurch ist der Mikrocontroller sofort einsatzbereit.

2 Steuern der Mikrocontrollerpins
Pins des Mikrocontrollers

Zum Steuern der 36 Pins stehen verschiedene Steuerregister zur Verfügung: TRISA, LATA, PORTA und ANSELA. Die einzelnen Pins sind durchnummeriert von A0 bis A15, B0 bis B15 und C0 bis C16. Entsprechend gibt es neben dem TRISA-Register noch das TRISB- und TRISC-Register.

Das TRISA-Register steuert, ob der gewünschte Pin Aus- (0) oder ein Eingang (1) ist. Das LATA-Register schaltet den Ausgang auf 3,3 V (1) oder 0 V (0). Mit dem PORTA-Register liest man einen Eingang aus und das ANSELA-Register entscheidet, ob der Eingang analog oder digital ist.

Hier ein Programmierbeispiel um den Portpin B15 zu steuern:
TRISBbits.TRISB15 = 0; //Pin B15 ist Ausgang
LATBbits.LATB15 = 1 //Pin B15 ist logisch 1 (3,3V)

3 Pinbelegung LIME 1
Pinbelegung LIME 1
LEDs SG PWM 9x
B14 LED1 PWM1H
B15 LED2 PWM1L
B12 LED3 PWM2H
B13 LED4 PWM2L
B10 LED5 PWM3H
B11 LED6 PWM3L
B9 LED7
B8 LED8 + Signalgeber
C8 PWM_En
LCD 7x
A7 LCD Enable E
A8 DataBit 4
C4 DataBit 5
C5 DataBit 6
C6 DataBit 7
C9 ReadSelect RS
B1 ReadWrite RW
SPI
C3 SCK
A4 MOSI
A9 MISO
B0 CSN
ANALOG IN: 6x
A1 AN1 R1 Poti1
C2 AN8 R2 Poti2
C0 AN6 INA1
A1 AN1 EXT1
B3 AN5 EXT2
C1 AN7 EXT3
Taster 5x
B7 switch S0
B6 switch SU
B5 switch SD
B4 switch SR
B2 switch SL
4 Pinbelegung LIME 2
Pinbelegung LIME 2
LEDs SG PWM 8x
B14 LED1 PWM1H
B15 LED2 PWM1L
B12 LED3 PWM2H
B13 LED4 PWM2L
B10 LED5 PWM3H
B11 LED6 PWM3L
A10 LED7
A7 LED8 + Signalgeber
LCD 6x
C9 LCD Enable E
C8 DataBit 4
C7 DataBit 5
C6 DataBit 6
B9 DataBit 7
A8 ReadSelect RS
Taster 4x
B8 switch S0
B7 switch S1
B6 switch SU + encoder
B5 switch SD + encoder
ANALOG IN: 4x
A0 AN0 R1 Poti
A1 AN1 EXT1
B0 AN2 EXT2
B1 AN3 EXT3
SPI
C3 SCK
A4 MOSI
A9 MISO
B0 CS1 TC77
C1 CS2 Bosch Sensor
C2 CS3 RTC Microchip
5 C-Programmieren beim Mikrocontroller
C-Programm

In der Entwicklungsumgebung MPLAB wird ein C-Compiler zum Programmieren des dsPIC33-Mikrocontrollers bereitgestellt. Ein C-Programm besteht aus folgenden Modulen:

  1. Headerdateien: Bibliothek mit Mikrocontrollertyp #include „PIC33EP32MC204.h“
  2. Definitionen: zum Speichern von Konstanten und Makros #define ...
  3. Prototypen: zur Definition von Zusatzfunktionen void DelayMS (void);
  4. Hauptfunktion: Hier stehen Anweisungen, Entscheidungen, Schleifen if(i == 1) ...
  5. Zusatzfunktionen zum Auslagern von Programmteilen void DelayMS (void){ ...

Das Programm wird kompiliert, d.h. übersetzt (build all) und dann mit Hilfe des Programmers via USB übertragen (program). Hinweis: Spannungsversorgung (3,25 V) aktivieren.



Aufgabe 1 Die erste LED leuchtet

Schaltplan LED

Alle LEDs sind über einen Vorwiderstand angeschlossen. Die Pinbelegung der einzelnen LEDs kann man aus den Infos entnehmen.
Man beachte das über den DIP-Schalter auf dem Board die LEDs abgeschaltet werden können, damit man die Pins flexibel für eigene Schaltungen verwenden kann.

  1. Erstelle das Projekt 01 Signal LED und schreibe die Datei 01-Signal-LED-1.c, in der die erste LED L1 leuchten soll.
  2. Teste weitere LEDs.
  3. Welche Konsequenz hat es, wenn man die while(1){}-Schleife weglässt.
Quelltext Signal-LED

Aufgabe 2 Makros

Makros

Für das übersichtliche Programmieren werden Makros eingesetzt. So können komplizierte Befehle durch aussagekräftige Namen ersetzt werden.

  1. Schreibe die Datei 01-Signal-LED-2.c, in der du Makros einsetzt.
  2. Lass dir eigene Makros einfallen.

Entspann dich erst mal ...

Wie lernt man?

Der kleine Max soll Blumen kaufen. Mutter sagt: "Du Max, ich habe Blumen beim Gärtner Grün bestellt, hol mir die doch bitte. Ich erklär dir wie du hinkommst: Du gehst die Straße runter, dann rechts, zwei Häuserblock weiter links, dann geradeaus ... Hast du verstanden?" Max antwortet "ja" und geht los. Nach 2 Stunden kommt er ohne Blumenstrauß zurück. Wieso?

Antwort: Die Mutter hat die verkehrte Frage gestellt. Sie hätte Max bitten sollen, den Weg zu wiederholen.

Investiere für dich und deine Freunde in gute Fragen wie bspw.: "Was hast du dir bei dieser Lösung gedacht?"

Aufgabe 3 Einbinden der Hardwarekonfiguration

Bibliothek

In Bibliotheken werden verschiedene Programmteile ausgelagert, um das eigentliche Programm übersichtlich zu halten. In der Bibliothek Lime1config.h und Lime1config.c, bzw. Lime2config.h und Lime2config.c sind alle Pins der Demoboards LIME 1 und LIME 2 entsprechend der Hardwarekonfiguration zugeordnet. Dies erspart dir jede Menge Arbeit und mögliche Fehler.

  1. Programmiere (01-Signal-LED-3.c) in der du die Bibliotheken zur Hardwarekonfiguration von LIME1, bzw. LIME2 einbindest.
  2. Teste die verschiedenen LEDs.

© mylime.info