Connect ESP8266 to ATmega16 problems.

Go To Last Post
90 posts / 0 new

Pages

Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have WiFi ESP8266 module:

I connect VCC to 3.3V, CH_EN to 3.3V, GND, Rx (module 7 pin) to ATmega16 TxD PD1, Tx (module 2 pin) to ATmega16 RxD PD0.

After I send by USART "AT" command I expect end up in ISR (USART_RXC_vect)... but nothing happend.

Did I make correct module connection?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There’s a number of things that might not be right. You need to work logically through the problem to solve it. This requires that you perform tests to prove/disprove things.
1. How do you know your esp8266 works?
2 how do you know your mega16 works?

I can tell you from experience that the esp8266 is very sensitive about its power supply. You need to ensure you have a good regulated 3.3V supply at around 500mA and very short wiring to the regulator.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have USB-USART module based on PL2303 chip, so one WiFi ESP8266 I connected directly to it -> Try to send "AT" command -> I get responce from module - (41 F5) hex meggase.

Another WiFi ESP8266 I connect to ATmega16 -> Rx (module 7 pin) to ATmega16 TxD PD1, Tx (module 2 pin) to ATmega16 RxD PD0.

As power supply I use board (my own design) connected to 12V and lower down to 5V and 3.3V. I tested voltage from it to WiFi ESP8266 -> 3.2V

 

I connected USB-USART PL2303 module to my ATmega16 -> Try to send some symbols -> ISR (USART_RXC_vect) working. 

Inside ISR (USART_RXC_vect) I make LED blink -> it does. And display symbols send on LED display -> it working. (some issue with ASCII code but it manageable).

 

I can't get any responce from module after I send from ATmega16 simmple "AT" command.

Last Edited: Wed. Mar 13, 2019 - 09:17 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

(some issue with ASCII code but it manageable).

Please explain that more.

 

What are you using for the clock source for the micro?

An external crystal, or the internal RC Oscillator?

 

If you flash an LED at 1 Hz, does it actually flash at 1 Hz?

 

What is the clock frequency and the baud rate you are using for your communications?

 

JC 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

My board:

ATmega16 with external crystal 8MHz.

 

I blink with LED by code:

 

#define LED_PORT PORTB
#define LED_DIR DDRB
#define LED_PIN 0
ISR (USART_RXC_vect) {
	usartRxBuf = UDR;

	LED_PORT |= (1<<LED_PIN);
	_delay_ms(500);
	LED_PORT &= ~(1<<LED_PIN);
	_delay_ms(500);

	LCD_SetCursor(3, 0); LCD_DisplaySymbol(usartRxBuf);
	FlushBuf();
}

 

With USB-USART module based on PL2303 chip I use Terminal v1.9b -> not all ASCII display correct, for example RU simbols.

Last Edited: Wed. Mar 13, 2019 - 09:41 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

 and the baud rate you are using for your communications?

 

 

JC 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0
void USART_Init(unsigned int speed) {
	UBRRH = (unsigned char)(speed>>8);
	UBRRL = (unsigned char)speed;
	UCSRB |= (1<<RXEN)|(1<<TXEN); // Enable USART 
	UCSRB |= (1<<RXCIE); // Enable ISR (USART_RXC_vect)
	UCSRA |= (1<<U2X);// Double clock rate
	UCSRC |= (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0); // Asinc (URSEL = 0), turn off parity (UPM1 = 0, UOM0 = 0), 2 stop bits (USBS = 1), package 8 bits (UCSZ1 = 1, UCSZ0 = 1)
}

I use USART 115.2K speed:

int main(void) {
	USART_Init(8);

To hight speed for WiFi ESP8266? Should speed be lower or hight????

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

At 9600 baud each character takes around 1ms to send. Your code has a 500ms delay in it. That means you’ll ignore 500 characters. Even without that delay, the lcd functions are slow. How to solve? Look at how the Arduino core code manages the buffering of the serial data using a construct called a ‘circular buffer’.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I try to use Termite 3.4 (by CompuPhase).

I get module version:

AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
Ai-Thinker Technology Co. Ltd.
Jun 13 2016 11:29:20

I don't know...need to upgrade to upper version???

Some of commands returns with ERROR message (AT+CWLAP for example). 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Your baud rate is on the edge of working. Couple that with the baud rate error of the ESP8266, then there's a fair chance you'll have errors. Choose a lower baud rate - like 9600.

 

I calculated your baud rate is 111111 baud vs 115200. That's around 3.6% error. Why 2 stop bits? The usual is 1. That could be your problem right there.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I find issue -> I re-write USART send functions:

void USART_SendString(char * s) {
	while(*(s)!='\0') {
		USART_SendChar(*(s++));
	}
}

void USART_SendChar(unsigned char symbol) {
	while(!(UCSRA & (1<<UDRE)));
	UDR = symbol;
}

Use it like this:

void USART_Init(unsigned int speed) {
	UBRRH = (unsigned char)(speed>>8);
	UBRRL = (unsigned char)speed;
	UCSRB |= (1<<RXEN)|(1<<TXEN);
	UCSRB |= (1<<RXCIE);
	UCSRA |= (1<<U2X);
	UCSRC |= (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
}
void USART_SendString(char * s) {
	while(*(s)!='\0') {
		USART_SendChar(*(s++));
	}
}
void USART_SendChar(unsigned char symbol) {
	while(!(UCSRA & (1<<UDRE)));
	UDR = symbol;
}

#define LED_PORT PORTB
#define LED_DIR DDRB
#define LED_PIN 0

#define SIZE_BUF 48
volatile unsigned char cycleBuf[SIZE_BUF];
volatile unsigned char tail = 0;

void FlushBuf(void) {
	tail = 0;
	cycleBuf[0] = 0;
}

ISR (USART_RXC_vect) {
	usartRxBuf = UDR;

	cycleBuf[tail] = usartRxBuf;
	tail++;

	LED_PORT |= (1<<LED_PIN);
	_delay_ms(1000);
	LED_PORT &= ~(1<<LED_PIN);
	_delay_ms(1000);

	LCD_SetCursor(3, 0);
	LCD_DisplaySymbol(usartRxBuf);
}
int main(void) {
    USART_Init(8);
    ...
    USART_SendString("AT");
    USART_SendChar(13);
    _delay_ms(5000);
    ...
    sei();
    while(1) {
        ...
    }
}

I write code as simple as I can. Now I manage to blink LED inside ISR (USART_RXC_vect) -> signal of receiving data by USART.

But I don't understant format of data recieved from ESP8266 inside ISR (USART_RXC_vect).

It is not ASCII as I guess. So how I should properly transform data received from ESP8266???? to display on LCD or else were??? data format hex, dec or string from ESP8266???

Last Edited: Thu. Mar 14, 2019 - 03:20 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0
void USART_Init(unsigned int speed) {
	UBRRH = (unsigned char)(speed>>8);
	UBRRL = (unsigned char)speed;
	UCSRB |= (1<<RXEN)|(1<<TXEN);
	UCSRB |= (1<<RXCIE);
	UCSRA |= (1<<U2X);
	UCSRC |= (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
}
void USART_SendString(char * s) {
	while(*(s)!='\0') {
		USART_SendChar(*(s++));
	}
}
void USART_SendChar(unsigned char symbol) {
	while(!(UCSRA & (1<<UDRE)));
	UDR = symbol;
}

#define LED_PORT PORTB
#define LED_DIR DDRB
#define LED_PIN 0

#define SIZE_BUF 48
volatile unsigned char cycleBuf[SIZE_BUF];
volatile unsigned char tail = 0, head = 0;

void FlushBuf(void) {
	tail = 0;
	cycleBuf[0] = 0;
}

ISR (USART_RXC_vect) {
	usartRxBuf = UDR;

	cycleBuf[head] = usartRxBuf;
	head++;

//what happens when you get more characters than SIZE_BUF?

        if (head >= SIZE_BUF)
            {
            head = 0;       //circular buffer - wrap around
            }
// you can't have delays like this in your isr !
// at 115200 baud, each character takes 87us to send.
// here, you will simply miss characters

	LED_PORT |= (1<<LED_PIN);
	_delay_ms(1000);
	LED_PORT &= ~(1<<LED_PIN);
	_delay_ms(1000);

// again, you can't do this here - your lcd functions will most likely take
// more than 87us. You will miss characters

	LCD_SetCursor(3, 0);
	LCD_DisplaySymbol(usartRxBuf);
}
int main(void) {
    USART_Init(8);
    ...
    USART_SendString("AT");
    USART_SendChar(13);
    _delay_ms(5000);
    ...
    sei();//you send the AT request, then wait 5 seconds then turn on the interrupts. What happens if the ESP8266 replies in less than 5 seconds?
    while(1) {
        ...
    }
}

Why did you only half do the circular buffer?

You need to write a function to see if there is anything in the buffer and another to read the characters out.

 

You don't need to 'transform' the receive data. The ESP8266 sends ascii and you receive ascii. To form a string, you assemble characters until you find a value of 13 (EOL). You then have your string.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0
// you can't have delays like this in your isr !
// at 115200 baud, each character takes 87us to send.
// here, you will simply miss characters

	LED_PORT |= (1<<LED_PIN);
	_delay_ms(1000);
	LED_PORT &= ~(1<<LED_PIN);
	_delay_ms(1000);

// again, you can't do this here - your lcd functions will most likely take
// more than 87us. You will miss characters

	LCD_SetCursor(3, 0);
	LCD_DisplaySymbol(usartRxBuf);

I will remove LCD display info and LED blink from ISR func -> it is for test only.

 

USART_SendString("AT");
USART_SendChar(13);
_delay_ms(5000);

5 sec I remove also -> my issue, I miss that.

 

So I should form data from inside:

ISR (USART_RXC_vect)

...but use data from ESP8266 in some other point:

ISR(TIMER0_COMP_vect)
	or
ISR(TIMER0_OVF_vect) 

I will think this later.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0
void USART_SendString(char * s) {
	while(*(s)!='\0') {
		USART_SendChar(*(s++));
	}
}

could simply be:

void USART_SendString(char * s) {
	while(*s) {
		USART_SendChar(*s++);
	}
}

No point in over-complicating things!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Did you change the denominator in the UBRR calculation from 16 to 8 when you set 

UCSRA |= (1<<U2X);

I just went through this at 115.2kBaud,

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I continue trying to get proper respomce from WiFi module nd store it to EEPROM:

 

ISR (USART_RXC_vect) {
	usartRxBuf = UDR;			
	
	cycleBuf[tail] = usartRxBuf;
	EEPROM_WriteWord(tail, usartRxBuf);
	tail++;
}
void EEPROM_WriteWord(unsigned int uiAddress, uint16_t ucData) {
	EEPROM_Write(uiAddress, (unsigned char)ucData);	
	unsigned char dt = ucData>>8;
	EEPROM_Write(uiAddress + 1, dt);
}
void EEPROM_WriteDWord(unsigned int uiAddress, uint32_t ucData) {
	EEPROM_WriteWord(uiAddress, (uint16_t)ucData);
	uint16_t dt = ucData>>16;
	EEPROM_WriteWord(uiAddress + 2, dt);
}
void EEPROM_WriteString(unsigned int uiAddress, char str[]) {
	wchar_t n;
	for(n=0; str[n]!='\0'; n++) {
		EEPROM_Write(uiAddress + n, str[n]);
	}
}
void EEPROM_Write(unsigned int uiAddress, unsigned char ucData) {
	while(EECR & (1<<EEWE)) { }
	EEAR = uiAddress;
	EEDR = ucData;
	
	EECR |= (1<<EEMWE);
	EECR |= (1<<EEWE);
}

But I get not expected results by sending simple "AT" command:

:100000008CFF00FFFFFFFFFFFFFFFFFFFFFFFFFF72
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0

As I understand, I should get:

4f 4b 0d 0a

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You didn't answer my question.  Did you change the denominator from 16 to 8 in your calculation of "speed"?  It should look like:

#define speed F_CPU/8/BAUD1-1

I played with that device and what worked was 8 data bits, 1 stop bit, 0 parity bits.

 

If you sent "AT" do you get an "OK" back?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes I did in main.h file:

#ifndef MAIN1_H_
#define MAIN1_H_

//#define F_CPU 8000000UL
#define speed F_CPU/8/BAUD1-1

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Still not working.

 

 

I also set USART settings as 8 data bits, 1 stop bit, 0 parity bits. :

void USART_Init(unsigned int speed) {
	UBRRH = (unsigned char)(speed>>8);
	UBRRL = (unsigned char)speed;
	UCSRB |= (1<<RXEN)|(1<<TXEN);
	UCSRB |= (1<<RXCIE);
	UCSRA |= (1<<U2X);
	UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}

 

Last Edited: Thu. Mar 14, 2019 - 07:53 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

What is your F_CPU?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

External 8MHr. Already check from "Examples of UBRR Settings for Commonly Used Oscillator Frequencies" from ATmega16 Datasheet.

Fosc = 8.0000MHz, U2X = 1 => UBRR = 8, Error 3.5%, 115.2K Baud Rate (bps)

 

Last Edited: Thu. Mar 14, 2019 - 08:06 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I think you might have real problems getting 115.2kBaud with 8MHz.  I barely got it with a 16 MHz crystal and 2x.  I couldn't get it without the 2x, which gives the same error rate as 8MHz with 2x.  You might have to put in one of those weird crystal frequencies that give 0% error at all baud rates.  Other people here know better than me, but I suspect that is your problem.

 

Edit:  Or put in a 16 MHz crystal with 2x

Last Edited: Thu. Mar 14, 2019 - 08:15 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes, you probably right. I connect ATmega16 to USB-USART PL2303 chip module and try to send/recieve data with Termite 3.4 (on Termite settings 115200 pbs, 8N1, no handshake) and transfer failed.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Will the ATmega16 go to 16 MHz? 

 

Edit:  I looked at Digi-Key and some go to 16, some go to 20.  You could get a 14.7456MHz chip and be good to 230.4 kBaud

 

Edit again:  I looked further and some only go to 8MHz.  You could overclock it to 11.0592MHz and be good to 230.4 kBaud.

Last Edited: Thu. Mar 14, 2019 - 08:39 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

But datasheet stand for 115.2K with 8MHz external CPU. I do not understand problem?? why micro can't get 115.2K???

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I explained in #10 why.

As well, writing to eeprom is slow, so doing this in your isr wont work.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

For 8Mhz with 2x the error rate is -3.5%.  For 16MHz no 2x, the error rate is -3.5% and it didn't work, but when I turned on 2x at 16 MHz the error rate drops to 2.1% from that table, and that improvement was enough to make it work.  That was my experience.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I think it is kinda hard to change the baud rate if you cant talk to it.

 

Edit:  I guess you could use a laptop and an FTDI USB-UART chip to talk to it and change the baud rate in PuTTY, or something like that.

Last Edited: Thu. Mar 14, 2019 - 08:54 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

OK, now I switch to external 16MHz.

 

settings USART:

void USART_Init(unsigned int speed) {	
	UBRRH = (unsigned char)(speed>>8);
	UBRRL = (unsigned char)speed;
	UCSRB |= (1<<RXEN)|(1<<TXEN); 
	UCSRB |= (1<<RXCIE); 
	UCSRA |= (1<<U2X);
	UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); 
}

int main(void) {
	USART_Init(16);

And still not good results. I get incorrect data on Termite from Micro and from Termite on Micro I get incorrect data.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

did you change F_CPU everywhere?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes, on top of main.c:

#define speed F_CPU/16/BAUD1-1
#define F_CPU 16000000UL

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

do you have to define F_CPU before speed?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

OH, you are using 2x so denominator should be 8

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I tested it. not working.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

does sending "AT" return an "OK" ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have:


int main(void) {
	PORTD = 0x00;
	DDRD = 0xFF;

without it no data transfer at all. Configure portD for output. Could it be issue???

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Now I connect to Atmega16 my USB-USART PL2303 module -> and view results of transfer data in Termite terminal prog.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

dont you want to send and receive with UART Rx and Tx?  I dont know what pins they are.  Are you redefining them by setting PORTD that way after init_UART?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

OK, so it sounds like 115.2kBaud is working.  Right?  Kartman's comment about writing to EEPROM being slow means you have to deal with that timing issue.  Someone suggested a circular buffer.  

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes,  ATmega16 -> TxD PD1, RxD PD0.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

So you dont want to redefine PORTD as output after init_UART.

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

EEPROM for view results of transfer only..allredy remove it from code.

 

int main(void) {
	PORTD = 0x00;
	DDRD = 0xFF;		
	
	USART_Init(16);
	
	sei();
	
	USART_SendChar(65);
	USART_SendChar(84);
	
	while(1) {		

And on Termite terminal prog I get incorect results of transfering data. So I guess USART not working or settings not good.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

What are ASCII 65 and 84?

 

Why not send:

 

        USART_SendChar('X');
	USART_SendChar('Y');

and see what you get.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

65 decimal for 'A'

85 decimal for 'T'

...same as:

 

USART_SendChar('A');
USART_SendChar('T');

I tested all variables. Nothing work.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

you need to send a \r too at the end.

 

Edit: \r at the end

Last Edited: Thu. Mar 14, 2019 - 10:03 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Wait, with that ESP8266 you need a \r\n at the end, I seem to remember.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I can't get a single char to transfer from Micro ATmega16 to Termite correct. Why I need to send \t after any char for proper transfering????

 

main.c:

#include "main.h"

ISR (USART_RXC_vect) {


}

int main(void) {
	PORTD = 0x00;
	DDRD = 0xFF;
	
	USART_Init(16);
	
	sei();
	
	USART_SendChar('A');
	USART_Transmit('B');
	USART_SendChar('\t');
    while (1) {
		
    }
}

main.h:

#ifndef MAIN1_H_
#define MAIN1_H_

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "USART.h"

#endif /* MAIN1_H_ */AIN_H_ */

USART.c:

#include "USART.h"

void USART_Init(unsigned int speed) {	
	UBRRH = (unsigned char)(speed>>8);
	UBRRL = (unsigned char)speed;
	UCSRB |= (1<<RXEN)|(1<<TXEN);
	UCSRB |= (1<<RXCIE);
	UCSRA |= (1<<U2X);
	UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}

void USART_Transmit(unsigned char data) {
	while((UCSRA & (1<<UDRE))==1) {
		UDR = data;
	}
}

void USART_SendString(char * s) {
	while(*(s)!='\0') {
		USART_SendChar(*(s++));
	}
}

void USART_SendChar(unsigned char symbol) {
	while(!(UCSRA & (1<<UDRE)));
	UDR = symbol;
}

USART.h:

#ifndef USART_H_
#define USART_H_
#include "main.h"

void USART_Init(unsigned int speed);
void USART_Transmit(unsigned char data);
void USART_SendString(char * s);
void USART_SendChar(unsigned char symbol);

#endif /* USART_H_ */

RxD  USB-USART PL2303 module connected to TxD Atmega16 PD1

TxD  USB-USART PL2303 module connected to RxD Atmega16 PD0

+ GND between USB-USART PL2303 module and Atmega16

 

I have no guess why can't sent one char 'A' from Atmega16 to USB-USART PL2303 module and view it on Termite terminal prog.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

When I connect ESP8266 to  USB-USART PL2303 module and send from Termite 'AT' command I get responce 'OK'. PROBLES is USART on ATmega16.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

When I talked to it with an FDTI USB-UART and PuTTY i had to send "AT", then hit enter, and then do a cntl-j for new line and I would get an OK back.  My PuTTY the implicit LF in every CR didn't seem to work.    so it wants a \r\n to complete the command.

 

Sorry about the \t.  a mistype.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Do you have Rx on the mega connected to Tx on the ESP?

 

Edit:  I missed your post that you did.

Last Edited: Thu. Mar 14, 2019 - 10:22 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Termite in settings 'Transmitted text' set 'Appent CR-LF' checkbox. Set it and all string in the end go with CR-LF. For ESP8266 that is standart setting.

BUT!!!! AS I typed probles is USART on ATMEGA16. I can't send char 'A' from ATmega16 by USART to USB-USART PL2303 module and view it on Termite terminal prog.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I thought you said you got UART 115.2kBaud working on the ATmega16.

Pages