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