weird bug where theres a 100us delay between the transmission of the 3rd and 4th byte of every packet from the pi. this causes the RTS line to sag. must look into

stable
Penguin 2 years ago
parent 26fe06fcc7
commit 638d6e8d5a

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -17,62 +17,5 @@
], ],
"directory": "/storage/Shared/Projects/Penguinator/pi_serial_bus_manager", "directory": "/storage/Shared/Projects/Penguinator/pi_serial_bus_manager",
"file": "src/p_serial_bus.cpp" "file": "src/p_serial_bus.cpp"
},
{
"arguments": [
"g++",
"-c",
"-Og",
"-Wall",
"-fdata-sections",
"-ffunction-sections",
"-g3",
"-DDEBUG",
"-Icfg",
"-Iinc",
"-o",
"build/p_serial_packet.o",
"src/p_serial_packet.cpp"
],
"directory": "/storage/Shared/Projects/Penguinator/pi_serial_bus_manager",
"file": "src/p_serial_packet.cpp"
},
{
"arguments": [
"g++",
"-c",
"-Og",
"-Wall",
"-fdata-sections",
"-ffunction-sections",
"-g3",
"-DDEBUG",
"-Icfg",
"-Iinc",
"-o",
"build/main.o",
"src/main.cpp"
],
"directory": "/storage/Shared/Projects/Penguinator/pi_serial_bus_manager",
"file": "src/main.cpp"
},
{
"arguments": [
"g++",
"-c",
"-Og",
"-Wall",
"-fdata-sections",
"-ffunction-sections",
"-g3",
"-DDEBUG",
"-Icfg",
"-Iinc",
"-o",
"build/p_idp.o",
"src/p_idp.cpp"
],
"directory": "/storage/Shared/Projects/Penguinator/pi_serial_bus_manager",
"file": "src/p_idp.cpp"
} }
] ]

@ -34,7 +34,7 @@ public:
static ps_packet from_xy(int x, int y); static ps_packet from_xy(int x, int y);
static ps_packet test_packet(); static ps_packet test_packet();
#ifdef DEBUG #ifdef DEBUG
void show_packet(); void show_packet() const;
#endif #endif
private: private:

@ -44,11 +44,6 @@ ps_bus::ps_bus(const char* dev)
/* Set this flag if you want to receive data even while sending data */ /* Set this flag if you want to receive data even while sending data */
// rs485conf.flags |= SER_RS485_RX_DURING_TX; // rs485conf.flags |= SER_RS485_RX_DURING_TX;
if (ioctl(dev_fd, TIOCSRS485, &rs485conf) < 0)
{
printf("ERROR\n");
/* Error handling. See errno. */
}
memset(&toptions, 0, sizeof(toptions)); memset(&toptions, 0, sizeof(toptions));
tcgetattr(dev_fd, &toptions); tcgetattr(dev_fd, &toptions);
toptions.c_cflag &= ~(CSIZE | PARENB); toptions.c_cflag &= ~(CSIZE | PARENB);
@ -69,6 +64,11 @@ ps_bus::ps_bus(const char* dev)
tcflush(dev_fd, TCIFLUSH); tcflush(dev_fd, TCIFLUSH);
// apply // apply
tcsetattr(dev_fd, TCSANOW, &toptions); tcsetattr(dev_fd, TCSANOW, &toptions);
if (ioctl(dev_fd, TIOCSRS485, &rs485conf) < 0)
{
printf("ERROR\n");
/* Error handling. See errno. */
}
} }
ps_bus::~ps_bus() ps_bus::~ps_bus()
@ -83,10 +83,13 @@ ps_bus::~ps_bus()
bool ps_bus::send_pkt(const ps_packet* const pkt) bool ps_bus::send_pkt(const ps_packet* const pkt)
{ {
bool ret = true; bool ret = true;
pkt->show_packet();
if (write(dev_fd, pkt->data, pkt->msg_len) != pkt->msg_len) if (write(dev_fd, pkt->data, pkt->msg_len) != pkt->msg_len)
{ {
ret = false; ret = false;
} }
tcflush(dev_fd, TCIFLUSH);
usleep(1000);
return ret; return ret;
} }
bool ps_bus::recv_pkt(ps_packet* const pkt) bool ps_bus::recv_pkt(ps_packet* const pkt)

@ -144,7 +144,7 @@ ps_packet ps_packet::test_packet()
} }
#ifdef DEBUG #ifdef DEBUG
void ps_packet::show_packet() void ps_packet::show_packet() const
{ {
printf("Start Byte:\t\t0x%02x\n", data[0]); printf("Start Byte:\t\t0x%02x\n", data[0]);
printf("Source Address:\t\t0x%02x\n", *src_addr); printf("Source Address:\t\t0x%02x\n", *src_addr);

Loading…
Cancel
Save