Здравствуйте!
Пытаюсь всё передать хоть что-то по UART от esp01s к attiny2313, всё тщетно.
Если посылать сообщения на attiny2313 через USB-TTL преобразователь с компьютера, то всё хорошо работает, но подружить мк и esp не получается.
В чём проблема?
Прошивка esp8266:
Пытаюсь всё передать хоть что-то по UART от esp01s к attiny2313, всё тщетно.
Если посылать сообщения на attiny2313 через USB-TTL преобразователь с компьютера, то всё хорошо работает, но подружить мк и esp не получается.
В чём проблема?
Прошивка esp8266:
Код:
uart.setup(0,9600,8,0,1)
tmr.alarm(0, 2000, 0, function()
uart.write(0, "A", 19)
end)
Код:
#include <tiny2313.h>
#include <alcd.h>
#include <stdio.h>
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
unsigned char rx_wr_index=0,rx_rd_index=0;
unsigned char rx_counter=0;
bit rx_buffer_overflow;
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & ((1<<FE) | (1<<UPE) | (1<<DOR)))==0) {
rx_buffer[rx_wr_index++]=data;
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE) {
rx_counter=0;
rx_buffer_overflow=1;
}
}
}
char getChar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index++];
if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
--rx_counter;
return data;
}
void main(void)
{
int k;
char data;
DDRB = 0x00;
PORTB = 0x00;
USICR = 0x00;
UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
UCSRC=(0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
UBRRH=0x00;
UBRRL=0x33;
lcd_init(16);
#asm("sei")
k = 0;
while (1)
{
data = getChar();
if (data == '|') {
k = 0;
lcd_clear();
continue;
}
lcd_gotoxy(k % 16, k / 16);
lcd_putchar(data);
k++;
}
}