mirror of
git://projects.qi-hardware.com/antorcha.git
synced 2024-11-25 19:10:18 +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/io.h>
|
||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
#define F_CPU 8000000UL
|
#define F_CPU 8000000UL
|
||||||
#include <util/delay.h>
|
#include <util/delay.h>
|
||||||
|
|
||||||
@ -26,7 +27,7 @@ void led_show(const uint8_t p[LED_BYTES])
|
|||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
for (i = 0; i != 8; i++) {
|
for (i = 0; i != LED_BYTES; i++) {
|
||||||
while (!(UCSR0A & (1 << UDRE0)));
|
while (!(UCSR0A & (1 << UDRE0)));
|
||||||
UDR0 = p[i];
|
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)
|
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 <stdint.h>
|
||||||
|
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
|
||||||
|
|
||||||
#define N_LEDS 64
|
#define N_LEDS 64
|
||||||
#define LED_BYTES (N_LEDS/8)
|
#define LED_BYTES (N_LEDS/8)
|
||||||
|
|
||||||
|
|
||||||
void led_show(const uint8_t p[LED_BYTES]);
|
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_off(void);
|
||||||
void led_init(void);
|
void led_init(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user