mirror of
git://projects.qi-hardware.com/antorcha.git
synced 2024-11-01 09:09:23 +02:00
tornado/fw/led.[ch]: add led_show_pgm to display row from Flash
This commit is contained in:
parent
2161eec066
commit
c6bef66427
@ -15,6 +15,7 @@
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <avr/pgmspace.h>
|
||||
#define F_CPU 8000000UL
|
||||
#include <util/delay.h>
|
||||
|
||||
@ -26,7 +27,7 @@ void led_show(const uint8_t p[LED_BYTES])
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i != 8; i++) {
|
||||
for (i = 0; i != LED_BYTES; i++) {
|
||||
while (!(UCSR0A & (1 << UDRE0)));
|
||||
UDR0 = p[i];
|
||||
}
|
||||
@ -52,11 +53,26 @@ void led_show(const uint8_t p[LED_BYTES])
|
||||
}
|
||||
|
||||
|
||||
void led_show_pgm(const prog_uint8_t p[LED_BYTES])
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i != LED_BYTES; i++) {
|
||||
while (!(UCSR0A & (1 << UDRE0)));
|
||||
UDR0 = pgm_read_byte(p+i);
|
||||
}
|
||||
|
||||
_delay_us(4); /* 16 bits at 4 MHz */
|
||||
SET(LED_LCLK);
|
||||
CLR(LED_LCLK);
|
||||
}
|
||||
|
||||
|
||||
void led_off(void)
|
||||
{
|
||||
static uint8_t zero[LED_BYTES];
|
||||
static uint8_t zero[LED_BYTES] PROGMEM = { 0, };
|
||||
|
||||
led_show(zero);
|
||||
led_show_pgm(zero);
|
||||
}
|
||||
|
||||
|
||||
|
@ -16,12 +16,15 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
|
||||
#define N_LEDS 64
|
||||
#define LED_BYTES (N_LEDS/8)
|
||||
|
||||
|
||||
void led_show(const uint8_t p[LED_BYTES]);
|
||||
void led_show_pgm(const prog_uint8_t p[LED_BYTES]);
|
||||
void led_off(void);
|
||||
void led_init(void);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user