OSDN Git Service

[POWER][v2.0] Fix right shutdown sequence.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 10 Oct 2013 07:21:06 +0000 (16:21 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 10 Oct 2013 07:21:06 +0000 (16:21 +0900)
adc_int.c
power.c

index 13a21b6..b51bf1b 100644 (file)
--- a/adc_int.c
+++ b/adc_int.c
@@ -87,20 +87,15 @@ void startadc(unsigned char ch)
 #else
     PIE1bits.ADIE = 0;
     PIR1bits.ADIF = 0;
+    ADCON0 = 0;
+    ADCON2 = 0b00000110; // 64OSC, Right
+    ADCON1 = 0b00000000; // VREF+=VDD,VREF-=VSS
+    ADCON2 |= 0b10111000; // TAQ=20TAD, Right
     if(ch < _REF_ADC) {
-        ADCON0 = 0;
-        ADCON2 = 0b00000110; // 64OSC, Right
-        ADCON1 = 0b00000000; // VREF+=VDD,VREF-=VSS
-        ADCON2 |= 0b10111000; // TAQ=20TAD, Right
         ADCON0 = ch << 2;
-
         ansel_val = 0x0001 << ch;
 //        ansel_val = 0x0080;
     } else {
-        ADCON0 = 0;
-        ADCON2 = 0b00000110; // 64OSC, Right
-        ADCON1 = 0b00000000; // VREF+=VDD,VREF-=VSS
-        ADCON2 |= 0b10111000; // TAQ=20TAD, Right
         ADCON0 = 0x0f << 2;
        ansel_val = 0x0000;
     }
@@ -129,7 +124,7 @@ unsigned int polladc2(void)
     do {
         idle(50); // wait about 50us
         a = polladc();
-    } while((a  & 0x8000) != 0);
+    } while(a  == 0xffff);
    return a;
 }
 
diff --git a/power.c b/power.c
index 3d3c060..b13a418 100644 (file)
--- a/power.c
+++ b/power.c
@@ -92,9 +92,9 @@ void power_on_inthook(void)
 void power_on(unsigned char f)
 {
     if(f == 0x00){
-        set_examp_mute(0xff);
-        idle_time_ms(200);
-        set_radiopower(0x00);
+       set_radiopower(0x00);
+       set_examp_mute(0xff);
+//        idle_time_ms(200);
     } else {
         set_examp_mute(0x00);
         idle_time_ms(100);
@@ -140,7 +140,9 @@ unsigned char chk_powerbutton(void)
 void shutdown(unsigned char savef)
 {
     rfamp_power(RFAMP_OFF);
+    power_on(0);
     acm1602_suspend(LCD_I2CADDR);
+    lcd_setbacklight(0, 0);
     power_off(savef);
 }
 
@@ -152,11 +154,9 @@ void power_off(unsigned char savef)
         save_eeprom();
         save_userbands();
     }
-    lcd_setbacklight(0, 0);
     set_powerlamp(0);
     _AM_STATLAMP = 0;
     _FM_STATLAMP = 0;
-    power_on(0);
 
     WDTCONbits.SWDTEN = 0; // Lame WDT OFF.
     sts = 0;