mirror of
				https://github.com/Show-maket/IR-protocol.git
				synced 2025-10-30 10:32:35 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			98a21f5e56
			...
			dev-STM32
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 59d6e7aa23 | |||
| b2dfee5495 | 
							
								
								
									
										122
									
								
								IR-protocol.ino
									
									
									
									
									
								
							
							
						
						
									
										122
									
								
								IR-protocol.ino
									
									
									
									
									
								
							| @ -4,20 +4,28 @@ | |||||||
| #include "MemoryCheck.h" | #include "MemoryCheck.h" | ||||||
| /////////////// Pinout /////////////// | /////////////// Pinout /////////////// | ||||||
|  |  | ||||||
| #define encForward_PIN PB5 | #define encForward_PIN PA0 | ||||||
| #define encBackward_PIN PB4 | #define encBackward_PIN PA1 | ||||||
|  |  | ||||||
| #define dec1_PIN PA8 | #define dec0_PIN PB0 | ||||||
| #define dec2_PIN PB8 | #define dec1_PIN PB1 | ||||||
|  | #define dec2_PIN PB2 | ||||||
|  | #define dec3_PIN PB3 | ||||||
|  | #define dec4_PIN PB4 | ||||||
|  | #define dec5_PIN PB5 | ||||||
|  | #define dec6_PIN PB6 | ||||||
|  | #define dec7_PIN PB7 | ||||||
|  | #define dec8_PIN PB8 | ||||||
|  | #define dec9_PIN PB9 | ||||||
|  | #define dec10_PIN PB10 | ||||||
|  | #define dec11_PIN PB11 | ||||||
|  | #define dec12_PIN PB12 | ||||||
|  | #define dec13_PIN PB13 | ||||||
|  | #define dec14_PIN PB14 | ||||||
|  | #define dec15_PIN PB15 | ||||||
|  |  | ||||||
| #define LoopOut PB12 | #define LoopOut PC13 | ||||||
|  |  | ||||||
| #define ISR_1_Out PB6 |  | ||||||
| #define ISR_2_Out PB7 |  | ||||||
|  |  | ||||||
| // #define TestOut 13 |  | ||||||
|  |  | ||||||
| #define SignalDetectLed PB15 |  | ||||||
|  |  | ||||||
| //////////////// Ini ///////////////// | //////////////// Ini ///////////////// | ||||||
|  |  | ||||||
| @ -26,8 +34,8 @@ | |||||||
|  |  | ||||||
| //////////////// Var ///////////////// | //////////////// Var ///////////////// | ||||||
|  |  | ||||||
| IR_Decoder decForward(dec1_PIN, 555); | IR_Decoder dec0(dec1_PIN, 0); | ||||||
| IR_Decoder decBackward(dec2_PIN, 777); | IR_Decoder dec1(dec2_PIN, 1); | ||||||
|  |  | ||||||
| IR_Encoder encForward(42 /* , &decBackward */); | IR_Encoder encForward(42 /* , &decBackward */); | ||||||
| // IR_Encoder encBackward(321, encBackward_PIN); | // IR_Encoder encBackward(321, encBackward_PIN); | ||||||
| @ -35,34 +43,23 @@ IR_Encoder encForward(42 /* , &decBackward */); | |||||||
|  |  | ||||||
| //////////////////////// Функции прерываний //////////////////////// | //////////////////////// Функции прерываний //////////////////////// | ||||||
|  |  | ||||||
| void decForwardISR() |  | ||||||
| { |  | ||||||
|     decForward.isr(); |  | ||||||
|     // Serial.println("ISR"); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void decBackwardISR() |  | ||||||
| { |  | ||||||
|     decBackward.isr(); |  | ||||||
|     // Serial.println("ISR"); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static uint8_t *portOut; |  | ||||||
|  |  | ||||||
| void EncoderISR() | void EncoderISR() | ||||||
| { | { | ||||||
|     encForward.isr(); |     encForward.isr(); | ||||||
|     // encBackward.isr(); |     // encBackward.isr(); | ||||||
|     // encTree.isr(); |     // encTree.isr(); | ||||||
|     // TODO: Сделать выбор порта |  | ||||||
|     // *portOut = (*portOut & 0b11001111) | |  | ||||||
|     //     ( |  | ||||||
|     //         encForward.ir_out_virtual << 5U |  | ||||||
|     //         // | encBackward.ir_out_virtual << 6U |  | ||||||
|     //         // | encTree.ir_out_virtual << 2U |  | ||||||
|     //         ); |  | ||||||
|     digitalWrite(PB5, encForward.ir_out_virtual); |     digitalWrite(PB5, encForward.ir_out_virtual); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | //------------------------------------------------------------------ | ||||||
|  | #define dec_ISR(n) \ | ||||||
|  | void dec_##n##_ISR() { dec##n.isr(); } | ||||||
|  |  | ||||||
|  | dec_ISR(0); | ||||||
|  | dec_ISR(1); | ||||||
|  |  | ||||||
|  |  | ||||||
| ///////////////////////////////////////////////////////////////////// | ///////////////////////////////////////////////////////////////////// | ||||||
| uint8_t data0[] = {}; | uint8_t data0[] = {}; | ||||||
| uint8_t data1[] = {42}; | uint8_t data1[] = {42}; | ||||||
| @ -170,34 +167,30 @@ void MicrosTimerISR(){ | |||||||
|  |  | ||||||
| void setup() | void setup() | ||||||
| { | { | ||||||
|     // MicrosTimer.setOve |     Serial.begin(SERIAL_SPEED); | ||||||
|  |     Serial.println(F(INFO)); | ||||||
|  |  | ||||||
|     IR_Timer.setOverflow(carrierFrec*2, HERTZ_FORMAT); |     IR_Timer.setOverflow(carrierFrec*2, HERTZ_FORMAT); | ||||||
|     IR_Timer.attachInterrupt(1, EncoderISR); |     IR_Timer.attachInterrupt(1, EncoderISR); | ||||||
|      |      | ||||||
|  |  | ||||||
|     Serial.begin(SERIAL_SPEED); |  | ||||||
|     Serial.println(F(INFO)); |  | ||||||
|  |  | ||||||
|     pinMode(ISR_1_Out,OUTPUT); |  | ||||||
|     pinMode(ISR_2_Out,OUTPUT); |  | ||||||
|  |  | ||||||
|     pinMode(LoopOut, OUTPUT); |     pinMode(LoopOut, OUTPUT); | ||||||
|     pinMode(SignalDetectLed, OUTPUT); |  | ||||||
|  |  | ||||||
|     // pinMode(dec1_PIN, INPUT_PULLUP); |     // IR_DecoderRaw* blindFromForward [] { &decForward, &decBackward }; | ||||||
|     // pinMode(dec2_PIN, INPUT_PULLUP); |     // encForward.setBlindDecoders(blindFromForward, sizeof(blindFromForward) / sizeof(IR_DecoderRaw*)); | ||||||
|  |  | ||||||
|  |  | ||||||
|     pinMode(encForward_PIN, OUTPUT); |     pinMode(encForward_PIN, OUTPUT); | ||||||
|     pinMode(encBackward_PIN, OUTPUT); |     pinMode(encBackward_PIN, OUTPUT); | ||||||
|     pinMode(LED_BUILTIN, OUTPUT); |     pinMode(LED_BUILTIN, OUTPUT); | ||||||
|  |  | ||||||
|     // IR_DecoderRaw* blindFromForward [] { &decForward, &decBackward }; | #define decPinMode(n) pinMode(dec##n##_PIN, INPUT_PULLUP); | ||||||
|     // encForward.setBlindDecoders(blindFromForward, sizeof(blindFromForward) / sizeof(IR_DecoderRaw*)); | #define decAttach(n) attachInterrupt(dec##n##_PIN, dec_##n##_ISR, CHANGE);  | ||||||
|  | #define decSetup(n) /* decPinMode(n); */ decAttach(n); | ||||||
|  | #define decTick(n) dec##n.tick(); | ||||||
|  | #define decStat(n) rx_flag |= statusSimple(dec##n); | ||||||
|  |  | ||||||
|  | decSetup(0); | ||||||
|  |  | ||||||
|     attachInterrupt(dec1_PIN, decForwardISR, CHANGE); // D2 |  | ||||||
|     // attachInterrupt(dec2_PIN, decBackwardISR, CHANGE); // D3 |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void loop() | void loop() | ||||||
| @ -205,15 +198,18 @@ void loop() | |||||||
|     digitalToggle(LoopOut); |     digitalToggle(LoopOut); | ||||||
|     Timer::tick(); |     Timer::tick(); | ||||||
|  |  | ||||||
|     decForward.tick(); |  | ||||||
|     decBackward.tick(); |  | ||||||
|  |  | ||||||
|     status(decForward); |  | ||||||
|     // status(decBackward); |  | ||||||
|  |  | ||||||
|     // Serial.println(micros() - loopTimer); |     decTick(0); | ||||||
|     // loopTimer = micros(); |     decTick(1); | ||||||
|     // delayMicroseconds(120*5); |  | ||||||
|  | bool rx_flag; | ||||||
|  |     decStat(0); | ||||||
|  |     decStat(1); | ||||||
|  |  | ||||||
|  |     if(rx_flag){ | ||||||
|  |         Serial.print("\n\n\n\n"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     if (Serial.available()) |     if (Serial.available()) | ||||||
|     { |     { | ||||||
| @ -239,12 +235,20 @@ void loop() | |||||||
|  |  | ||||||
| void detectSignal() | void detectSignal() | ||||||
| { | { | ||||||
|     digitalWrite(SignalDetectLed, HIGH); |     // digitalWrite(SignalDetectLed, HIGH); | ||||||
|     signalDetectTimer.delay(50, millis, []() |     // signalDetectTimer.delay(50, millis, []() | ||||||
|                             { digitalWrite(SignalDetectLed, LOW); }); |     //                         { digitalWrite(SignalDetectLed, LOW); }); | ||||||
| } | } | ||||||
|  |  | ||||||
| // test | // test | ||||||
|  |  | ||||||
|  | bool statusSimple(IR_Decoder &dec){ | ||||||
|  |     if (dec.gotData.available()) | ||||||
|  |     {    | ||||||
|  |         Serial.print("DEC "); Serial.println(dec.id);  | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| void status(IR_Decoder &dec) | void status(IR_Decoder &dec) | ||||||
| { | { | ||||||
|     if (dec.gotData.available()) |     if (dec.gotData.available()) | ||||||
|  | |||||||
| @ -182,9 +182,9 @@ public: | |||||||
|     uint16_t getId() { return id; } |     uint16_t getId() { return id; } | ||||||
|     void setId(uint16_t id) { this->id = id; } |     void setId(uint16_t id) { this->id = id; } | ||||||
|  |  | ||||||
|  |     uint16_t id; | ||||||
| protected: | protected: | ||||||
|     ErrorsStruct errors; |     ErrorsStruct errors; | ||||||
|     uint16_t id; |  | ||||||
|     uint8_t crc8(uint8_t* data, uint8_t start, uint8_t end, uint8_t poly) { //TODO: сделать возможность межбайтовой проверки |     uint8_t crc8(uint8_t* data, uint8_t start, uint8_t end, uint8_t poly) { //TODO: сделать возможность межбайтовой проверки | ||||||
|         uint8_t crc = 0xff; |         uint8_t crc = 0xff; | ||||||
|         size_t i, j; |         size_t i, j; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user