+++ enhanced framework hardware interface
This commit is contained in:
parent
37d4d23f1d
commit
4a2ba4b710
33 changed files with 2328 additions and 1341 deletions
|
@ -16,7 +16,7 @@ Board::Board() {
|
|||
PORTC = 0; // Alle Low, kein Pollup
|
||||
|
||||
// Alle Ausgänge bis auf PD0+1(I2C) + 2+3(RS232)
|
||||
DDRD = (1 << PD2) | (1 << PD3) | (1 << PD4) | (1 << PD5) | (1 << PD6) | (1 << PD7);
|
||||
DDRD = (1 << PD3) | (1 << PD4) | (1 << PD5) | (1 << PD6) | (1 << PD7);
|
||||
PORTD = (1 << PD0) | (1 << PD1); // Pollup-Widerstand an PD0+1 aktivieren
|
||||
|
||||
// PE5 ist eingang
|
||||
|
@ -33,11 +33,11 @@ Board::Board() {
|
|||
|
||||
// aktiviere Kanal A+B auf PWM1 mit 8Bit
|
||||
TCCR1A = (1<< COM1A1) | (1<< COM1B1) | (1<< WGM10);
|
||||
TCCR1B = (1<<ICNC1) | (1<<CS12) | (1<<CS10); // set clock/prescaler 1/1024 -> enable counter
|
||||
TCCR1B = (1<<ICNC1) | (1<<CS11); // | (1<<CS12) | (1<<CS10); // set clock/prescaler 1/1024 -> enable counter
|
||||
|
||||
// aktiviere Kanal A+B auf PWM3 mit 8Bit
|
||||
TCCR3A = (1<< COM3A1) | (1<< COM3B1) | (1<< WGM10);
|
||||
TCCR3B = (1<<ICNC3) | (1<<CS32) | (1<<CS30); // set clock/prescaler 1/1024 -> enable counter
|
||||
TCCR3B = (1<<ICNC3) | (1<<CS31); // | (1<<CS32) | (1<<CS30); // set clock/prescaler 1/1024 -> enable counter
|
||||
|
||||
// Schalte Motoren auf 0
|
||||
motor(0,0);
|
||||
|
@ -49,8 +49,11 @@ Board::Board() {
|
|||
PORTE &= ~(1 << PE6); // Pin2 low
|
||||
PORTA |= (1 << PA2); // Pin1 high
|
||||
|
||||
// Uart-Interface einschalten
|
||||
uart1_init( 10); // 9600 BAUD bei 16MHz Atmel
|
||||
// Dribbler-richtung einstellen
|
||||
DRIBBLER_PORT |= DRIBBLER_A; // Pin1 high
|
||||
DRIBBLER_PORT &= ~DRIBBLER_B; // Pin2 low
|
||||
|
||||
|
||||
|
||||
// aktiviere interrupt
|
||||
sei();
|
||||
|
@ -202,27 +205,6 @@ void Board::motor(int i, int speed)
|
|||
MOTOR2_PORT |= MOTOR2_A;//In 1 ein
|
||||
}
|
||||
}
|
||||
else if(i == 3) // Dribbler... hier haben wir kein PWM
|
||||
{
|
||||
if(speed > 0)
|
||||
{
|
||||
DRIBBLER_PORT |= DRIBBLER_A;//In 1 ein
|
||||
DRIBBLER_PORT &= ~DRIBBLER_B;//In 2 aus
|
||||
DRIBBLER_PWMPORT |= DRIBBLER_PWM;
|
||||
}
|
||||
else if(speed < 0)
|
||||
{
|
||||
DRIBBLER_PORT |= DRIBBLER_B;//In 2 ein
|
||||
DRIBBLER_PORT &= ~DRIBBLER_A;//In 1 aus
|
||||
DRIBBLER_PWMPORT |= DRIBBLER_PWM;
|
||||
}
|
||||
else
|
||||
{
|
||||
DRIBBLER_PORT |= DRIBBLER_B;//In 2 ein
|
||||
DRIBBLER_PORT |= DRIBBLER_A;//In 1 ein
|
||||
DRIBBLER_PWMPORT &= ~DRIBBLER_PWM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Board::kicker() {
|
||||
|
@ -231,6 +213,19 @@ void Board::kicker() {
|
|||
KICKER_AUS
|
||||
}
|
||||
|
||||
void Board::dribblerOn() {
|
||||
DRIBBLER_AN
|
||||
}
|
||||
|
||||
void Board::dribblerOff() {
|
||||
DRIBBLER_AUS
|
||||
}
|
||||
|
||||
void Board::dribbler(bool status) {
|
||||
if(status) dribblerOn();
|
||||
else dribblerOff();
|
||||
}
|
||||
|
||||
//PWM routine für den Beeper
|
||||
ISR (TIMER0_OVF_vect)
|
||||
{
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <stdlib.h>
|
||||
#include "uart.h"
|
||||
//#include "uart.h"
|
||||
#include "../global.h"
|
||||
|
||||
//#define abs(a) ((a < 0)? -a : a)
|
||||
|
@ -26,10 +26,12 @@
|
|||
#define MOTOR2_PWM OCR3A
|
||||
#define MOTOR2_A (1 << 5)
|
||||
#define MOTOR2_B (1 << 4)
|
||||
|
||||
|
||||
|
||||
// Dribbler
|
||||
#define DRIBBLER_PORT PORTD
|
||||
#define DRIBBLER_PWMPORT PORTA
|
||||
#define DRIBBLER_PWM (1 << 5)
|
||||
#define DRIBBLER_AN PORTA |= (1 << 5);
|
||||
#define DRIBBLER_AUS PORTA &= ~(1 << 5);
|
||||
#define DRIBBLER_A (1 << 6)
|
||||
#define DRIBBLER_B (1 << 7)
|
||||
|
||||
|
@ -62,6 +64,10 @@ public:
|
|||
void led(bool status);
|
||||
void motor(int i, int speed);
|
||||
void kicker();
|
||||
|
||||
void dribbler(bool status);
|
||||
void dribblerOn();
|
||||
void dribblerOff();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#include "keylcd.h"
|
||||
|
||||
KeyLCD::KeyLCD() : i2c() {
|
||||
|
||||
KeyLCD::KeyLCD() {
|
||||
// Uart-Interface einschalten
|
||||
uart1_init( 103); // 9600 BAUD bei 16MHz Atmel
|
||||
}
|
||||
|
||||
KeyLCD::~KeyLCD() {
|
||||
|
@ -10,12 +11,7 @@ KeyLCD::~KeyLCD() {
|
|||
|
||||
// Gibt Daten auf dem keyLCD aus
|
||||
void KeyLCD::print(char *data) {
|
||||
int len=strlen(data);
|
||||
uint8_t buf[len+1];
|
||||
|
||||
for (int i=0; i<len; i++) buf[i] = uint8_t(data[i]);
|
||||
|
||||
i2c.send(I2C_KEYLCD, buf, len);
|
||||
uart1_puts(data);
|
||||
}
|
||||
|
||||
// Löscht das keyLCD
|
||||
|
@ -23,6 +19,3 @@ void KeyLCD::clear() {
|
|||
|
||||
}
|
||||
|
||||
uint8_t KeyLCD::error() {
|
||||
return i2c.error();
|
||||
}
|
||||
|
|
|
@ -1,22 +1,18 @@
|
|||
#ifndef _KEYLCD_H_
|
||||
#define _KEYLCD_H_
|
||||
|
||||
#include "i2c.h"
|
||||
//#include "i2c.h"
|
||||
#include "string.h"
|
||||
|
||||
#define I2C_KEYLCD 2
|
||||
#define LCD_CMD_PRINTSTR 0
|
||||
#include "uart.h"
|
||||
|
||||
class KeyLCD
|
||||
{
|
||||
private:
|
||||
I2C i2c;
|
||||
public:
|
||||
KeyLCD();
|
||||
~KeyLCD();
|
||||
|
||||
void print(char* data);
|
||||
uint8_t error();
|
||||
void clear();
|
||||
};
|
||||
|
||||
|
|
Reference in a new issue