Subversion Repositories Code-Repo

Rev

Blame | Last modification | View Log | RSS feed

#include "defines.h"
#include "SMT6500.h"
#include "TIMER.h"
#include "IOC.h"

static uint16_t tmr_value;

void SMT6500_Init(void) {
    BLNK_LAT = 0;
    INIT_LAT = 0;
    BINH_LAT = 0;
}

uint16_t SMT6500_Read(void) {
    // Start transmission and timer
    INIT_LAT = 1;
    TIMER1_Start();
    tmr_value = 0;
    
    // Enable interrupt after 1ms (blanking period)
    __delay_ms(1);
    IOC_Enable();
    
    __delay_ms(120);
    INIT_LAT = 0;
    IOC_Disable();
    TIMER1_Stop();


    if (tmr_value == 0) {
        return 0xFFFF;
    } else {
        return tmr_value;
    }
}

void SMT6500_Callback(void) {
    tmr_value = TIMER1_Read();
    IOC_Disable();
    TIMER1_Stop();
}