Plamen Totev / Mbed 2 deprecated peltier

Dependencies:   mbed TextLCD

Committer:
redplam
Date:
Sat Apr 12 20:07:15 2014 +0000
Revision:
3:0ef2ced1f02d
Parent:
1:3aec489c7366
myproj

Who changed what in which revision?

UserRevisionLine numberNew contents of line
redplam 1:3aec489c7366 1 #include "DS1Wire.h"
redplam 1:3aec489c7366 2 #include "mbed.h"
redplam 1:3aec489c7366 3 #include <stdint.h>
redplam 1:3aec489c7366 4
redplam 1:3aec489c7366 5 // Timing delay for 1-wire serial standard option
redplam 1:3aec489c7366 6 enum DELAY { A = 6, B = 64, C = 60, D = 10, E = 9, F = 55, G = 0, H = 480, I = 70, J = 410 };
redplam 1:3aec489c7366 7
redplam 1:3aec489c7366 8
redplam 1:3aec489c7366 9 int Reset(DigitalInOut& pin) {
redplam 1:3aec489c7366 10 pin.output();
redplam 1:3aec489c7366 11 pin = 0; // drive bus low
redplam 1:3aec489c7366 12 wait_us(H);
redplam 1:3aec489c7366 13 pin.input(); // release bus
redplam 1:3aec489c7366 14 wait_us(I);
redplam 1:3aec489c7366 15 uint32_t result = pin; // read bus value
redplam 1:3aec489c7366 16 wait_us(J);
redplam 1:3aec489c7366 17 return result;
redplam 1:3aec489c7366 18 }
redplam 1:3aec489c7366 19
redplam 1:3aec489c7366 20 void WriteBit(DigitalInOut& pin, uint32_t bit) {
redplam 1:3aec489c7366 21 pin.output();
redplam 1:3aec489c7366 22 if (bit) {
redplam 1:3aec489c7366 23 pin = 0; // drive bus low
redplam 1:3aec489c7366 24 wait_us(A); // delay A
redplam 1:3aec489c7366 25 pin.input(); // release bus
redplam 1:3aec489c7366 26 wait_us(B); // delay B
redplam 1:3aec489c7366 27 } else {
redplam 1:3aec489c7366 28 pin = 0; // drive bus low
redplam 1:3aec489c7366 29 wait_us(C); // delay C
redplam 1:3aec489c7366 30 pin.input(); // release bus
redplam 1:3aec489c7366 31 wait_us(D); // delay D
redplam 1:3aec489c7366 32 }
redplam 1:3aec489c7366 33 }
redplam 1:3aec489c7366 34
redplam 1:3aec489c7366 35 uint32_t ReadBit(DigitalInOut& pin) {
redplam 1:3aec489c7366 36 uint32_t bit_value;
redplam 1:3aec489c7366 37 pin.output();
redplam 1:3aec489c7366 38 pin = 0; // drive bus low
redplam 1:3aec489c7366 39 wait_us(A); // delay A
redplam 1:3aec489c7366 40 pin.input(); // release bus
redplam 1:3aec489c7366 41 wait_us(E); // delay E
redplam 1:3aec489c7366 42 bit_value = pin; // master sample bus
redplam 1:3aec489c7366 43 wait_us(F);
redplam 1:3aec489c7366 44 return bit_value;
redplam 1:3aec489c7366 45 }
redplam 1:3aec489c7366 46
redplam 1:3aec489c7366 47 void WriteByte(DigitalInOut& pin, uint32_t byte) {
redplam 1:3aec489c7366 48 for (uint32_t bit = 0; bit < 8; ++bit) {
redplam 1:3aec489c7366 49 WriteBit(pin, byte & 0x01); // lsb to msb
redplam 1:3aec489c7366 50 byte >>= 1; // right shift by 1-bit
redplam 1:3aec489c7366 51 }
redplam 1:3aec489c7366 52 }
redplam 1:3aec489c7366 53
redplam 1:3aec489c7366 54 uint32_t ReadByte(DigitalInOut& pin) {
redplam 1:3aec489c7366 55 uint32_t byte = 0;
redplam 1:3aec489c7366 56 for (uint32_t bit = 0; bit < 8; ++bit) {
redplam 1:3aec489c7366 57 byte |= (ReadBit(pin) << bit); // Reads lsb to msb
redplam 1:3aec489c7366 58 }
redplam 1:3aec489c7366 59 return byte;
redplam 1:3aec489c7366 60 }