• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 + AVR

pashsh

New member
Здравствуйте!
Пытаюсь всё передать хоть что-то по 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++;        
      }
}
 

CodeNameHawk

Moderator
Команда форума
Если только в одну сторону(от esp01 к attiny2313) не надо.
Попробуйте поставить резистор 1к с ноги Tx(Esp) на +3.3В.
 
Последнее редактирование:
Сверху Снизу