#pragma config FOSC=HS,FCMEN=ON,PWRT=ON,BOREN=NOSLP,BORV=27, \
WDTEN=ON,WDTPS=32768,PBADEN=OFF,HFOFST=OFF,LPT1OSC=OFF, \
- MCLRE=ON,STVREN=ON,DEBUG=ON, \
+ MCLRE=ON,STVREN=ON,DEBUG=ON,LVP=OFF, \
XINST=OFF
#endif
#ifdef USE_RENCODER
rencoder_count();
#endif
-// rencoder_restart();
- T1CON = 0b10110100;// RD16, T1RUN=0, 1/32 fOSC, TNR1CS=0, TMR1ON=0;
- TMR1H = 63036 >> 8; // Tick = 4us, Count = 2500
- TMR1L = 63036 & 255;
- PIR1bits.TMR1IF = 0;
- PIE1bits.TMR1IE = 1;
- IPR1bits.TMR1IP = 1;
- T1CONbits.TMR1ON = 1;
+ rencoder_restart();
}
#ifdef __XC
DEF_INTLOW(intlow_handler)
DEF_HANDLER(SIG_TMR0, TMR0_handler)
DEF_HANDLER(SIG_INT0, EXINT_Handler)
- DEF_HANDLER(SIG_TMR3, TMR3_Handler)
+// DEF_HANDLER(SIG_TMR3, TMR3_Handler)
END_DEF
DEF_INTHIGH(inthigh_handler)
DEF_HANDLER(SIG_RBIF, RBIF_handler)
- DEF_HANDLER(SIG_EEIF, EEPROM_handler)
- DEF_HANDLER(SIG_TMR1, TMR1_Handler)
- DEF_HANDLER(SIG_INT1, EXINT_Handler)
+// DEF_HANDLER(SIG_EEIF, EEPROM_handler)
+// DEF_HANDLER(SIG_TMR1, TMR1_Handler)
+// DEF_HANDLER(SIG_INT1, EXINT_Handler)
DEF_HANDLER(SIG_INT2, EXINT_Handler)
DEF_HANDLER(SIG_AD, INADC_handler)
//DEF_HANDLER(SIG_SSP, I2C_handler)
{
if(INTCONbits.TMR0IF) TMR0_handler();
if(INTCONbits.INT0IF) EXINT_Handler();
+// if(PIR1bits.TMR1IF) TMR1_Handler();
}
void interrupt high_priority inthigh_handler(void)
{
if(INTCONbits.RBIF) RBIF_handler();
- if(PIR2bits.EEIF) EEPROM_handler();
+// if(PIR2bits.EEIF) EEPROM_handler();
if(PIR1bits.TMR1IF) TMR1_Handler();
- if(PIR2bits.TMR3IF) TMR3_Handler();
- if(INTCON3bits.INT1IF) EXINT_Handler();
- if(INTCON3bits.INT2IF) EXINT_Handler();
+// if(PIR2bits.TMR3IF) TMR3_Handler();
+// if(INTCON3bits.INT1IF) EXINT_Handler();
+// if(INTCON3bits.INT2IF) EXINT_Handler();
if(PIR1bits.ADIF) INADC_handler();
// if(PIR1bits.SSPIF) I2C_handler();
ui_idlekey = setup.ui_idlecount / 92;
ui_idlepad = setup.ui_idlecount % 23;
#ifdef USE_RENCODER
+ rencoder_init();
rencoder_start();
#endif
do {
acm1602_resume(LCD_I2CADDR);
dispf = 0xff;
}
-#ifdef USE_RENCODER
- rencoder_stop();
-#endif
setfreq_updown(c);
update_status();
update_display();
}
#ifdef USE_RENCODER
if((setup.fm == 0) && (setup.amband == AKC6955_BAND_MW2)) {
- if(renc_count < 4) {
- step = renc_count * 3;
- } else if(renc_count < 7) {
- step = renc_count * 9;
- } else {
- step = renc_count * 27;
- }
+ step = renc_count * 3;
} else {
- if(renc_count < 4) {
- step = renc_count;
- } else if(renc_count < 7) {
- step = renc_count * 3;
- } else {
- step = renc_count * 9;
- }
+ step = renc_count;
}
-
- if(renc_dir == RENC_LEFT) {
- akc6955_down_freq(step);
- rencoder_init();
- } else if(renc_dir == RENC_RIGHT) {
- akc6955_up_freq(step);
- rencoder_init();
- }
+
+ if(step != 0) {
+ if(renc_dir == RENC_LEFT) {
+ akc6955_down_freq(step);
+ rencoder_start();
+ } else if(renc_dir == RENC_RIGHT) {
+ akc6955_up_freq(step);
+ rencoder_start();
+ }
+ }
#endif
ClrWdt();
}
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.end" value="0x7fff"/>
<property key="memories.programmemory.start" value="0x0"/>
- <property key="poweroptions.powerenable" value="true"/>
+ <property key="poweroptions.powerenable" value="false"/>
<property key="programmertogo.imagename" value=""/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.pgmspeed" value="2"/>
<property key="programoptions.testmodeentrymethod" value="VPPFirst"/>
<property key="programoptions.usehighvoltageonmclr" value="false"/>
<property key="programoptions.uselvpprogramming" value="false"/>
- <property key="voltagevalue" value="3.25"/>
+ <property key="voltagevalue" value="3.375"/>
</PICkit3PlatformTool>
<XC8-config-global>
<property key="output-file-format" value="-mcof,+elf"/>
unsigned char renc_state_a;
unsigned char renc_state_b;
unsigned char renc_dir;
-unsigned char renc_count;
-unsigned char renc_reset_count;
-
-void rencoder_up(unsigned char dir)
-{
- if(dir == RENC_NONE) return;
- if(dir == renc_dir) {
- renc_count++;
- } else {
- renc_count = 0;
- renc_dir = dir;
- }
-}
+unsigned int renc_count;
+unsigned int renc_reset_count;
void rencoder_init(void)
{
void rencoder_restart(void)
{
-}
-
-void rencoder_start(void)
-{
+ // T1CONbits.TMR1ON = 1;
T1CON = 0b10110100;// RD16, T1RUN=0, 1/32 fOSC, TNR1CS=0, TMR1ON=0;
- TMR1H = 63036 >> 8; // Tick = 4us, Count = 2500
- TMR1L = 63036 & 255;
+ TMR1H = (65536 - 400) >> 8; // Tick = 4us, Count = 400(1.6ms)
+ TMR1L = (65536 - 400) & 255;
+// T1CONbits.TMR1ON = 0;
PIR1bits.TMR1IF = 0;
PIE1bits.TMR1IE = 1;
IPR1bits.TMR1IP = 1;
T1CONbits.TMR1ON = 1;
- rencoder_init();
+}
+
+void rencoder_start(void)
+{
+ rencoder_stop();
+ rencoder_restart();
}
void rencoder_stop(void)
void rencoder_count(void)
{
unsigned char dir = 0;
-
+
+ if(RENC_PH_A == renc_state_a) return; // ZAP SAME STATE.
if(RENC_PH_B != 0) {
if(renc_state_a != 0){
if(RENC_PH_A == 0) {
}
}
}
+
if(dir != RENC_NONE) {
if(dir == renc_dir) {
renc_count++;