Compatibility Mode 18F2620 HI-TECH
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache C  |  Compatibility Mode 18F2620 HI-TECH « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Compatibility Mode 18F2620 HI-TECH  (Gelesen 493 mal)
 
wolfi_b
Jr. Member
**
Offline Offline

Beiträge: 84


Profil anzeigen
« am: Dezember 23, 2011, 20:27:44 »

Hi,

ich habe vor kurzem angefangen mich mit dem HI-TECH Compiler zu beschäftigen (vorher nur CCS).
Bei dem unten stehenden Beispiel habe ich einen 18F2620 verwendet, was ich da nicht verstehe ist warum ich die Interrupt Prioritäten aktivieren muss (IPEN=1) damit der Interrupt ausgelöst wird. Ich würde lieber im Compatibility Mode bleiben...
Was habe ich da übersehen?

Danke, LG

Code:
#pragma config IESO = OFF, FCMEN = OFF, OSC = XT
#pragma config BORV = 0, BOREN = OFF, PWRT = OFF
#pragma config WDTPS = 1, WDT = OFF
#pragma config MCLRE = OFF, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = PORTC
#pragma config DEBUG = OFF, XINST = OFF, LVP = OFF,/*BBSIZ = 1024, 18F2680 only*/, STVREN = OFF, 
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
#pragma config CPD = OFF, CPB= OFF
#pragma config WRT3 = OFF, WRT2 = OFF, WRT1 = OFF, WRT0 = OFF
#pragma config WRTD = OFF, WRTB = OFF, WRTC = OFF
#pragma config EBTR3 = OFF, EBTR2 = OFF, EBTR1 = OFF, EBTR0 = OFF
#pragma config EBTRB = OFF

#include <htc.h>

volatile char rtc_postscaler;

void init(void) {
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b00000000;
ADCON1=0b00001111; //all ANx digital
LATA=0b00000000;
LATB=0b00000000;
LATC=0b00000000;

//Timer2 RTC config
T2CON=0b00001111; //prescaler 16:1 and postscaler 2:1
PR2=249; //250 counts
TMR2IE=1; //enable timer2 interrupt
IPEN=1; //why???????
}

void main(void) {
init();
//ei();
GIE=1;
while (1) {
}
}

void interrupt interrupt_isr(void){
if((TMR2IE)&&(TMR2IF)){
rtc_postscaler++;
if(rtc_postscaler==125) {
rtc_postscaler=0;
LATC4=1;
}
if(rtc_postscaler==10) {LATC4=0;}
TMR2IF=0;
}
}
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #1 am: Dezember 27, 2011, 12:10:51 »

Hallo,

für mich sieht das aud die Schnelle soweit richtig aus, ich weiß im Moment auch nicht woran es liegt.
Hast du mittlerweile Fortschritte gemacht?

Gruß
Stefan
Gespeichert

wolfi_b
Jr. Member
**
Offline Offline

Beiträge: 84


Profil anzeigen
« Antworten #2 am: Dezember 30, 2011, 09:24:23 »

Hi,
nein ich habe die Ursache oder meinen Denkfehler noch nicht gefunden.
LG
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #3 am: Januar 02, 2012, 17:05:43 »

Zitat
Was habe ich da übersehen?

Im Compatibility Mode gibt es auch noch das Bit PEIE im INTCON-Register, welches die „peripheral interrupts“ freischaltet, zu denen auch der Timer2-Interrupt gehört. In Deinem Code wird dieses Bit nicht gesetzt -> kein Interrupt.

Bei aktivierter Interrupt-Priorität funktioniert es, da in diesem Fall das GIE-Bit alle aktivierten High-Priority-Interrupts zulässt (wird dann auch GIEH genannt) und das PEIE-Bit alle aktivierten Low-Priority-Interrupts freischaltet (wird entsprechend dann als GIEL-Bit bezeichnet).

Viele Grüße
Bernd
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.041 Sekunden mit 18 Zugriffen.
 
Top! Top!