printer

Dependencies:   HCSR04 USBDevice mbed-src mbed mbed

Fork of Serial_HelloWorld_Mbed by mbed official

Committer:
redplam
Date:
Mon Apr 14 14:38:46 2014 +0000
Revision:
1:a66cf68ec8ca
printer

Who changed what in which revision?

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