#ifndef AKC6955_H
#define AKC6955_H
+#include "i2c_io.h"
+
#ifdef __cplusplus
extern "C" {
#endif
} banddesc;
extern const banddesc ambands[AKC6955_BAND_AMEND];
extern const banddesc fmbands[AKC6955_BAND_FMEND];
-/*
- * Resister definitions
- */
- typedef union{
- unsigned char byte;
- struct {
- unsigned power_on :1;
- unsigned fm_en :1;
- unsigned tune :1;
- unsigned seek :1;
- unsigned seekdir :1;
- unsigned mute :1;
- unsigned reserve :2;
- };
- } AKC6955_Reg0;
-
// MCU Clock = 8MHz
+
+#define _AKC6955_WAIT_62_5MS() idle_time_62_5ms()
+// Wait 12.5ms
+#define _AKC6955_WAIT_12_5MS() idle_time_ms(13)
+// Wait 125.0ms
+#define _AKC6955_WAIT_125_0MS() idle_time_ms(125)
+
+
#ifdef __SDCC
// Wait 62.5ms
-#define _AKC6955_WAIT_62_5MS() delay1ktcy(500)
+//#define _AKC6955_WAIT_62_5MS() delay1ktcy(500)
// Wait 12.5ms
-#define _AKC6955_WAIT_12_5MS() delay1ktcy(100)
+//#define _AKC6955_WAIT_12_5MS() delay1ktcy(100)
// Wait 125.0ms
-#define _AKC6955_WAIT_125_0MS() delay10ktcy(100)
+//#define _AKC6955_WAIT_125_0MS() delay10ktcy(100)
// Wait 50us
#define _AKC6955_WAIT_12_5uS() delay10tcy(40)
#else
-#define _AKC6955_WAIT_62_5MS() __delay_ms(63)
+#ifndef _XTAL_FREQ
+#define _XTAL_FREQ 8000000
+#endif
+
+//#define _AKC6955_WAIT_62_5MS() __delay_ms(63)
// Wait 12.5ms
-#define _AKC6955_WAIT_12_5MS() __delay_ms(13)
+//#define _AKC6955_WAIT_12_5MS() __delay_ms(13)
// Wait 125.0ms
-#define _AKC6955_WAIT_125_0MS() idle_time_ms(125)
+//#define _AKC6955_WAIT_125_0MS() idle_time_ms(125)
+//#define _AKC6955_WAIT_125_0MS() {_delay_ms(63); _deyal_ms(62);}
// Wait 50us
#define _AKC6955_WAIT_12_5uS() __delay_us(13)
#endif
}
extern unsigned char akc6955_getband(void);
-extern void akc6955_writecmd(unsigned char reg, unsigned char data);
-extern unsigned char akc6955_readcmd(unsigned char reg);
extern void akc6955_chg_fm(unsigned char fm, unsigned int freq);
extern unsigned char akc6955_get_fm(void);
extern unsigned char akc6955_get_band(void);
extern void akc6955_set_stereomode(unsigned char mode);
extern unsigned char akc6955_get_stereo(void);
extern void akc6955_set_scanrate_fm(unsigned char rate);
+extern unsigned char akc6955_get_scanrate_fm(void);
extern unsigned int akc6955_get_battery(void);
extern void akc6955_set_lowboost(unsigned char flag);
extern void akc6955_set_thresh_fmstereo(unsigned char a);
extern void akc6955_set_thresh_amcnr(unsigned char a);
extern void akc6955_set_thresh_width(unsigned char a);
+
+
+
#define akc6955_set_fmbandwidth(bw) { \
unsigned char c = akc6955_readcmd(AKC6955_STEREO); \
c = (c & 0xfc) | (bw & 0x03); \
c = akc6955_readcmd(AKC6955_STEREO) & 0x03; \
} \
+#define akc6955_writecmd(reg,data) {\
+ i2c_send_byte(AKC6955_ADDRESS, reg, data);\
+}
+
+#define akc6955_readcmd(reg) i2c_read_byte(AKC6955_ADDRESS, reg)
#ifdef __cplusplus