Hallo.
Ich möchte mit dem ESP Modul und dem ATtiny mehrere Ausgänge setzen oder
löschen. Dazu werte ich die UART Rückgaben vom ESP aus und handle
dementsprechend. Das ESP Modul erhält über eine TCP/IP Verbindung zu
einem Server die benötigten Strings.
Problem ist nun, dass der Attiny die Bytes vom ESP nur Teilweise richtig
empfängt (siehe Bild von Putty). Die Bytes werden vom ESP aber definitiv
richtig übertragen da direkt an Putty angeschlossen oder an einem
ATmega32 kein Problem besteht.
Der Anschluss ist m.M. nach nicht das Problem, ich hänge aber trotzdem
einen ähnlichen Schaltplan an. Als Test habe ich einen zweiten ESP
getestet (ESP-M3) der mit 5V betrieben wurde. Selbiges Problem. ATmega
funktioniert, ATtiny nicht.
Habe ebenfalls versucht mit Putty Zeichen an den ATtiny zu senden. Die
kamen alle Problemlos zurück. Kein Byte wurde verschluckt. Allerdings
vermute ich das der ESP schneller die Zeichen überträgt als in Putty.
Folgend mein Programm, welches nur die Zeichen rückgibt (echo über
Interrupt).
1 | #define F_CPU 8000000UL
|
2 | #include <avr/io.h>
|
3 | #include <util/delay.h>
|
4 | #include <avr/interrupt.h>
|
5 | #include <avr/wdt.h>
|
6 |
|
7 | #define baud 9600
|
8 | #define USART_BAUD_SELECT (F_CPU/(baud*16L)-1)
|
9 |
|
10 | ISR(USART0_RX_vect)
|
11 | {
|
12 | uart_send(UDR);
|
13 | }
|
14 |
|
15 | int main(void)
|
16 | {
|
17 | UBRRH = (unsigned char)(USART_BAUD_SELECT>>8);
|
18 | UBRRL = (unsigned char)USART_BAUD_SELECT;
|
19 | // Enable receiver, transmitter and interrupt
|
20 | UCSRB = (1<<RXEN)|(1<<TXEN) |(1<<RXCIE);
|
21 | // Set frame format: Async, 8data, 1stop bit
|
22 | UCSRC = (1<<UCSZ1)|(1<<UCSZ0);
|
23 |
|
24 | sei();
|
25 |
|
26 | while(1)
|
27 | {
|
28 |
|
29 | }
|
30 | }
|
31 |
|
32 | void uart_send( unsigned char data )
|
33 | {
|
34 | // Wait for empty transmit buffer
|
35 | while ( !( UCSRA & (1<<UDRE)) );
|
36 | // Put data into buffer, sends the data
|
37 | UDR = data;
|
38 | }
|
Habe das ganze auch mal versucht mit einem Puffer zu lösen um
1 | while ( !( UCSRA & (1<<UDRE)) );
|
zu vermeiden, allerdings selbiges Problem. Habe das nur ich oder
kämpfen damit andere auch?
Der ATtiny hat als FUSE D7(MSB) C4(LSB).
Der ESP und ATTiny sind auf 9600B, 8Bit, 1Stop eingestellt.
BG
Umbrecht