I am not good programmer in C, and my code is ugly. Basic Idea is bigbanged the Async serial data trough GPIO. Now I try only writing. Reading is not necesary for me now.
Is posible to bigbang serial data, and not stop ESP in many delay loops ? I using delay for bits timing, but if I send bigger block of data, procesor not calculate timers and PWMs
my code is look like this:
platform_gpio_write(soft_uart_0_pin, 0);
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,0));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,1));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,2));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,3));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,4));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,5));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,6));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, chbit(data,7));
delayMicroseconds(soft_uart_0_bit_time);
platform_gpio_write(soft_uart_0_pin, 1);
delayMicroseconds(soft_uart_0_bit_time*10);
its adaptation of my working code from AVR
void putchar_soft(char znak)
{
if (TXD == 0) { TXD = 1; delay_ms(5);}
TXD = 0;
delay_us(103);
TXD = character & 1;
delay_us(103);
TXD = character & 2;
delay_us(103);
TXD = character & 4;
delay_us(103);
TXD = character & 8;
delay_us(103);
TXD = character & 16;
delay_us(103);
TXD = character & 32;
delay_us(103);
TXD = character & 64;
delay_us(103);
TXD = character & 128;
delay_us(103);
TXD = 1;
delay_ms(2);
}
This is very ugly code... but it working... but stops timers and PWMs