- PGM/RB5(#38) is used to SIDE A of r.enc., pullup.
- RC5(#24) is used to SIDE B of r.enc., pullup.
- Common of r.enc. is connected to ground.
You should add "LVP=OFF" on #pragma config directive, at main.c.
void idle_init(void)
{
RCONbits.IPEN = 1;
void idle_init(void)
{
RCONbits.IPEN = 1;
INTCONbits.TMR0IF = 0;
INTCONbits.TMR0IE = 1;
INTCONbits.TMR0IF = 0;
INTCONbits.TMR0IE = 1;
#pragma config FOSC=HS,FCMEN=ON,PWRT=ON,BOREN=NOSLP,BORV=27, \
WDTEN=ON,WDTPS=32768,PBADEN=OFF,HFOFST=OFF,LPT1OSC=OFF, \
#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, \
#ifdef USE_RENCODER
rencoder_count();
#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;
DEF_INTLOW(intlow_handler)
DEF_HANDLER(SIG_TMR0, TMR0_handler)
DEF_HANDLER(SIG_INT0, EXINT_Handler)
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)
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)
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(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();
}
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(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();
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
ui_idlekey = setup.ui_idlecount / 92;
ui_idlepad = setup.ui_idlecount % 23;
#ifdef USE_RENCODER
rencoder_start();
#endif
do {
rencoder_start();
#endif
do {
acm1602_resume(LCD_I2CADDR);
dispf = 0xff;
}
acm1602_resume(LCD_I2CADDR);
dispf = 0xff;
}
-#ifdef USE_RENCODER
- rencoder_stop();
-#endif
setfreq_updown(c);
update_status();
update_display();
setfreq_updown(c);
update_status();
update_display();
}
#ifdef USE_RENCODER
if((setup.fm == 0) && (setup.amband == AKC6955_BAND_MW2)) {
}
#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;
- }
- if(renc_count < 4) {
- step = renc_count;
- } else if(renc_count < 7) {
- step = renc_count * 3;
- } else {
- step = renc_count * 9;
- }
-
- 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();
+ }
+ }
-#Mon Oct 21 01:29:40 JST 2013
+#Mon Oct 21 19:20:43 JST 2013
default.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=0d2b1469ad71adb787c711a416386331
default.languagetoolchain.version=1.21
default.languagetoolchain.dir=/opt/microchip/xc8/v1.21/bin
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=0d2b1469ad71adb787c711a416386331
default.languagetoolchain.version=1.21
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.end" value="0x7fff"/>
<property key="memories.programmemory.start" value="0x0"/>
<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="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="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"/>
</PICkit3PlatformTool>
<XC8-config-global>
<property key="output-file-format" value="-mcof,+elf"/>
<defaultConf>0</defaultConf>
<confs>
<conf name="default" type="2">
<defaultConf>0</defaultConf>
<confs>
<conf name="default" type="2">
- <platformToolSN></platformToolSN>
+ <platformToolSN>:=MPLABCommUSB:=04D8:=900A:=0002:=Microchip Technology Inc.:=PICkit 3:=DEFAULT_PK3 :=x:=en</platformToolSN>
<languageToolchainDir>/opt/microchip/xc8/v1.21/bin</languageToolchainDir>
<mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1>
<languageToolchainDir>/opt/microchip/xc8/v1.21/bin</languageToolchainDir>
<mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1>
unsigned char sts;
if(savef != 0) {
unsigned char sts;
if(savef != 0) {
save_eeprom();
save_userbands();
}
save_eeprom();
save_userbands();
}
unsigned char renc_state_a;
unsigned char renc_state_b;
unsigned char renc_dir;
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_init(void)
{
void rencoder_restart(void)
{
void rencoder_restart(void)
{
-}
-
-void rencoder_start(void)
-{
+ // T1CONbits.TMR1ON = 1;
T1CON = 0b10110100;// RD16, T1RUN=0, 1/32 fOSC, TNR1CS=0, TMR1ON=0;
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;
PIR1bits.TMR1IF = 0;
PIE1bits.TMR1IE = 1;
IPR1bits.TMR1IP = 1;
T1CONbits.TMR1ON = 1;
+}
+
+void rencoder_start(void)
+{
+ rencoder_stop();
+ rencoder_restart();
}
void rencoder_stop(void)
}
void rencoder_stop(void)
void rencoder_count(void)
{
unsigned char dir = 0;
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(RENC_PH_B != 0) {
if(renc_state_a != 0){
if(RENC_PH_A == 0) {
if(dir != RENC_NONE) {
if(dir == renc_dir) {
renc_count++;
if(dir != RENC_NONE) {
if(dir == renc_dir) {
renc_count++;
extern unsigned char renc_state_a;
extern unsigned char renc_state_b;
extern unsigned char renc_dir;
extern unsigned char renc_state_a;
extern unsigned char renc_state_b;
extern unsigned char renc_dir;
-extern unsigned char renc_count;
+extern unsigned int renc_count;
extern void rencoder_up(unsigned char dir);
extern void rencoder_init(void);
extern void rencoder_up(unsigned char dir);
extern void rencoder_init(void);