![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Bertl2014 Bulme
I2C/myi2c.cpp@0:84a4a0aa3ea6, 2017-05-06 (annotated)
- Committer:
- hemmer_matthias
- Date:
- Sat May 06 20:12:01 2017 +0000
- Revision:
- 0:84a4a0aa3ea6
Bertl2014
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hemmer_matthias | 0:84a4a0aa3ea6 | 1 | #include "myi2c.h" |
hemmer_matthias | 0:84a4a0aa3ea6 | 2 | |
hemmer_matthias | 0:84a4a0aa3ea6 | 3 | PCF8563::PCF8563(PinName sda, PinName scl) : i2c (sda, scl) |
hemmer_matthias | 0:84a4a0aa3ea6 | 4 | { |
hemmer_matthias | 0:84a4a0aa3ea6 | 5 | i2c.frequency(PCF8563_FREQ); //set the frequency |
hemmer_matthias | 0:84a4a0aa3ea6 | 6 | } |
hemmer_matthias | 0:84a4a0aa3ea6 | 7 | /* |
hemmer_matthias | 0:84a4a0aa3ea6 | 8 | * read function from the TRC |
hemmer_matthias | 0:84a4a0aa3ea6 | 9 | * read a value and return it |
hemmer_matthias | 0:84a4a0aa3ea6 | 10 | */ |
hemmer_matthias | 0:84a4a0aa3ea6 | 11 | uint8_t PCF8563::read(int i2c_r, int address) |
hemmer_matthias | 0:84a4a0aa3ea6 | 12 | { |
hemmer_matthias | 0:84a4a0aa3ea6 | 13 | uint8_t value; //temp 8bit |
hemmer_matthias | 0:84a4a0aa3ea6 | 14 | i2c.start(); //start |
hemmer_matthias | 0:84a4a0aa3ea6 | 15 | i2c.write(i2c_r); //write address |
hemmer_matthias | 0:84a4a0aa3ea6 | 16 | i2c.write(address); |
hemmer_matthias | 0:84a4a0aa3ea6 | 17 | i2c.start(); //restart |
hemmer_matthias | 0:84a4a0aa3ea6 | 18 | i2c.write(address); //read address |
hemmer_matthias | 0:84a4a0aa3ea6 | 19 | value = i2c.read(0); |
hemmer_matthias | 0:84a4a0aa3ea6 | 20 | i2c.stop(); |
hemmer_matthias | 0:84a4a0aa3ea6 | 21 | |
hemmer_matthias | 0:84a4a0aa3ea6 | 22 | return value; //returns var value of the method |
hemmer_matthias | 0:84a4a0aa3ea6 | 23 | } |
hemmer_matthias | 0:84a4a0aa3ea6 | 24 | uint8_t PCF8563::read(int i2c_w, int i2c_r, int address) |
hemmer_matthias | 0:84a4a0aa3ea6 | 25 | { |
hemmer_matthias | 0:84a4a0aa3ea6 | 26 | uint8_t value; //temp 8bit |
hemmer_matthias | 0:84a4a0aa3ea6 | 27 | i2c.start(); //start |
hemmer_matthias | 0:84a4a0aa3ea6 | 28 | i2c.write(i2c_w); //write address |
hemmer_matthias | 0:84a4a0aa3ea6 | 29 | i2c.write(address); |
hemmer_matthias | 0:84a4a0aa3ea6 | 30 | i2c.start(); //restart |
hemmer_matthias | 0:84a4a0aa3ea6 | 31 | i2c.write(i2c_r); //read address |
hemmer_matthias | 0:84a4a0aa3ea6 | 32 | value = i2c.read(0); |
hemmer_matthias | 0:84a4a0aa3ea6 | 33 | i2c.stop(); |
hemmer_matthias | 0:84a4a0aa3ea6 | 34 | return value; |
hemmer_matthias | 0:84a4a0aa3ea6 | 35 | } |
hemmer_matthias | 0:84a4a0aa3ea6 | 36 | /* firtly you write the address from the rtc |
hemmer_matthias | 0:84a4a0aa3ea6 | 37 | * secondly the register address |
hemmer_matthias | 0:84a4a0aa3ea6 | 38 | * last but not leat your value |
hemmer_matthias | 0:84a4a0aa3ea6 | 39 | */ |
hemmer_matthias | 0:84a4a0aa3ea6 | 40 | void PCF8563::write(int i2c_w, int address, int value) |
hemmer_matthias | 0:84a4a0aa3ea6 | 41 | { |
hemmer_matthias | 0:84a4a0aa3ea6 | 42 | i2c.start(); //start |
hemmer_matthias | 0:84a4a0aa3ea6 | 43 | i2c.write(i2c_w); //i2c write address |
hemmer_matthias | 0:84a4a0aa3ea6 | 44 | i2c.write(address); |
hemmer_matthias | 0:84a4a0aa3ea6 | 45 | i2c.write(value); |
hemmer_matthias | 0:84a4a0aa3ea6 | 46 | i2c.stop(); //stop |
hemmer_matthias | 0:84a4a0aa3ea6 | 47 | } |
hemmer_matthias | 0:84a4a0aa3ea6 | 48 | /* |
hemmer_matthias | 0:84a4a0aa3ea6 | 49 | * Binary Coded Decimal converter into decimal |
hemmer_matthias | 0:84a4a0aa3ea6 | 50 | */ |
hemmer_matthias | 0:84a4a0aa3ea6 | 51 | uint8_t PCF8563::bcdToDec(uint8_t val) |
hemmer_matthias | 0:84a4a0aa3ea6 | 52 | { |
hemmer_matthias | 0:84a4a0aa3ea6 | 53 | return (10*((val>>4)& 0x0F)+(val & 0x0F)); //convert from bcd to dec |
hemmer_matthias | 0:84a4a0aa3ea6 | 54 | } |