Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 20200125_tiny85_neopixel.c
- *
- * Created: 2020-01-25 17:13:13
- * Author : uwezi
- */
- // set LFUSE 0xC1 HFUSE 0xDF
- #define F_CPU 16000000UL
- #include <avr/io.h>
- #include <util/delay.h>
- #include <util/atomic.h>
- #include <avr/power.h>
- #define T0H 0.1
- #define T0L 0.9
- #define T1H 0.7
- #define T1L 0.4
- #define WSPORT PORTB
- #define WSDDR DDRB
- #define WSPIN PB3
- void send_byte(uint8_t outbyte)
- {
- uint8_t old_port, port_h, port_l;
- ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
- {
- old_port = WSPORT;
- port_h = old_port | (1 << WSPIN);
- port_l = old_port & ~(1 << WSPIN);
- uint8_t i;
- for (i=0; i<8; i++)
- {
- if (outbyte & 0b10000000)
- {
- WSPORT = port_h; // here we set the pin to 1
- _delay_us(T1H);
- WSPORT = port_l;
- _delay_us(T1L);
- }
- else
- {
- WSPORT = port_h;
- _delay_us(T0H);
- WSPORT = port_l;
- _delay_us(T0L);
- }
- outbyte = outbyte << 1;
- }
- WSPORT = old_port;
- }
- }
- int main(void)
- {
- if (F_CPU == 16000000UL) clock_prescale_set(clock_div_1);
- uint8_t i, j;
- WSDDR |= (1 << WSPIN);
- i = 0;
- while (1)
- {
- for (j=0; j<3*3; j++)
- {
- send_byte(i);
- }
- i++;
- _delay_ms(10);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement