Forum: Mikrocontroller und Digitale Elektronik ATtiny2313A und ESP-12F/M3 UART Problem


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Stored B. (Firma: drx) (umbrecht)


Angehängte Dateien:

Lesenswert?

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

: Bearbeitet durch User
von Sebastian R. (sebastian_r569)


Lesenswert?

Der Tiny läuft mit internem Oszillator?
Der interne Oszillator ist vermutlich nicht genau eingestellt?

Viele UART-Probleme entstehen durch eine ungenaue Taktquelle am AVR. Man 
kann den internen Oszillator aber über Register trimmen oder einen 
externen Oszillator verwenden.

Mit deinem Oszilloskop kannst du auch die Bitbreiten von ESP und AVR 
messen.

von Stored B. (Firma: drx) (umbrecht)


Lesenswert?

Sebastian R. schrieb:
> Der Tiny läuft mit internem Oszillator?
> Der interne Oszillator ist vermutlich nicht genau eingestellt?

Ja ist er. Diesen Punkt habe ich nicht bedacht da ich solche Probleme 
noch nie mit einem Controller hatte. Ich verwende meist den Internen 
Oszillator.
Werde mal versuchen ein externes 16MHZ Quarz anzuschließen und Programm 
/ Fuses entsprechend anpassen.

Sebastian R. schrieb:
> Mit deinem Oszilloskop kannst du auch die Bitbreiten von ESP und AVR
> messen.

Sowas besitze ich leider (noch) nicht Privat.

BG
Umbrecht

von Stefan F. (Gast)


Lesenswert?

Stored B. schrieb:
> Problem ist nun, dass der Attiny die Bytes vom ESP nur Teilweise richtig
> empfängt

Logisch, du brauchst einen Pegelwandler zwischen dem 5V Mikrocontroller 
und dem 3,3V ESP Modul. Siehe 
http://stefanfrings.de/esp8266/index.html#an5v

Und du brauchst einen Quarz. Der interne R/C Oszillator ist zu ungenau 
und temperaturabhängig, damit klappt das nur manchmal.

von Stefan F. (Gast)


Lesenswert?

Stored B. schrieb:
>> Mit deinem Oszilloskop kannst du auch die Bitbreiten von ESP und AVR
>> messen.

> Sowas besitze ich leider (noch) nicht Privat.

Dann kaufe dir einen "8 CH Logic Analyzer" für 10 Euro. Benutzen kannst 
du ihn mit der freien Software "PulseView".

Und wenn du noch etwas mehr Geld hast, hole dir ein DSO150 für ca. 30 
Euro. Das ist ein Spielzeug-Oszilloskop für NF Signale. Prima um die 
Qualität der Signalpegel zu kontrollieren.

von Stored B. (Firma: drx) (umbrecht)


Lesenswert?

Stefan ⛄ F. schrieb:
> Logisch, du brauchst einen Pegelwandler zwischen dem 5V Mikrocontroller
> und dem 3,3V ESP Modul. Siehe
> http://stefanfrings.de/esp8266/index.html#an5v

1.)
Stored B. schrieb:
> Als Test habe ich einen zweiten ESP
> getestet (ESP-M3) der mit 5V betrieben wurde.

2.)
ATtiny wie auch ATmega erkennen beim 5V Betrieb bereits Pegel ab 3V.

3.)
Habe auch den ATtiny testweise mit 3.3V Betrieben. Keine Änderung.

von Stefan F. (Gast)


Lesenswert?

Die ESP Chips kann man nicht mit 5V betreiben. Sie vertragen maximal 
3,6V an allen Pins. Dementsprechend kann es nicht Ok sein, den 5V TxD 
Ausgang des AVR direkt an den ESP Chip anzuschließen.

> Habe auch den ATtiny testweise mit 3.3V Betrieben. Keine Änderung.

Dann ist dein primäres Problem die Taktquelle. Es ändert aber nichts 
daran, dass du den ESP Chip mit deinem Aufbau misshandelst.

Erstmal behebt man die offensichtlichen Fehler, bevor man Mutmaßungen 
äußerst, was sonst noch falsch sein könnte.

von ächz (Gast)


Lesenswert?

Stored B. schrieb:
> ich hänge aber trotzdem einen ähnlichen Schaltplan an.

Wäre noch zu klären inwieweit der Schaltplan der Realität
entsprechen sollte. Ich denke da an fehlende GND- und VCC-
Verbindungen sowie fehlende Abblock-Kondensatoren. Beides
für sich betrachtet kann schon zu Fehlfunktionen führen.

von Mario M. (thelonging)


Lesenswert?

Warteschleife im Empfangsinterrupt?

von Stored B. (Firma: drx) (umbrecht)


Lesenswert?

Stefan ⛄ F. schrieb:
> Die ESP Chips kann man nicht mit 5V betreiben. Sie vertragen maximal
> 3,6V an allen Pins. Dementsprechend kann es nicht Ok sein, den 5V TxD
> Ausgang des AVR direkt an den ESP Chip anzuschließen.

Ist es auch nicht.
Mal so am Rande, ob richtig oder nicht, hier wird beschrieben die Module 
können 2,2-5V betrieben werden, diese Chinesen ^^: 
https://de.aliexpress.com/item/4000602045649.html?spm=a2g0o.productlist.0.0.226b62181m7gnW&algo_pvid=5715029d-ed75-49eb-8a78-bda0f1541cde&algo_exp_id=5715029d-ed75-49eb-8a78-bda0f1541cde-0&pdp_ext_f=%7B%22sku_id%22%3A%2210000003761782637%22%7D

Stefan ⛄ F. schrieb:
> Erstmal behebt man die offensichtlichen Fehler, bevor man Mutmaßungen
> äußerst, was sonst noch falsch sein könnte.

Naja selbst mit 5V und ohne Abblock Kondensator funktioniert die 
Schaltung / Übertragung mit anderen Controllern. Jegliche "Misshandlung" 
sind mir hierbei egal. Die Module vertragen das. Von daher werde ich 
auch mal mit der Taktquelle Spielchen treiben.

von Stefan F. (Gast)


Lesenswert?

Stored B. schrieb:
> Jegliche "Misshandlung"
> sind mir hierbei egal. Die Module vertragen das.

Gut, dann sind dir auch jegliche Fehlfunktionen egal, die sich daraus 
ergeben, und du brauchst keine Hilfe.

Der Thread kann hiermit geschlossen werden.

von ächz (Gast)


Lesenswert?

Stored B. schrieb:
> Naja selbst mit 5V und ohne Abblock Kondensator funktioniert die
> Schaltung / Übertragung mit anderen Controllern.

Wie heisst es doch so schön:

Beratungsresistenz ist eine Zier, doch weiter kommt man
ohne ihr.

Oder

Reisende soll man nicht aufhalten.

von Stored B. (Firma: drx) (umbrecht)


Lesenswert?

Stefan ⛄ F. schrieb:
> Gut, dann sind dir auch jegliche Fehlfunktionen egal, die sich daraus
> ergeben, und du brauchst keine Hilfe.
>
> Der Thread kann hiermit geschlossen werden.

Naja im zweiten Post war eigentlich schon alles geklärt was noch 
Problematisch sein könnte.

ächz schrieb:
> Beratungsresistenz ist eine Zier, doch weiter kommt man
> ohne ihr.

Von dir kam eine Beratung?

von ächz (Gast)


Lesenswert?

Stored B. schrieb:
> Von dir kam eine Beratung?

Selbst wenn du das nicht erkannt haben solltest: ja.

Aber auch ohne meinen Anteil kann man am Verlauf des
Threads Schlüsse ziehen die zu meiner vorherigen Bemerkung
führten.

von Stored B. (Firma: drx) (umbrecht)


Lesenswert?

Mit einem 16MHZ Quarz funktioniert das ganze. Danke an Sebastian.

An die Hypochonder (Phtefan und kotz) hier, so ein Ekelhaftes Verhalten 
sieht man selten. Schade das man solche Kommentare nicht löschen kann.

BG
Umbrecht

von Stefan F. (Gast)


Lesenswert?

Stored B. schrieb:
> An die Hypochonder (Phtefan und kotz) hier, so ein Ekelhaftes Verhalten
> sieht man selten.

Das ist der "Dank" dafür dass ich dir einen Quarz, eine Korrektur der 
Schaltung und hilfreiche preisgünstige Messgeräte empfohlen habe.

Super du Arsch.

von Stored B. (Firma: drx) (umbrecht)


Lesenswert?

Stefan ⛄ F. schrieb:
> Stored B. schrieb:
>
>> An die Hypochonder (Phtefan und kotz) hier, so ein Ekelhaftes Verhalten
>> sieht man selten.
>
> Das ist der "Dank" dafür dass ich dir einen Quarz, eine Korrektur der
> Schaltung und hilfreiche preisgünstige Messgeräte empfohlen habe.
> Super du Arsch.

Hat ja auch keiner gefordert. Aber das ist wie wenn ich mit einem Kind 
diskutiere das es ins Bett gehen soll. Sinnfrei.

BG

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.