ATmega32 + FT232RL

OP #1934226
Lesenswert?

Hallo Leute!

Möchte mit einem Atmega32 Zeichen auf den PC senden.
Als Converter arbeiter ein FT232R von FTDI.

Nur kommt leider lauter Mist am Hyperterminal an.

Baudrate und Code im Atmega funktionieren allerdings, da ich
das ganze auch schon mit einem MAX232 getestet habe.
Wenn ich den MC rausnehme und TX und RX vom FT232R verbinde kommen
die Daten die ich vom PC sende auch schön wieder zurück.

Nur beim Zusammenspiel zwischen MC und FT232R happert es ein wenig.

Der MC läuft noch auf dem internen Takt mit 8MHz - vielleicht
ist der Takt wirklich zu ungenau und der FT232R kommt damit nicht 
klar...

was meint ihr?
OP #1934350
Lesenswert?

Am 3V3 Ausgang habe ich einen Kondensator gegen Masse.
Den Mega versorge ich mit 5V, mit der gleichen Spannung versorge ich 
auch den FT232.
Masse von USB und Platinenversorgung habe ich zusammengeschlossen

Aber ich sehe gerade dass ich VCCIO nicht beschaltn habe!
Das gefällt mir gar nicht, da nachträglich eine Leitung anlöten kann man 
vergessen oder?
Gast #1940000
Lesenswert?

Wie ist das denn eigentlich zu sehen: Muss die Baudrate des Atmega die 
gleiche sein wie sie der Rechner erwartet? Oder sind das zwei getrennte 
vorgänge, also MC -> FT232 und FT232 -> PC und für jeden der Vorgänge 
muss also die Baudrate stimmen ... ich habe die Leitungen ebenso 
gekreuzt wie im Datenblatt angegeben, VCCIO an 5V angeschlossen wie den 
Atmel auch.

Wenn ich in der Konsole "echo "\n" > /dev/ttyUSB0" eingebe, leuchtet 
auch eine der LEDs, wenn ich allerdings mit dem Atmel sende, passiert 
gar nichts.

Ich habe allerdings auch die beiden Leitungen RTS# und CTS# nicht 
angeschlossen.

Hat jemand einen guten Debugging-Tipp? Vielleicht den, dass man auf 
jeden Fall den FT232 programmieren muss weil vorher gar nichts geht? Im 
Datenblatt finde ich auch keinen Hinweis auf eine 
Wald-und-Wiesen-Baudrate die immer geht oder so, daher denke ich dass 
die Baudrateneinstellung für den FT232 vom Treiber auf Rechnerseite 
übernommen wird.
(Firma: eHaJo.de) Persönliche Seite #1940015
Lesenswert?

Genau, der FT232 übernimmt die Baudrate vom Treiber.
Du musst am Rechner nur die selber Baudrate wie am Atmega einstellen 
dann klappt das auch ;-)
wenn du "nur echo blabla" machst kanns sein, dass "irgendwas" nicht 
stimmt mit deiner Schnittstelle.
Du musst auf jeden Fall ein stty davor machen damit zumindest die 
Baudrate stimmt.
Verwende mal gtkterm oder hterm, damit ist das Fehlerpotential schon mal 
weg.

> Wenn ich den MC rausnehme und TX und RX vom FT232R verbinde kommen
> die Daten die ich vom PC sende auch schön wieder zurück.

was ja bei jeder Baudrate funktioniert.
Gast #1940017
Lesenswert?

Ach ja, hier noch der Code mit dem ich das getestet habe. Ich habe ihn 
mir hier aus dem Tutorial zusammenkopiert und nochmal im Datenblatt 
geschaut: Die C-Beispiele sind ähnlich.
1
#define F_CPU 20000000UL     // Systemtakt in Hz - Definition als unsigned long beachten 
2
                             // Ohne ergeben sich unten Fehler in der Berechnung
3

4
#define BAUD 9600UL      // Baudrate
5
 
6
// Berechnungen
7
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
8
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))     // Reale Baudrate
9
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
10
 
11
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
12
  #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! 
13
#endif 
14

15
#include <avr/io.h>
16
#include <util/delay.h>
17

18
/* UART-Init Bsp. ATmega16 */
19
 
20
void uart_init(void)
21
{
22
  UCSRB |= (1<<TXEN);  // UART TX einschalten
23
  UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);  // Asynchron 8N1 
24
 
25
  UBRRH = UBRR_VAL >> 8;
26
  UBRRL = UBRR_VAL & 0xFF;
27
}
28

29
int main (void){
30

31
  while (1) {
32
      while (!(UCSRA & (1<<UDRE)))
33
      {
34
      }
35
 
36
      UDR = 'x'; 
37

38
    while (!(UCSRA & (1<<UDRE)))
39
      {
40
      }
41
 
42
      UDR = '\n'; 
43

44
    _delay_ms(1000);
45
  
46
  }
47

48

49
  
50
}
Gast #1940131
Lesenswert?

Ok, habe was empfangen. Ich hab die Beispiele aus dem Datenblatt 1:1 
abgetippt und es kommt was an, einen richtigen Unterschied zum Tutorial 
konnte ich aber noch nicht feststellen. Naja, jetzt erfreu ich mich 
erstmal an den Zeichen die da über den Schirm flackern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren