User Tools

Site Tools


importsequence

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

importsequence [2014/11/02 20:22] (current)
admin created
Line 1: Line 1:
 +<​code>​
 +unsigned char ImportSequence(){
 + // P1.6 and P1.7 will be Fototransistors for getting the Data
 + // P1.4 is a pushbutton for starting the sequence will maybe handled as interrupt
 + static unsigned char OldPinState = 0;
 + unsigned char PinState = 0;
 + static unsigned char count1 = 0;
 + static unsigned char count2 = 0;
 + static unsigned char Valid = 0;
 + static unsigned long Millis = 10000; // Wait 10 Seconds, if sequence not starting in this time, end function
 + unsigned long CurrentMillis = millis();
 + unsigned long PreviousMillis = CurrentMillis;​
 + static unsigned char ArrayLength = 0;
 + static unsigned char ActualByteOfArray = 0;
 + static unsigned char ByteCounter = 0;
 + // Startsequnece. If Both inputs blink 3 times together, and first input blinks 3 times alone,
 + // then go on with importing the new sequence, if this does not happen within 10seconds, leave step.
 + while (CurrentMillis - PreviousMillis <= Millis || Valid == 1){
 + CurrentMillis = millis();
 + PinState = P1IN & 0xC0;
 +        if (PinState == 0xC0 && PinState != OldPinState){
 +        count1++;
 +        }
 +        if (PinState == 0x40 && PinState != OldPinState){
 +        count2++;
 +        }
 +        OldPinState = PinState;
 +        if (count1 == 3 && count2 == 3){
 +        Valid = 1;
 +        }
 + }
 + // Import first byte, length of Array
 + ByteCounter = 0;
 + while (Valid == 1 && ByteCounter <= 7){
 + PinState = P1IN & 0xC0;
 +        if (PinState == 0xC0 && PinState != OldPinState){
 +    ArrayLength = ArrayLength << 1;
 +        ArrayLength |= 0x01;
 +        ByteCounter++;​
 +        }
 +        if (PinState == 0x40 && PinState != OldPinState){
 +    ArrayLength = ArrayLength << 1;
 +    ByteCounter++;​
 +        }
 + OldPinState = PinState;
 + }
 + unsigned char FreqArray[ArrayLength];​
 + while (Valid == 1 && ActualByteOfArray < ArrayLength){
 + ByteCounter = 0;
 + while (Valid == 1 && ByteCounter <= 7){
 + PinState = P1IN & 0xC0;
 +         if (PinState == 0xC0 && PinState != OldPinState){
 +     FreqArray[ActualByteOfArray] = FreqArray[ActualByteOfArray] << 1;
 +     FreqArray[ActualByteOfArray] |= 0x01;
 +         ByteCounter++;​
 +         }
 +         if (PinState == 0x40 && PinState != OldPinState){
 +         FreqArray[ActualByteOfArray] = FreqArray[ActualByteOfArray] << 1;
 +     ByteCounter++;​
 +         }
 + OldPinState = PinState;
 + }
 + ActualByteOfArray++;​
 + }
 + unsigned char TimeArray[ArrayLength];​
 + ActualByteOfArray = 0;
 + while (Valid == 1 && ActualByteOfArray < ArrayLength){
 + ByteCounter = 0;
 + while (Valid == 1 && ByteCounter <= 7){
 + PinState = P1IN & 0xC0;
 +         if (PinState == 0xC0 && PinState != OldPinState){
 +     TimeArray[ActualByteOfArray] = TimeArray[ActualByteOfArray] << 1;
 +     TimeArray[ActualByteOfArray] |= 0x01;
 +         ByteCounter++;​
 +         }
 +         if (PinState == 0x40 && PinState != OldPinState){
 +         TimeArray[ActualByteOfArray] = TimeArray[ActualByteOfArray] << 1;
 +     ByteCounter++;​
 +         }
 + OldPinState = PinState;
 + }
 + ActualByteOfArray++;​
 + }
 +}
 +
 +</​code>​
  
importsequence.txt ยท Last modified: 2014/11/02 20:22 by admin