Created
May 27, 2021 13:12
-
-
Save Bouni/2cfc1f0cd1ed617a90726757c58ad5b4 to your computer and use it in GitHub Desktop.
Hoermann HCP protocoll test on ESP32 (syncbreak hack)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* vim:set sw=2: */ | |
#include <Arduino.h> | |
#define RX2 21 | |
#define TX2 22 | |
#define DIR 17 | |
int rx = 0; | |
void enable_transmitter() { | |
// set output for RS485 Transmitter | |
digitalWrite(DIR, HIGH); | |
} | |
void disable_transmitter() { | |
// clear output for RS485 Transmitter | |
digitalWrite(DIR, LOW); | |
} | |
void syncbreak() | |
{ | |
Serial2.end(); | |
gpio_reset_pin(GPIO_NUM_22); // Hack found here: https://github.com/espressif/arduino-esp32/issues/3032 | |
pinMode(TX2, OUTPUT); | |
enable_transmitter(); | |
digitalWrite(TX2, LOW); | |
digitalWrite(LED_BUILTIN, HIGH); | |
delayMicroseconds(920); | |
digitalWrite(TX2, HIGH); | |
digitalWrite(LED_BUILTIN, LOW); | |
disable_transmitter(); | |
Serial2.begin(19200, SERIAL_8N1, RX2, TX2); | |
} | |
void setup() | |
{ | |
pinMode(LED_BUILTIN, OUTPUT); | |
pinMode(DIR, OUTPUT); | |
digitalWrite(DIR, LOW); | |
Serial.begin(38400); | |
Serial2.begin(19200, SERIAL_8N1, RX2, TX2); | |
delay(100); | |
} | |
void loop() | |
{ | |
syncbreak(); | |
enable_transmitter(); | |
Serial2.write(0x80); | |
Serial2.write(0x83); | |
Serial2.write(0x29); | |
Serial2.write(0x00); | |
Serial2.write(0x10); | |
Serial2.write(0x3A); | |
disable_transmitter(); | |
delay(50); | |
while(Serial2.available() > 0) { | |
rx = Serial2.read(); | |
Serial.println(rx, HEX); | |
} | |
Serial.println("Wait for next round"); | |
delay(1000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment