Exemple #1
0
void soft_spi0__write(uint8_t value) {
    uint8_t i = 8;
    do {
        OUT_0(SOFT_SPI0__SCK);
        if (value & 0x80) OUT_1(SOFT_SPI0__MOSI); else OUT_0(SOFT_SPI0__MOSI);
        value <<= 1;
        OUT_1(SOFT_SPI0__SCK);
    }
    while (--i);
}
void onewire__bus__set(const uint8_t value) {
    if (value) {
        OUT_1(ONEWIRE__OUT);  // Buffer pull-up pulls up the bus high.
    }
    else {
        OUT_0(ONEWIRE__OUT);  // Buffer inverts and drives the bus low.
    }
}
Exemple #3
0
void state_change_pulse_transmitter__run(void) {
    if (stateChangePulseTimeout != 0) // generating pulse
    {
        --stateChangePulseTimeout;
        if (stateChangePulseTimeout == 0) // just reached 0 - pulse generated
        {
            OUT_1(STATE_CHANGE);
        }
    }
}
Exemple #4
0
int main(void) {
    soft_spi1__init();
    usart0__init();
    usart0__rx__enabled__set(1);

    USE_AS_OUTPUT(LCD__LED);
    
    lcd__init();
    lcd__clear();
    
    lcd__terminal__reset();

#if !defined(__AVR_ARCH__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmissing-noreturn"
#endif
    for(;;) {
        uint8_t c = usart0__in__read();
        if (c == 0) {
            lcd__terminal__reset();
        } else if (c == 1) {
            c = usart0__in__read();
            lcd__contrast(c);
        } else if (c == 2) {
            OUT_1(LCD__LED);
        } else if (c == 3) {
            OUT_0(LCD__LED);
        } else if (c == 13) {
        } else if (c == 10) {
            lcd__terminal__line_feed();
        } else if (c == 0x1F) {
            uint8_t count = usart0__in__read();
            for (;;) {
                c = usart0__in__read();
                soft_spi1__write(c);
                if (!(--count)) break;
            }
        } else {
            lcd__terminal__putch(c);
        }
    }
#if !defined(__AVR_ARCH__)
#pragma clang diagnostic pop
#endif

#if !defined(__AVR_ARCH__)
#pragma clang diagnostic push
#pragma ide diagnostic ignored "OCDFAInspection"
#endif
    return 0;
#if !defined(__AVR_ARCH__)
#pragma clang diagnostic pop
#endif
}
void onewire__bus__init(void) {
    USE_AS_OUTPUT(ONEWIRE__OUT);
    OUT_1(ONEWIRE__OUT);
}
Exemple #6
0
/** Reads the bit value from the bus */
ISR(timer2__overflow__interrupt__VECTOR, ISR_NAKED) {
    if (onewire__bus__get()) OUT_1(LED); else OUT_0(LED);
    reti();
}