Subversion Repositories AFRtranscoder

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 3
Line 22... Line 22...
22
/// Data Format :
22
/// Data Format :
23
/// byte0 = AFR*10 (so 148 = 14.8 AFR)
23
/// byte0 = AFR*10 (so 148 = 14.8 AFR)
24
/// byte1 = Temp in C of the sensor
24
/// byte1 = Temp in C of the sensor
25
/// byte2-7 = not used
25
/// byte2-7 = not used
26
///  The TinyWB is based on the SLCFree by 14point7
26
///  The TinyWB is based on the SLCFree by 14point7
27
/// actually this is rubbish - decode from using protocol analyser. 
27
/// actually this document is wrong - below is the decode from using protocol analyser. 
28
/// when the sensor is not connected, the unit outputs something like 1,200 gap of 50mS and repeats#
28
/// when the lambda sensor is not connected, the unit outputs something like 1,200 gap of 50mS and repeats#
29
/// 
29
/// 
30
// when the sensor is connected, the unit outputs this pattern
30
/// when the lambda sensor is connected, the unit outputs this pattern
31
 
31
 
32
//[0] 0.0000000000,1,,   sync ?
32
//[0] 0.0000000000,1,,   sync ?
33
//[1] 0.0000867750,200,, afr
33
//[1] 0.0000867750,200,, afr
34
//[2] 0.0001735250,41,,  temperature
34
//[2] 0.0001735250,41,,  temperature
35
//[3] 0.0002603000,2,,   filler
35
//[3] 0.0002603000,2,,   filler
Line 46... Line 46...
46
static char tempCode = 0;
46
static char tempCode = 0;
47
 
47
 
48
char pollTinyWB(struct usart_ctl *instance, float *AFRvalue, float *temperature)
48
char pollTinyWB(struct usart_ctl *instance, float *AFRvalue, float *temperature)
49
{
49
{
50
    int valid = 0;
50
    int valid = 0;
-
 
51
    // PollSerial returns non zero if characters are in the serial input buffer 
51
    while (PollSerial(instance))
52
     while (PollSerial(instance))
52
    {
53
    {
53
        // deal with time-based synchronisation - 8 byte bursts with gaps
54
        // deal with time-based synchronisation - 8 byte bursts with gaps
54
        uint32_t now = HAL_GetTick();
55
        uint32_t now = HAL_GetTick();
55
        if (now - lastCharTime > GAP_TIME_MS)
56
        if (now - lastCharTime > GAP_TIME_MS)
56
        {
57
        {
57
            characterIndex = 0;
58
            characterIndex = 0;
58
        }
59
        }
59
        lastCharTime = now;
60
        lastCharTime = now;
-
 
61
        // GetCharSerial is implemented as a blocking read from a USART : but because it is 
-
 
62
        // only called when PollSerial is true, it is never going to block. 
60
        char c = GetCharSerial(instance);
63
        char c = GetCharSerial(instance);
61
        if (characterIndex < CHARS_PER_FRAME)
64
        if (characterIndex < CHARS_PER_FRAME)
62
 
65
 
63
            switch (characterIndex)
66
            switch (characterIndex)
64
            {
67
            {