Stefan Schuermans
some fixes for alternative firmware by Martin Müllenhaupt to increase stability with other compiler versions
Stefan Schuermans commited d43405f at 2015-08-24 17:22:33
/* bulb - BlinkenArea ultimate logo board
version 1.0 date 2015-08-15
Copyright (C) 2015 Martin Müllenhaupt <mm+bulb@netlair.de>
Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL // 8 MHz
#include <util/delay.h>
#include <stdlib.h>
#define NUM_ZEILEN 6
#define NUM_SPALTEN 7
#define NUM_LEDS (NUM_ZEILEN * NUM_SPALTEN)
#define MAX_TIME 32
#define LED(index) frame[updateBufferIndex][index/NUM_SPALTEN][index%NUM_SPALTEN]
#define LED_INDEX_FROM_MANUAL(index) frame[updateBufferIndex][(index-1)/NUM_SPALTEN][(index-1)%NUM_SPALTEN]
/* 0 = off; 255 = max brightness */
uint8_t frame[2][NUM_ZEILEN][NUM_SPALTEN] = {0};
uint8_t displayBufferIndex = 0;
uint8_t updateBufferIndex = 1;
ISR(TIMER1_COMPA_vect)
{
static uint8_t zeile = 0;
static uint8_t time = 0;
++time;
if (time == MAX_TIME)
{
++zeile;
zeile %= NUM_ZEILEN;
PORTB = 0;
PORTD = ~(1 << zeile);
time = 0;
}
uint8_t row_data = 0;
for(uint8_t spalte = 0; spalte < NUM_SPALTEN; ++spalte)
{
if (frame[displayBufferIndex][zeile][spalte] > time)
{
row_data |= (1 << spalte);
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX