HalCa-2 diag test program
Dependencies: SDFileSystem mbed
main.cpp
- Committer:
- yone2
- Date:
- 2015-08-05
- Revision:
- 0:86eefbc31367
File content as of revision 0:86eefbc31367:
#include "mbed.h"
#include "string"
#include "SDFileSystem.h"
DigitalOut blue_led(P0_20);
DigitalOut white_led(P0_23);
SDFileSystem sd(P0_9, P0_8, P0_10, P0_15, "sd"); // mosi, miso, sclk, cs
InterruptIn in1(P0_19); //for mbed, p8 GPIO
InterruptIn in2(P0_18); //for mbed, p8 GPIO
Timer t1;
Timer t_real;
I2C i2c(P0_5, P0_4); // sda, scl
//float t_period = 0; // This is the period between interrupts in microseconds
//float t_freq = 0;
//float t_freq_k = 0;
//float moi = 0;
int cnt=0;
float f_cnt=0;
char str1[17];
char str2[17];
float t = 0;
//I2C i2c(P0_10, P0_11);
const int AQCM0802_addr = 0x7C;
// unsigned char mode;
unsigned char contrast = 0; // 0-63
//unsigned char contrastFlag = false;
// int CGcounter;
// int FADEcounter;
void lcd_cmd(char x) {
char data[2];
data[0] = 0x00; // CO = 0,RS = 0
data[1] = x;
i2c.write(AQCM0802_addr, data, 2);
}
void lcd_contdata(char x) {
char data[2];
data[0] = 0xC0; //0b11000000 CO = 1, RS = 1
data[1] = x;
i2c.write(AQCM0802_addr, data, 2);
}
void lcd_lastdata(char x) {
char data[2];
data[0] = 0x40; //0b11000000 CO = 0, RS = 1
data[1] = x;
i2c.write(AQCM0802_addr, data, 2);
}
void lcd_printStr(const char *s) {
while(*s) {
if(*(s + 1)) {
lcd_contdata(*s);
} else {
lcd_lastdata(*s);
}
s++;
}
}
void lcd_printHex(unsigned char num) {
lcd_contdata(num);
}
void lcd_init() {
wait(0.04);
// LCD initialize
lcd_cmd(0x38); // function set
lcd_cmd(0x39); // function set
lcd_cmd(0x04); // EntryModeSet
lcd_cmd(0x14); // interval osc
lcd_cmd(0x70 | (contrast & 0xF)); // contrast Low
lcd_cmd(0x5C | ((contrast >> 4) & 0x3)); // contast High/icon/power
lcd_cmd(0x6C); // follower control
wait(0.2);
lcd_cmd(0x38); // function set
lcd_cmd(0x0C); // Display On
lcd_cmd(0x01); // Clear Display
wait(0.2); // need additional wait to Clear Display
}
void lcd_setCursor(unsigned char x,unsigned char y) {
lcd_cmd(0x80 | (y * 0x40 + x));
}
void setContrast(unsigned char c) {
lcd_cmd(0x39);
lcd_cmd(0x70 | (c & 0x0f)); // contrast Low
lcd_cmd(0x5C | ((c >> 4) & 0x03)); // contast High/icon/power
lcd_cmd(0x38);
}
void flip1(){
lcd_setCursor(0, 1);
lcd_printStr("sw1");
white_led=1;
wait(0.5);
lcd_setCursor(0, 1);
lcd_printStr(" ");
}
void flip2(){
lcd_setCursor(4, 1);
lcd_printStr("sw2");
white_led=0;
wait(0.5);
lcd_setCursor(4, 1);
lcd_printStr(" ");
}
int main() {
white_led = 1;
// LCD init
lcd_init();
contrast = 35;
setContrast(contrast);
lcd_printStr("...");
// Timer start
t1.start();
t_real.start();
// Interuupt start
in1.mode(PullUp); // Set the pin to Pull Down mode.
in1.fall(&flip1); // Set up the interrupt for rising edge
in2.mode(PullUp); // Set the pin to Pull Down mode.
in2.fall(&flip2); // Set up the interrupt for rising edge
white_led=0;
// SD init
lcd_setCursor(0, 0);
lcd_printStr("SD:");
FILE *fp = fopen("/sd/TEST.txt", "w");
fprintf(fp, "second, time\r\n");
fclose(fp);
lcd_printStr("OK");
while(1) {
blue_led = 1;
wait(1);
blue_led = 0;
wait(1);
}
}