OSDN Git Service

[UI] Work Rotaly encoder collectly. For ICSP, PGM was removed, see below:
authorK.Ohta <whatisthis.sowhat@gmail.com>
Mon, 21 Oct 2013 10:42:44 +0000 (19:42 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Mon, 21 Oct 2013 10:42:44 +0000 (19:42 +0900)
 - 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.

idle.c
main.c
nbproject/Makefile-genesis.properties
nbproject/configurations.xml
nbproject/private/configurations.xml
power.c
rencoder.c
rencoder.h

diff --git a/idle.c b/idle.c
index 7345f71..ae8db1d 100644 (file)
--- a/idle.c
+++ b/idle.c
@@ -39,7 +39,7 @@
 void idle_init(void)
 {
     RCONbits.IPEN = 1;
-//    INTCONbits.GIE = 1;
+    INTCONbits.GIE = 1;
 
     INTCONbits.TMR0IF = 0;
     INTCONbits.TMR0IE =  1;
diff --git a/main.c b/main.c
index c66a69c..e8fc3ad 100644 (file)
--- a/main.c
+++ b/main.c
@@ -81,7 +81,7 @@
 
 #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
 
@@ -131,14 +131,7 @@ SIGHANDLER(TMR1_Handler)
 #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
@@ -226,14 +219,14 @@ SIGHANDLER(I2CBus_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)
- 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)
@@ -244,16 +237,17 @@ void interrupt low_priority intlow_handler(void)
 {
     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();
@@ -331,6 +325,7 @@ int main(void)
     ui_idlekey = setup.ui_idlecount / 92;
     ui_idlepad = setup.ui_idlecount % 23;
 #ifdef USE_RENCODER
+    rencoder_init();
    rencoder_start();
 #endif
    do {
@@ -361,9 +356,6 @@ int main(void)
                     acm1602_resume(LCD_I2CADDR);
                     dispf = 0xff;
                 }
-#ifdef USE_RENCODER
-               rencoder_stop();
-#endif
                setfreq_updown(c);
                update_status();
                 update_display();
@@ -373,30 +365,20 @@ int main(void)
             }
 #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();
         }
index 48f3574..86b0ea1 100644 (file)
@@ -1,5 +1,5 @@
 #
-#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
index 8e66a63..9a6c12a 100644 (file)
         <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"/>
index dcd8bac..7625e0d 100644 (file)
@@ -4,7 +4,7 @@
   <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>
diff --git a/power.c b/power.c
index 297d1aa..7ece052 100644 (file)
--- a/power.c
+++ b/power.c
@@ -152,6 +152,7 @@ void power_off(unsigned char savef)
     unsigned char sts;
 
     if(savef != 0) {
+
         save_eeprom();
         save_userbands();
     }
index 23da54d..c0ef9d1 100644 (file)
 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)
 {
@@ -58,18 +47,21 @@ 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)
@@ -87,7 +79,8 @@ 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) {
@@ -99,6 +92,7 @@ void rencoder_count(void)
         }
       }
    }
+
    if(dir != RENC_NONE) {
       if(dir == renc_dir) {
         renc_count++;
index 6ea3886..9016c0c 100644 (file)
@@ -47,7 +47,7 @@
 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);