PIC18f4550 Experimentier Platine

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von sascha focus

Hier stelle ich eine PIC18F USB-Experimentierplatine vor, benutzbar mit allen PIC18F4550/4553 Typen (DIP40 Gehäuse).

Features

  • Spannungsversorgung über USB oder ext. Stromversorgung (über Jumper wählbar)
  • USB-Anschluß (über Jumper abschaltbar)
  • Ports an 10pol. Wannenstecker herausgeführt incl. Versorgungsspannung
  • LEDs an Port RD0-3 (über Jumper abschaltbar)
  • ISP Anschluss für PICKIT2/MPLAB ICD2
  • Taster für Reset, Bootloader und einen zur freien Verfügung
  • Die Stromaufnahme bei aktiviertem Bootloader liegt bei knapp 40mA

Schaltplan und Bilder

Software

Zurzeit nutze ich folgende Software, die Microchip zum kostenlosen Download anbietet:

  • MPLAB IDE V8.14
  • MPLAB C Compiler for PIC18 MCUs V3.21 Student edition
  • MCHPFSUSB Framework v2.3

Vor kurzem nutzte ich noch den Framwork V1.3. Da ich aber bei VISTA dauernd Treiberprobleme hatte, nutze ich jetzt den aktuellen HID-Bootloader aus dem Framework v2.3.

HID-Bootloader Firmware

HID-Bootloader PC-Applikationen:

Codebeispiele

Alle folgenden C-Codebeispiele sind mit MPLAB/C18 von Microchip erstellt.

Interrupt Vektor Remapping

Um Interrupts zu nutzen, müssen diese bei der Nutzung eines Bootloaders remapped werden. Bei dem HID-Bootloader sieht es im Code so aus:

/** V E C T O R  R E M A P P I N G *******************************************/
#pragma code

extern void _startup (void);        // See c018i.c in your C18 compiler dir
#pragma code _RESET_INTERRUPT_VECTOR = 0x1000
void _reset (void)
{
    _asm goto _startup _endasm
}
#pragma code _HIGH_INTERRUPT_VECTOR = 0x1008
void _high_ISR (void)
{
        _asm goto high_isr _endasm
}

#pragma code _LOW_INTERRUPT_VECTOR = 0x1018
void _low_ISR (void)
{
    _asm goto low_isr _endasm
}

/******************************************************************************
 * Function:        void high_isr(void)
 *****************************************************************************/
#pragma interrupt high_isr
void high_isr(void)
{
// Hier kommt der Code für die Interrupt hin
}

/******************************************************************************
 * Function:        void low_isr(void)
 *****************************************************************************/
#pragma interruptlow low_isr
void low_isr(void)
{
// Hier kommt der Code für die Interrupt hin
}

LCD betreiben

Hier ein kleines Beispiel zum Ansteuern eines HD44780 kompatiblen LCDs im 4Bit Modus. Angeschlossen ist es an Port D. Der Jumper für die LEDs kann gesteckt bleiben. Erstell ist es mit dem Microchip Application Maestro. Hinzugefügt habe ich die erforderlichen Delay-Routinen. Getested mit einem PC-1604A 16X4 LC-Display von Pollin.

Pinbelegung:

  1. PIC Port D0 = LCD RS
  2. PIC Port D1 = LCD RW
  3. PIC Port D2 = LCD E
  4. PIC Port D4 = LCD D4
  5. PIC Port D5 = LCD D5
  6. PIC Port D6 = LCD D6
  7. PIC Port D7 = LCD D7

PIC18F LCD.JPG

MPLAB Projekt LCD Download

weiteres folgt noch........

Bezugsquellen

Teile sollten eigentlich in jedem "guten" Elektronikladen erhältlich sein