test leds works already

This commit is contained in:
Stefan Rupp 2014-03-12 17:07:18 +01:00
parent 39ac2613bb
commit fe3055f15a
3 changed files with 25 additions and 13 deletions

16
main.c
View File

@ -17,17 +17,27 @@
#include "spi.h" #include "spi.h"
#include "ledcontroller.h" #include "ledcontroller.h"
#include "rtc.h" #include "rtc.h"
#include <util/delay.h>
int main(void) int main(void)
{ {
timer_init(); timer_init();
rtc_init(0); //rtc_init(0);
spi_slave_init(); //spi_slave_init();
ledcontroller_init(); ledcontroller_init();
sei(); sei();
lcd_init(); //lcd_init();
DDRC |= (1<<PC5);
/*
while (1) {
PORTC ^= (1<<PC5);
timer_wait(5000);
//_delay_ms(100);
}
*/
rgbyteclock(); rgbyteclock();
// rgbyteclock() should never end, but who knows... // rgbyteclock() should never end, but who knows...
while (1) { ; } while (1) { ; }

View File

@ -21,38 +21,39 @@ void rgbyteclock(void)
{ {
while(1) { while(1) {
PORTC ^= (1<<PC5);
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
led_set(i, 0x7ff, 0x00, 0x00); led_set(i, 0x7ff, 0x00, 0x00);
led_flush(); led_flush();
timer_wait(200); timer_wait(2000);
} }
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
led_set(i, 0x00, 0x00, 0x00); led_set(i, 0x00, 0x00, 0x00);
} }
led_flush(); led_flush();
timer_wait(100); timer_wait(1000);
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
led_set(i, 0x00, 0x7ff, 0x00); led_set(i, 0x00, 0x7ff, 0x00);
led_flush(); led_flush();
timer_wait(200); timer_wait(2000);
} }
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
led_set(i, 0x00, 0x00, 0x00); led_set(i, 0x00, 0x00, 0x00);
} }
led_flush(); led_flush();
timer_wait(100); timer_wait(1000);
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
led_set(i, 0x00, 0x00, 0x7ff); led_set(i, 0x00, 0x00, 0x7ff);
led_flush(); led_flush();
timer_wait(200); timer_wait(2000);
} }
for (int i=0; i<15; i++) { for (int i=0; i<15; i++) {
led_set(i, 0x00, 0x00, 0x00); led_set(i, 0x00, 0x00, 0x00);
} }
led_flush(); led_flush();
timer_wait(100); timer_wait(1000);
} }

View File

@ -32,6 +32,7 @@ ISR(TIMER0_COMPA_vect) {
void timer_init(void) void timer_init(void)
{ {
uint8_t sreg = SREG; uint8_t sreg = SREG;
// Stop all interrupts // Stop all interrupts
cli(); cli();
@ -42,16 +43,16 @@ void timer_init(void)
// - Time accuracy: 1 millisecond (corresponding frequency: 1kHz) // - Time accuracy: 1 millisecond (corresponding frequency: 1kHz)
// ==> F_CPU = 20Mhz // ==> F_CPU = 20Mhz
// ==> 20Mhz / 256 = 78.125 kHz // ==> 20Mhz / 256 = 78.125 kHz
// ==> let timer count to 78 to get (almost) 1kHz frequency // ==> let timer count to 77 to get (almost) 1kHz frequency
// therefore: // therefore:
// - Set Timer/Counter0 prescaler to 256 ==> (1<<CS02) // - Set Timer/Counter0 prescaler to 256 ==> (1<<CS02)
// - Set OCR2 to 78 // - Set OCR2 to 77
// - CTC ( i.e. clear counter, when COUNTER == OCR0A) ==> (1<<WGM01) // - CTC ( i.e. clear counter, when COUNTER == OCR0A) ==> (1<<WGM01)
// unfortunately, due to the 20MHz and the coarse prescaler dividers // unfortunately, due to the 20MHz and the coarse prescaler dividers
// provided, we can't get any closer to the desired frequency of // provided, we can't get any closer to the desired frequency of
// 1kHz :( // 1kHz :(
OCR0A = 78; OCR0A = 77;
TCCR0B = (1<<WGM02); TCCR0B = (1<<WGM01);
TCCR0A = (1<<CS02); TCCR0A = (1<<CS02);
// Interrupts setzen // Interrupts setzen