Merge branch 'master' of github.com:c3d2/pentabug

This commit is contained in:
john stone 2013-09-05 23:08:46 +02:00
commit 9c827808ff
4 changed files with 92 additions and 10 deletions

View File

@ -11,8 +11,8 @@ static void blinker(void) {
led_inv(RIGHT);
led_inv(LEFT);
uint8_t i;
for(i = 0; i < 50; ++i) {
wait_ms(500);
if(button_clicked(RIGHT)) {
motor_on();
}
@ -21,8 +21,6 @@ static void blinker(void) {
motor_off();
}
wait_ms(10);
}
}
REGISTER(blinker, init, NULL);

BIN
firmware/doc/befehle.odt Normal file

Binary file not shown.

View File

@ -0,0 +1,14 @@
#ifndef MATRIX_H
#define MATRIX_H
#include <stdint.h>
void matrix_start(void);
void matrix_stop(void);
void matrix_show(void);
void matrix_init(void);
void matrix_set(uint8_t x, uint8_t y, uint8_t active);
#endif /* MATRIX_H */

70
firmware/lib/matrix.c Normal file
View File

@ -0,0 +1,70 @@
#include <pentabug/matrix.h>
#include <pentabug/timer.h>
#include <pentabug/hal.h>
static uint8_t pixels[9];
static uint8_t index;
void matrix_init(void) {
DDRD |= (1 << 5) | (1 << 6) | (1 << 7);
DDRC |= (1 << 4) | (1 << 5);
DDRB |= 1 << 2;
}
static void move_line(uint8_t line) {
PORTD &= ~0xe0;
PORTD |= 1 << (line + 5);
}
static void write_line(uint8_t data[]) {
PORTC |= (1 << 5) | (1 << 4);
PORTB |= 1 << 2;
if(data[0]) {
PORTC &= ~(1 << 5);
}
if(data[1]) {
PORTC &= ~(1 << 4);
}
if(data[2]) {
PORTB &= ~(1 << 2);
}
}
static void matrix_int(void) {
++index;
if(index >= 3) {
index = 0;
}
move_line(index);
write_line(pixels + (index * 3));
}
void matrix_start(void) {
matrix_init();
start_timer(PRESCALE_64, 125, matrix_int);
}
void matrix_stop(void) {
stop_timer();
}
void matrix_show(void) {
uint8_t i;
for(i = 0; i < 3; ++i) {
move_line(i);
write_line(pixels + (i * 3));
wait_ms(3);
}
}
void matrix_set(uint8_t x, uint8_t y, uint8_t active) {
pixels[x*3+y] = active;
}