program for conv2

Dependencies:   mbed

Fork of I2C_HelloWorld_Mbed by mbed official

Committer:
marcus255
Date:
Wed Dec 16 19:42:52 2015 +0000
Revision:
7:04a1f5398882
Parent:
6:35640814d53b
Reading/Writting EEPROM works fine, Reading/Writting works fine when temperature sensor connected to the i2c bus. Device addresses must be hardcoded for now.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcus255 4:35e714396141 1 // Conv2 Master
marcus255 4:35e714396141 2 #include "main.h"
marcus255 4:35e714396141 3
marcus255 4:35e714396141 4 int main() {
marcus255 4:35e714396141 5 init();
marcus255 4:35e714396141 6 //conv2.printf("conv2 says: Hello World!\n\r");
marcus255 4:35e714396141 7 while (1) {}
marcus255 4:35e714396141 8 }
mbed_official 0:f76c26307f9a 9
marcus255 4:35e714396141 10 void onUartChar(){
marcus255 4:35e714396141 11 NVIC_DisableIRQ(UART0_IRQn);
marcus255 4:35e714396141 12 if (conv2.getc() == DATA_TO_WRITE_CHAR){
marcus255 4:35e714396141 13 char received = conv2.getc();
marcus255 4:35e714396141 14 //conv2.putc(received);
marcus255 7:04a1f5398882 15 if (received == RTC_ADDR){ // writing to slave
marcus255 4:35e714396141 16 if (!transmission) {
marcus255 4:35e714396141 17 i2c.start();
marcus255 4:35e714396141 18 transmission = 1;
marcus255 4:35e714396141 19 }
marcus255 4:35e714396141 20 if (i2c.write((int)received))
marcus255 4:35e714396141 21 conv2.putc(UART_CONFIRMATION_CHAR);
marcus255 4:35e714396141 22 else {
marcus255 4:35e714396141 23 conv2.putc(UART_NON_CONFIRMATION_CHAR);
marcus255 4:35e714396141 24 }
marcus255 4:35e714396141 25 while (conv2.getc() == DATA_TO_WRITE_CHAR){
marcus255 4:35e714396141 26 received = conv2.getc();
marcus255 4:35e714396141 27 if (i2c.write((int)received))
marcus255 4:35e714396141 28 conv2.putc(UART_CONFIRMATION_CHAR);
marcus255 4:35e714396141 29 else {
marcus255 4:35e714396141 30 conv2.putc(UART_NON_CONFIRMATION_CHAR);
marcus255 4:35e714396141 31 break;
marcus255 4:35e714396141 32 }
marcus255 4:35e714396141 33 }
marcus255 4:35e714396141 34 }
marcus255 7:04a1f5398882 35 else if (received == (RTC_ADDR | 0x01)){ // reading from slave
marcus255 4:35e714396141 36 char rec;
marcus255 4:35e714396141 37 if (!transmission) {
marcus255 4:35e714396141 38 i2c.start();
marcus255 4:35e714396141 39 transmission = 1;
marcus255 4:35e714396141 40 }
marcus255 5:759439e9e976 41 if (i2c.write((int)rec)){
marcus255 6:35640814d53b 42 //conv2.putc(UART_CHAR_INCOMING);
marcus255 5:759439e9e976 43 while (conv2.getc() == DATA_TO_READ_CHAR){
marcus255 5:759439e9e976 44 rec = (char)i2c.read(1);
marcus255 5:759439e9e976 45 conv2.putc(UART_CHAR_INCOMING);
marcus255 5:759439e9e976 46 conv2.putc(rec);
marcus255 5:759439e9e976 47 }
marcus255 6:35640814d53b 48 i2c.read(0);
marcus255 5:759439e9e976 49 }
marcus255 4:35e714396141 50 else {
marcus255 4:35e714396141 51 conv2.putc(UART_NON_CONFIRMATION_CHAR);
marcus255 4:35e714396141 52 }
marcus255 5:759439e9e976 53 conv2.putc(END_OF_TRANSMISSION);
marcus255 5:759439e9e976 54
marcus255 5:759439e9e976 55 }
marcus255 4:35e714396141 56 }
marcus255 5:759439e9e976 57 // i2c.stop();
marcus255 4:35e714396141 58 transmission = 0;
marcus255 4:35e714396141 59 NVIC_EnableIRQ(UART0_IRQn);
marcus255 4:35e714396141 60 }
mbed_official 0:f76c26307f9a 61
marcus255 4:35e714396141 62 void init(void){
marcus255 4:35e714396141 63 i2c.frequency(100000);
marcus255 4:35e714396141 64 conv2.baud(921600);
marcus255 4:35e714396141 65 conv2.attach(&onUartChar);
marcus255 4:35e714396141 66 }