X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=dart%2Fdart.pde;fp=dart%2Fdart.pde;h=0000000000000000000000000000000000000000;hp=6819665bf3ddb2dea6d2c21f1193821d2d173c9d;hb=8e8f26d01ab21db191f62f2732808dcb75e8a74f;hpb=050398149d26f27a0b19971cbcea990574d73a57 diff --git a/dart/dart.pde b/dart/dart.pde deleted file mode 100644 index 6819665..0000000 --- a/dart/dart.pde +++ /dev/null @@ -1,144 +0,0 @@ -#include -#include -#include - -//Player+Handycap BTN analog 5 -#define PLAYER_SIG_PORTC B00100000 -//INPUT PINS digital 2-7 PIND -#define PIND_MASK B11111100 -//INPUT PINS digitat 8-12 PINB -#define PINB_MASK B00011111 -//INPUT PINS analog 0-4 PINC -#define PINC_MASK B00011111 - -#define INPUT_SIG_PORTD B11000000 -#define INPUT_SIG_PORTB B00011111 -#define INPUT_SIG_PORTC B00010000 - -#define OUTPUT_SIG_PORTB ( PINB_MASK & ~INPUT_SIG_PORTB ) -// B00011111 & ! B00011111 = 0 -#define OUTPUT_SIG_PORTC ( PINC_MASK & ~INPUT_SIG_PORTC ) -// B00011111 & ! B00010000 = B00001111 -#define OUTPUT_SIG_PORTD ( PIND_MASK & ~INPUT_SIG_PORTD ) -// B11111100 & ! B11000000 = 00111100 -union union16 { - byte uint8[2]; - uint16_t uint16; -}; - -uint8_t zahlen[] = {115,110,46,78,51,83,82,68,99,105,41,73,35,67,50,36,113,108,44,76,49,81,114,100,98,101,37,69,34,66,102,109,111,116,52,84,47,79,57,89,106,97,33,65,42,74,38,45,112,104,40,72,48,80,0,0,103,107,43,75,39,71,70,77} ; - -union union32 { - byte uint8[4]; - uint16_t uint16[2]; - uint32_t uint32; -}; - -typedef unsigned char byte; - -void start_timer() -{ - // timer 1: 2 ms - TCCR1A = 0; // prescaler 1:8, WGM = 4 (CTC) - TCCR1B = 1< 0.08ms @ 16 MHz -> 1*alpha -// OCR1A = 207; // (1+207)*8 = 1664 -> 0.104ms @ 16 MHz -> 1*alpha - TCNT1 = 0; // reseting timer - TIMSK1 = 1<>=1) - value++; - value<<=3; - while(output>>=1) - value++; - - uint8_t zahl = zahlen[value]; - uint8_t multi = zahl >> 5; - uint8_t base = zahl & B11111; - Serial.print(0+multi); - Serial.print("\t"); - Serial.println(0+base); -} - -static void send_btn(byte btn) -{ - uint8_t value=0; - while(btn>>=1) - value++; - Serial.print("btn\t"); - Serial.println(0+value); - -} - -static void PCint() { - byte PINB_COPY = PINB; - byte PINC_COPY = PINC; - byte PIND_COPY = PIND; - byte output = ( OUTPUT_SIG_PORTC & ~ PINC_COPY ) | (( OUTPUT_SIG_PORTD & ~ PIND_COPY ) <<2 ); // no output on B - byte input = ( INPUT_SIG_PORTB & ~ PINB_COPY ) | ( ( INPUT_SIG_PORTC & ~ PINC_COPY ) <<1 ) |( INPUT_SIG_PORTD & ~ PIND_COPY ); - byte btn = ( PLAYER_SIG_PORTC & ~ PINC_COPY ); - - if ( input && output) - send_dart(input,output); - else if (btn) - send_btn(btn); - else - return; - - //Timeout verhindert zu schnelle Wiederholungen - PCICR&= ~ B111; // Disable Interrupt - start_timer(); -} - - - -SIGNAL(PCINT0_vect) { - PCint(); -} -SIGNAL(PCINT1_vect) { - PCint(); -} -SIGNAL(PCINT2_vect) { - PCint(); -} -void setup() -{ -// pinMode(RF433_PIN, INPUT); // set pin to input -// digitalWrite(RF433_PIN, LOW); // turn of pullup resistors - //Set Port as input - DDRB=0; -// disable pull up - PORTB=0; - DDRD = DDRD & 3; - PORTD= PORTD & 3; - - DDRC=0; - PORTC=0; - Serial.begin(57600); - PCMSK0=PINB_MASK & INPUT_SIG_PORTB; - PCMSK1=(PINC_MASK & INPUT_SIG_PORTC) | PLAYER_SIG_PORTC; - PCMSK2=PIND_MASK & INPUT_SIG_PORTD; - PCICR|= B111; -} - - -void loop() -{ -}