#include "adc_int.h"
void intadc_init(void)
{
-#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22)
+#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22) || \
+ defined(_18F23K22) || defined(_18F24K22) || defined(_18F25K22) || defined(_18F26K22)
+
ANSELA = AN_A_VAL;
ANSELB = AN_B_VAL;
ANSELC = AN_C_VAL;
#endif
-#if defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20)
+#if defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20) || \
+ defined(_18F23K20) || defined(_18F24K20) || defined(_18F25K20) || defined(_18F26K20)
+
ANSEL= _ADC_INITF;
ANSELH = _ADCH_INITF;
#endif
-#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20)
+#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20) || \
+ defined(_18F43K20) || defined(_18F44K20) || defined(_18F45K20) || defined(_18F46K20)
ANSEL = 0x00;
ANSELH = 0x00;
ANSELbits._ADC_INITF = 1;
i2c_close();
delay100tcy(2);
#else
- OpenI2C(MASTER, SLEW_OFF);
+ OpenI2C(MASTER, SLEW_ON);
+ SSPADD = 0x5;
+// IdleI2C();
StartI2C();
WriteI2C(0x20);
//delay1ktcy(8);
StopI2C();
// delay1ktcy(8);
CloseI2C();
-// CLOSEASMASTER();
#endif // i2c_idle();
}
// OPENASMASTER();
#ifdef __SDCC
i2c_open(I2C_MASTER, I2C_SLEW_ON, 5);
-#else
- OpenI2C(MASTER, SLEW_OFF);
-#endif
-#ifdef __SDCC
I2C_START();
i2c_writechar(0x20);
i2c_writechar(reg);
I2C_STOP();
i2c_close();
#else
+ OpenI2C(MASTER, SLEW_ON);
+ SSPADD = 0x5;
+// IdleI2C();
StartI2C();
WriteI2C(0x20);
// delay1ktcy(8);
}
-unsigned char printhelp_2lines(char *l1, char *l2)
+unsigned char printhelp_2lines(const char *l1, const char *l2)
{
_CLS();
_LOCATE(0,0);
extern "C" {
#endif
- extern unsigned char printhelp_2lines(char *l1, char *l2);
+ extern unsigned char printhelp_2lines(const char *l1, const char *l2);
+ extern unsigned char numeric_help(void);
extern void updown_help(void);
extern void mainmenu_help(void);
extern void setup_help(void);
#include <stdarg.h>
#include <stdio.h>
+#ifdef __SDCC
#include <pic18fregs.h>
+#endif
#include "i2c_io.h"
void idle(unsigned int initial)
{
+ unsigned int i;
WDTCONbits.SWDTEN = 0; // Lame WDT OFF.
/* Enable IDLE */
- OSCCONbits.IDLEN = 1;
- INTCONbits.TMR0IF = 0;
- INTCONbits.TMR0IE = 1; // Enable tmr0 as interrupt and clear interrupt flags.
/* Set TMR0 for interrupt*/
/* Pre-scaler: 1/2, PSA=1(ON), TOSE=0, T0CS=0(INTERNAL), T08BIT=0(16bit), TMR0ON=1(START) */
/* 1Tick = 1/1000 ms*/
T0CON = 0b00001000; // 1/2
+ OSCCONbits.IDLEN = 1;
+ INTCON2bits.TMR0IP = 0;
+ INTCONbits.TMR0IF = 0;
+ INTCONbits.TMR0IE = 1; // Enable tmr0 as interrupt and clear interrupt flags.
// TMR0H = initial >> 8; // Write order : L->H
+ TMR0H = initial >> 8; // Write order : H->L
TMR0L = initial & 0xff;
- TMR0H = initial >> 8; // Write order : L->H
T0CONbits.TMR0ON = 1; // Start
-// do {
+ do {
Sleep();
// i = TMR0H << 8 + TMR0L; // Check if IDLE-Timer was elapsed.
-// } while(i < 3); // Dead area : 0-2.
+ } while(INTCONbits.TMR0IF == 0); // Dead area : 0-2.
+ INTCONbits.TMR0IF = 0;
WDTCONbits.SWDTEN = 1; // WDT ON.
}
unsigned int upper;
if(ms == 0) return;
- upper = (ms & 0xffc0) >> 10;
+ upper = (ms & 0xffc0) >> 6;
// tim = ms * 8 - ms / 16 - ms / 8;
tim = (ms & 0x3f) * 1000; //
tim = (65535 - tim) + 1; // tim = 65536 - tim;
#define _PIO_HAS_FIVE
#endif
#else // __XC
-#if defined(__18F23K22) || defined(__18F24k22) || defined(__18F25K22) || defined(__18F26K22)
+
+#if defined(_18F23K22) || defined(_18F24K22) || defined(_18F25K22) || defined(_18F26K22)
#define _I2C_IO_TWO_MSSPS
#define _PIO_HAS_THREE
#endif
-#if defined(__18F23K20) || defined(__18F24K20) || defined(__18F25K20) || defined(__18F26K20)
+#if defined(_18F23K20) || defined(_18F24K20) || defined(_18F25K20) || defined(_18F26K20)
#define _I2C_IO_ONE_MSSP
#define _PIO_HAS_THREE
#endif
-#if defined(__18F43K20) || defined(__18F44K20) || defined(__18F45K20) || defined(__18F46K20)
+#if defined(_18F43K20) || defined(_18F44K20) || defined(_18F45K20) || defined(_18F46K20)
#define _I2C_IO_ONE_MSSP
#define _PIO_HAS_FIVE
#endif
* RD2 : EN
* RD4-RD7: DATA(4-7).
*/
- #ifndef _LCDPORT_DATA
+#ifndef _LCDPORT_DATA
#define _LCDPORT_DATA PORTD
#define _LCDPORT_TRIS_DATA TRISD
#define _LCDPORT_LATCH_DATA LATD
#define _LCDPORT_BUSYMASK 0b10000000
#define _LCDPORT_READMASK TRIS_D_RVAL
#define _LCDPORT_DATA_SHIFT 4
- #endif
+#endif
- #ifndef _LCDPORT_CONT
+#ifndef _LCDPORT_CONT
#define _LCDPORT_CONT PORTD
#define _LCDPORT_TRIS_CONT TRISD
#define _LCDPORT_CONT_LATCH LATD
#define _LCDPORT_CONT_RWbit b1
#define _LCDPORT_CONT_ENbit b2
#define _LCDPORT_CONT_BLbit b3
-#ifdef __SDCC
#define _LCDPORT_CONT_RS LATDbits.LATD0
#define _LCDPORT_CONT_RW LATDbits.LATD1
#define _LCDPORT_CONT_EN LATDbits.LATD2
-#else
-#define _LCDPORT_CONT_RS _PORTD_RD0_MASK
-#define _LCDPORT_CONT_RW _PORTD_RD1_MASK
-#define _LCDPORT_CONT_EN _PORTD_RD2_MASK
-#endif
#endif
#else
}
-#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22)
+#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22) || \
+ defined(_18F23K22) || defined(_18F24K22) || defined(_18F25K22) || defined(_18F26K22)
+
/*
* For 28Pin PIC(18F2xK22), I2C lcd using.
*/
}
#endif
-#if defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20)
+#if defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20) || \
+ defined(_18F23K20) || defined(_18F24K20) || defined(_18F25K20) || defined(_18F26K20)
+
/*
* For 28Pin PIC(18F2xK20), I2C lcd using.
*/
}
#endif
-#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20)
+#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20) || \
+ defined(_18F43K20) || defined(_18F44K20) || defined(_18F45K20) || defined(_18F46K20)
+
/*
* For 40Pin PIC(18F4xK20), paralell or I2C lcd using.
*/
#pragma config EBTR0=OFF,EBTR1=OFF,EBTRB=OFF
#endif
// For 4xK20 or 2xK20 Series
-#if defined(__SDCC)
#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20) || \
- defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20)
+ defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20) || \
+ defined(_18F43K20) || defined(_18F44K20) || defined(_18F45K20) || defined(_18F46K20) || \
+ defined(_18F23K20) || defined(_18F24K20) || defined(_18F25K20) || defined(_18F26K20)
+#ifdef __SDCC
#pragma stack 0x200 256
+#endif
+
#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, \
XINST=OFF
-//#pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF
-//#pragma config CPB=OFF,CPD=OFF
-//#pragma config WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
-//#pragma config WRTC=OFF,WRTB=OFF,WRTD=OFF
-//#pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF
-#endif
-#elif defined(__XC8)
-
#endif
/*
* Statuses
T0CONbits.TMR0ON = 0;
// Clear interrupt flag
- INTCONbits.TMR0IF = 0;
+// INTCONbits.TMR0IF = 0;
INTCONbits.TMR0IE = 0;;
return;
// }
}
#ifdef __XC
-void EEPROM_handler(void)
+void EEPROM_handler(void)
#else
SIGHANDLER(EEPROM_handler)
#endif
// if(a != 0xffff) {
// battlevel = adc_rawtobatt(a);
// }
+ PIR1bits.ADIF = 0;
}
#ifdef __XC
void I2C_handler(void)
DEF_HANDLER(SIG_RBIF, RBIF_handler)
DEF_HANDLER(SIG_EEIF, EEPROM_handler)
DEF_HANDLER(SIG_TMR3, TMR3_Handler)
- DEF_HANDLER(SIG_TMR0, TMR0_handler)
DEF_HANDLER(SIG_INT1, EXINT_Handler)
DEF_HANDLER(SIG_INT2, EXINT_Handler)
DEF_HANDLER(SIG_AD, INADC_handler)
//DEF_HANDLER(SIG_BCOL, I2CBus_handler)
END_DEF
#else
-void interrupt low_priority isr(void)
+void interrupt high_priority intlow_handler(void)
{
- if(INTCONbits.T0IF) TMR0_handler();
- if(INTCONbits.INT0F) EXINT_Handler();
+ if(INTCONbits.TMR0IF) TMR0_handler();
+ if(INTCONbits.INT0IF) EXINT_Handler();
}
-void interrupt isr_high(void)
+
+void interrupt high_priority inthigh_handler(void)
{
- if(INTCONbits.RBIF) RBIF_handler();
- if(PIR2bits.EEIF) EEPROM_handler();
- if(PIR2bits.TMR3IF) TMR3_Handler();
+ if(INTCONbits.RBIF) RBIF_handler();
+ if(PIR2bits.EEIF) EEPROM_handler();
+ if(PIR2bits.TMR3IF) TMR3_Handler();
if(INTCONbits.TMR0IF) TMR0_handler();
- if(INTCON3bits.INT1F || INTCON3bits.INT2IF) EXINT_Handler();
+ if(INTCON3bits.INT1IF) EXINT_Handler();
+ if(INTCON3bits.INT2IF) EXINT_Handler();
if(PIR1bits.ADIF) INADC_handler();
+
+// if(PIR1bits.SSPIF) I2C_handler();
}
+
+#ifdef __XC
+
+
+#endif
#endif
unsigned char reset_status;
unsigned char p;
-#ifdef __SDCC
OSCCON = (0x80 & 0b11111100) | 0b00111000;
// OSCCON = (0x80 & 0b11111100) | 0b00110010; // 8MHz
-#else
- OSCCON = (_OSCCON_IDLEN_MASK & 0b11111100 ) | 0b00111000;
-#endif
idle_init();
keyin_init();
keyin_ioinit();
-
WDTCONbits.SWDTEN = 0; // WDT OFF.
reset_status = chk_reset();
idle_time_ms(300); // Wait for setup.
-#if 1
switch(reset_status){
case RESET_MCLR:
power_off(0); // When press reset, state to power_off.
default:
break;
}
-#endif
WDTCONbits.SWDTEN = 1; // WDT ON.
i2c1_init();
power_on(1);
printstr("Hello;-)");
lcd_setbacklight(0xff, 255);
idle_time_ms(1000);
- check_eeprom();
- // Init AKC6955
/* Check EEPROM */
- /* Push default parameters to AKC6955*/
+ check_eeprom();
+ /* Push default parameters to AKC6955*/
setup_akc6955();
_CLS();
_LOCATE(0,0);
_PUTCHAR(' ');
- // batlevel_6955 = 330;
- update_status();
- update_display();
+// battlevel = 350;
+ update_status();
+ update_display();
ClrWdt();
-// _LOCATE(0,0);
-// printstr("OK");
- lcd_setbacklight(0xff, 255);
+ lcd_setbacklight(0xff, 255);
do {
-// set_powerlamp(0);
if(battlevel <= 340) { // 3.4V
lowbatt();
}
/* Main routine*/
- c = pollkeys(pollkeybuf, 10, 1); // 23*10=230ms
- p = 0;
- while(c > 0) {
- ClrWdt();
- setfreq_updown(pollkeybuf[p]);
- c--;
- p++;
- }
-// set_powerlamp(1);
+ c = pollkeys(pollkeybuf, 5, 1); // 23*10=135ms
+ p = 0;
+ while(c > 0) {
+ ClrWdt();
+ setfreq_updown(pollkeybuf[p]);
+ c--;
+ p++;
+ }
// idle_time_ms(ui_idlecount);
- // Putstring to LCD.
- _LOCATE(0,0);
- pbutton = chk_powerbutton();
- if(pbutton != 0) shutdown(1); // Button pressed.
+ _LOCATE(0,0);
+ pbutton = chk_powerbutton();
+ if(pbutton != 0) shutdown(1); // Button pressed.
- if(backlight_counter > 0) {
- backlight_counter--;
- lcd_setbacklight(0xff, backlight_level); // Turn ON
- } else {
- lcd_setbacklight(0x00, 0); // Turn OFF
- }
- update_status();
+ if(backlight_counter > 0) {
+ backlight_counter--;
+ lcd_setbacklight(0xff, backlight_level); // Turn ON
+ } else {
+ lcd_setbacklight(0x00, 0); // Turn OFF
+ }
// ClrWdt();
+ // Debug routines
+#if 0
+ set_powerlamp(0);
+ idle_time_ms(1000);
+ set_powerlamp(1);
+ idle_time_ms(1000);
+#endif
+ update_status();
update_display();
ClrWdt();
} while(1);
printstr("LOW");
}
_HOME();
- c = pollkeys(pollkeybuf, 60, 1);
+ c = pollkeys(pollkeybuf, 5, 1);
p = 0;
while(c > 0) {
switch(pollkeybuf[p]) {
void scan_start(void)
{
unsigned char c;
+ unsigned char cp;
_CLS();
_PUTCHAR(' ');
do {
// _LOCATE(0,0);
printstr("Scan F/A/4/6");
print_freq(1);
- c = pollkeys(pollkeybuf, 20, 0); // 23*20 = 460ms
+ c = pollkeys(pollkeybuf, 10, 0); // 23*20 = 460ms
// idle_time_ms(2000);
} while(c == 0);
// New Scan
- if(pollkeybuf[0] == charcode_6){
+ cp = pollkeybuf[0];
+ if(cp == charcode_6){
scanflag = 0xff;
akc6955_do_scan(0xff);
- } else if(pollkeybuf[0] == charcode_4){
+ } else if(cp == charcode_4){
scanflag = 0xff;
akc6955_do_scan(0);
- } else if(pollkeybuf[0] == charcode_a){
+ } else if(cp == charcode_a){
scanflag = 0;
akc6955_abort_scan();
break;
- } else if(pollkeybuf[0] == charcode_f){
+ } else if(cp == charcode_f){
break;
}// else {
// if((scanflag != 0) && (akc6955_chk_donescan() != 0)) {
_LOCATE(0,1);
printstr("B=CANCEL");
do {
- n = pollkeys(pollkeybuf, 60, 1);
+ n = pollkeys(pollkeybuf, 5, 1);
} while(n == 0);
p = 0;
c = pollkeybuf[0];
#
-#Wed Jul 24 21:47:50 JST 2013
+#Thu Jul 25 12:56:17 JST 2013
default.languagetoolchain.dir=/usr/local/bin
default.br-unifei-rmaalmeida-toolchainSDCC-SDCCtoolchain.md5=b67cce1ad75b450308d7806e430931b3
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=1c49f19f6a43b876c317e0d8d41c0854
<makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
<makeCustomizationNormalizeHexFile>true</makeCustomizationNormalizeHexFile>
</makeCustomizationType>
+ <HI-TECH-COMP>
+ <property key="asmlist" value="true"/>
+ <property key="define-macros" value=""/>
+ <property key="extra-include-directories" value=""/>
+ <property key="identifier-length" value="255"/>
+ <property key="operation-mode" value="free"/>
+ <property key="opt-xc8-compiler-strict_ansi" value="false"/>
+ <property key="optimization-assembler" value="true"/>
+ <property key="optimization-assembler-files" value="true"/>
+ <property key="optimization-debug" value="true"/>
+ <property key="optimization-global" value="true"/>
+ <property key="optimization-level" value="9"/>
+ <property key="optimization-set" value="default"/>
+ <property key="optimization-speed" value="false"/>
+ <property key="preprocess-assembler" value="true"/>
+ <property key="undefine-macros" value=""/>
+ <property key="use-cci" value="false"/>
+ <property key="verbose" value="false"/>
+ <property key="warning-level" value="0"/>
+ <property key="what-to-do" value="ignore"/>
+ </HI-TECH-COMP>
+ <HI-TECH-LINK>
+ <property key="additional-options-checksum" value=""/>
+ <property key="additional-options-code-offset" value=""/>
+ <property key="additional-options-command-line" value=""/>
+ <property key="additional-options-errata" value=""/>
+ <property key="additional-options-extend-address" value="false"/>
+ <property key="additional-options-trace-type" value=""/>
+ <property key="additional-options-use-response-files" value="false"/>
+ <property key="backup-reset-condition-flags" value="false"/>
+ <property key="calibrate-oscillator" value="true"/>
+ <property key="calibrate-oscillator-value" value=""/>
+ <property key="clear-bss" value="true"/>
+ <property key="code-model-external" value="wordwrite"/>
+ <property key="code-model-rom" value=""/>
+ <property key="create-html-files" value="false"/>
+ <property key="data-model-ram" value=""/>
+ <property key="data-model-size-of-double" value="24"/>
+ <property key="data-model-size-of-float" value="24"/>
+ <property key="display-class-usage" value="false"/>
+ <property key="display-hex-usage" value="false"/>
+ <property key="display-overall-usage" value="true"/>
+ <property key="display-psect-usage" value="false"/>
+ <property key="fill-flash-options-addr" value=""/>
+ <property key="fill-flash-options-const" value=""/>
+ <property key="fill-flash-options-how" value="0"/>
+ <property key="fill-flash-options-inc-const" value="1"/>
+ <property key="fill-flash-options-increment" value=""/>
+ <property key="fill-flash-options-seq" value=""/>
+ <property key="fill-flash-options-what" value="0"/>
+ <property key="format-hex-file-for-download" value="false"/>
+ <property key="initialize-data" value="true"/>
+ <property key="keep-generated-startup.as" value="true"/>
+ <property key="link-in-c-library" value="true"/>
+ <property key="link-in-peripheral-library" value="true"/>
+ <property key="managed-stack" value="false"/>
+ <property key="opt-xc8-linker-file" value="false"/>
+ <property key="opt-xc8-linker-link_startup" value="false"/>
+ <property key="opt-xc8-linker-serial" value=""/>
+ <property key="program-the-device-with-default-config-words" value="true"/>
+ </HI-TECH-LINK>
<PICkit3PlatformTool>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="Freeze Peripherals" value="true"/>
<property key="programoptions.uselvpprogramming" value="false"/>
<property key="voltagevalue" value="3.25"/>
</PICkit3PlatformTool>
- <SDCCToolchain>
- </SDCCToolchain>
+ <XC8-config-global>
+ <property key="output-file-format" value="+mcof,-elf"/>
+ </XC8-config-global>
<sdcc>
<property key="V-show-commands-compiler" value="true"/>
<property key="Werror" value="false"/>