00001 ; PICCOLO project
00002 ; Copyright (c) 2009-2010 Istvan Cserny (cserny@atomki.hu)
00003 ;
00004 ; Ez a header állomány gondoskodik a RESET és az interupt vektorok
00005 ; áthelyezéséről, s a PIC18F14K50 és a PIC18F4550 kísérleti áramkörök
00006 ; közötti triviális eltérések feloldásáról.
00007 ;
00008 ;=== BECSATOLÁSOK ====================================================
00009 #include <p18cxxx.inc>
00010
00011 ;=== KONFIGURÁCIÓS BITEK BEÁLLÍTÁSA ===================================
00012 #ifdef __18F4550 ; Konfigurációs bitek PIC18F4550-hez
00013 config PLLDIV = 5 ; PLL osztó 20 MHz-es kristályhoz
00014 config CPUDIV = OSC1_PLL2 ; CPU órajel forrása a 96MHz PLL/2
00015 config USBDIV = 2 ; USB órajel forrása a 96MHz PLL/2
00016 config FOSC = HSPLL_HS ; HS oszcillátor és PLL a jelforrás
00017 config FCMEN = OFF ; Fail Safe Clock Monitor tiltása
00018 config IESO = OFF ; Belső/külső oszcillátor tiltása
00019 config PWRT = ON ; Bekapcsoláskor 62 ms várakozás
00020 config BOR = ON ; Brown our Reset engedélyezve
00021 config BORV = 1 ; Reset szint = 2,7 V
00022 config VREGEN = ON ; VUSB belső stabilizátorról megy
00023 config WDT = OFF ; Watchdog timer letiltva
00024 config WDTPS = 256 ; Watchdog utószámláló beállítása
00025 config MCLRE = ON ; MCLR (reset) bemenet engedélyezve
00026 config LPT1OSC = OFF ; T1OSC nagyobb teljesítményű üzemmód
00027 config PBADEN = OFF ; PORTB<4:0> digitális I/O-ként inicializálódik
00028 config CCP2MX = ON ; RC1 legyen a CCP2 kimenet
00029 config STVREN = ON ; A verem túlcsordulása RESET-et okoz
00030 config LVP = OFF ; Alacsonyfeszültségű programozás letiltva
00031 config ICPRT = OFF ; Dedikált programozói kivezetés nincs
00032 config XINST = OFF ; Extended Instruction Set
00033 config DEBUG = OFF ; Háttér nyomkövetés letiltva, RB6/7 normál I/O
00034 config CP0 = OFF ; Kódvédelem kikapcsolva
00035 config CP1 = OFF
00036 config CP2 = OFF
00037 config CP3 = OFF
00038 config CPB = OFF
00039 config CPD = OFF
00040 config WRT0 = OFF ; Írásvédelem kikapcsolva
00041 config WRT1 = OFF
00042 config WRT2 = OFF
00043 config WRT3 = OFF
00044 config WRTB = OFF ; Boot Blokk írásvédelem kikapcsolva
00045 config WRTC = OFF ; Konfigurációs blokk írásvédelem kikapcsolva
00046 config WRTD = OFF ; EEPROM adattár írásvédelme kikapcsolva
00047 config EBTR0 = OFF ; Táblázatolvasás ne legyen letiltva
00048 config EBTR1 = OFF
00049 config EBTR2 = OFF
00050 config EBTR3 = OFF
00051 config EBTRB = OFF ; Boot blokk táblaolvasása ne legyen letiltva
00052
00053 #else
00054 #ifdef __18F14K50 ; PIC18F14K50 konfiguráció 12 MHz-es kristályhoz
00055 config CPUDIV = NOCLKDIV ; Nem osztjuk le az órajelet (48 MHz)
00056 config USBDIV = OFF ; USB-hez nem osztjuk le az órajelet
00057 config FOSC = HS ; HS oszcillátor (12 MHz)
00058 config PLLEN = ON ; 4x PLL engedélyezés (4x12 = 48 MHz)
00059 config PCLKEN = ON ; Elsődleges órajelgenerátor engedélyezve
00060 config FCMEN = OFF ; Fail Safe Clock Monitor tiltása
00061 config IESO = OFF ; Belső/külső oszcillátor átkapcsolás tiltása
00062 config PWRTEN = ON ; Bekapcsoláskor 62 ms várakozás
00063 config BOREN = SBORDIS ; Brown-out Reset hardveresen engedélyezve
00064 config BORV = 27 ; Reset szint = 2,7 V
00065 config WDTEN = OFF ; Watchdog timer letiltva
00066 config WDTPS = 256 ; Watchdog utószámláló beállítása
00067 config MCLRE = OFF ; MCLR (reset) bemenet letiltva, RA3 bemenet
00068 config HFOFST = ON ; Rendszer óra nem vár HFINTOSC-ra
00069 config STVREN = ON ; A verem túlcsordulása RESET-et okoz
00070 config LVP = OFF ; Alacsonyfeszültségű programozás letiltva
00071 config XINST = OFF ; Extended Instruction Set
00072 config BBSIZ = ON ; 4 kB boot blokk méret (HID bootloaderhez)
00073 config CP0 = OFF ; Kódvédelem kikapcsolva
00074 config CP1 = OFF
00075 config CPB = OFF
00076 config WRT0 = OFF ; Írásvédelem kikapcsolva
00077 config WRT1 = OFF
00078 config WRTB = ON ; Boot Blokk írásvédelem bekapcsolva
00079 config WRTC = OFF ; Konfigurációs blokk írható
00080 config EBTR0 = OFF ; Táblázatolvasás ne legyen letiltva
00081 config EBTR1 = OFF
00082 config EBTRB = ON ; Boot Blokk táblaolvasás letiltva
00083 #else
00084 error "A választott mikrovezérlő típust nem támogatja a PICCOLO project!"
00085 #endif
00086 #endif
00087
00088 ;=== VEKTOROK ÁTHELYEZÉSE =============================================
00089 ; Ha a felhasználói programban használja a programmegszakításokat, akkor
00090 ; a program legelején definiálni kell az "USE_INTERRUPT" szimbólumot
00091 ; és gondoskodni kell a programmegszakításokat kiszolgáló eljárásokról
00092 ; hi_isr és lo_isr nevű belépési pontokkal!
00093 ;
00094 ; Ha a USE_INTERRUPT szimbólum nincs definiálva, akkor az alábbi kód
00095 ; egy-egy "return" utasítást rak be az interrupt vektorok helyére, ami
00096 ; egy véletlenül elszabadult és lekezeletlen programmegszakítás
00097 ; esetén visszatér a főprogramhoz, de letiltva hagyja a
00098 ; programmegszakítást.
00099 ;----------------------------------------------------------------------
00100 RST CODE
00101 goto main ; RESET vektor: ugrás a főprogramhoz
00102 fill 0,4
00103 #IFDEF USE_INTERRUPT
00104 extern hi_isr ; Magas prioritású interrupt vektor:
00105 goto hi_isr ; ugrás az interrupt kiszolgáló eljáráshoz
00106 #ELSE
00107 return ; Letiltva hagyjuk az interruptot!!!
00108 nop
00109 #ENDIF
00110 fill 0,0xc
00111 #IFDEF USE_INTERRUPT
00112 extern lo_isr ; Alacsony prioritású interrupt vektor:
00113 goto lo_isr ; ugrás az interrupt kiszolgáló eljáráshoz
00114 #ELSE
00115 return ; Letiltva hagyjuk az interruptot!!!
00116 #ENDIF
00117
00118 ;=== DEFINÍCIÓK =======================================================
00119 #ifdef __18F14K50
00120 #define LEDport LATC
00121 #define LEDtris TRISC
00122 #define LED1 LATC,LATC0
00123 #define LED2 LATC,LATC1
00124 #define LED3 LATC,LATC2
00125 #define LED4 LATC,LATC3
00126 #DEFINE SW1 PORTA,RA3
00127 #else
00128 #ifdef __18F4550
00129 #define LEDport LATD
00130 #define LEDtris TRISD
00131 #define LED1 LATD,LATD0
00132 #define LED2 LATD,LATD1
00133 #define LED3 LATD,LATD2
00134 #define LED4 LATD,LATD3
00135 #DEFINE SW1 PORTB,RB4
00136 #else
00137 error "A választott mikrovezérlő típust nem támogatja a PICCOLO project!"
00138 #endif
00139 #endif