PIC18f4550 Experimentier Platine
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
Schaltplan
• Download als PDF
• Download als Target V3001
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:
- MCHPFSUSB Framework enthält eine Windows-Applikation
- MPHidFlash Open Source Bootloader-Applikation Windows, Linux und Mac OS X werden unterstützt
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:
- PIC Port D0 = LCD RS
- PIC Port D1 = LCD RW
- PIC Port D2 = LCD E
- PIC Port D4 = LCD D4
- PIC Port D5 = LCD D5
- PIC Port D6 = LCD D6
- PIC Port D7 = LCD D7
MPLAB Projekt LCD Download
weiteres folgt noch........
Bezugsquellen
Teile sollten eigentlich in jedem "guten" Elektronikladen erhältlich sein