mikrocontroller.net

Forum: Compiler & IDEs ATmega644 Baudratenproblem bie 2.5MBpps


Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo miteinander

Ich stehe vor einem kleinen Problem:
Ich möchte gerne meinen FTDI Chip mit 2.5MBaud füttern, doch leider 
funktioniert das nicht ganz so wie es sollte:
Der Atmega644 wird mit einem 20MHz Quarz betrieben. 1.25MBaud 
funktioniert mit und ohne Double Speed, aber 2.5MBaud läuft überhaupt 
nicht.

Laut dem FTDI-Datenblatt (FT232) kann der bis zu 3MBaud verarbeiten.

Hier sind mal die Settings der UART:
#define F_CPU 20000000
#define BAUDRATE 2500000

UBRR0H = ((F_CPU/(BAUDRATE*8L)-1) >> 8);
UBRR0L = (uint8_t)(F_CPU/(BAUDRATE*8L)-1);
UCSR0A |= (1<<U2X0);
UCSR0B |= (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00);  

Rechnerisch gesehen sollte das einwandfrei laufen:
UBRR0 ergibt 0
und
UBRR = (f_osc/ 8/ baud rate) - 1 = (20 MHz/8/ 2.5M) - 1 = 0
closest match baud rate = f_osc/8/ (UBRR + 1) = 20 MHz/8/(0 + 1) = 2.5 
Mbps
Error=((closest match baud rate/baud rate)-1)*100%= 
((2.5Mbps/2.5Mbps)-1)*100% = 0%
Das mit dem Error ist schon mal nicht gegeben, da (wenns mir richtig in 
Erinnerung ist) bei Double Speed +/-1.5% Abweichung sein darf.

Als Terminals habe ich HTerm und Docklight v1.9 benutzt, beide hatten 
das gleiche Ergebnis.

Kann mir da jemand weiterhelfen??
MFG
P.Berger

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wirf nochmal einen Blick ins FT232 Datenblatt. 2.5MBaud sind nicht 
möglich:

>Baud Rate = 3000000 / (n + x)
>where n can be any integer between 2 and 16,384 ( = 2^14 ) and x can be a
>sub-integer of the value 0,
>0.125, 0.25, 0.375, 0.5, 0.625, 0.75, or 0.875. When n = 1, x = 0, i.e.
>baud rate divisors with values between 1 and 2 are not possible.

Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber im Datenblatt auf der 1. Seite bei den Spezifikationen 
steht:

>• Data transfer rates from 300 baud to 3 Mbaud
>(RS422, RS485, RS232 ) at TTL levels.

ausserdem habe ich mal noch was bei den Treibern gefunden:
>• Data transfer rate to 1 Megabyte / second - D2XX Direct Drivers.
>• Data transfer rate to 300 kilobyte / second - VCP Drivers.

Die einzige Erklährung von mir aus gesehen ist, dass ich den VCP Treiber 
über das Terminal anspreche, und dann nur 1.8Mbps als Baud erreichen 
kann.

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick B. schrieb:

>>• Data transfer rates from 300 baud to 3 Mbaud
>>(RS422, RS485, RS232 ) at TTL levels.

> Data transfer rates from 300 baud to 3 Megabaud (RS422 / RS485 and at TTL 
levels) and 300 baud to 1 Megabaud (RS232).

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick B. schrieb:
> Sorry, aber im Datenblatt auf der 1. Seite bei den Spezifikationen
> steht:
>
>>• Data transfer rates from 300 baud to 3 Mbaud
>>(RS422, RS485, RS232 ) at TTL levels.

Passt ja auch: Der FT232 kann 3Mbaud, 2MBaud, 1,5MBaud, 1,411765MBaud, 
1,333333MBaud, 1,263158MBaud usw.
Der letze Wert ist auch die Erklärung dafür warum 1,25MBaud 
funktionieren.

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick B. schrieb:
> Sorry, aber im Datenblatt auf der 1. Seite bei den Spezifikationen
> steht:
>
>>• Data transfer rates from 300 baud to 3 Mbaud
>>(RS422, RS485, RS232 ) at TTL levels.

Natürlich, 3 MBaud sind auch möglich mit n=1 und x=0, so steht es im 
Datenblatt. Die nächstkleinere Baudrate sind dann aber schon 1.5 MBaud, 
gefolgt von 1.41, 1.33, 1.26, 1.2 ... MBaud.

@Justus: Das kommt darauf an, von welcher Version wir genau sprechen.
Der FT232R z.B. kann 3MBaud auch mit RS232.

@Benedikt: Da hab ich eine Sekunde länger gebraucht als du - welcher 
Baustein aus der Serie schafft denn 2 MBaud?

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jan M. schrieb:

> @Justus: Das kommt darauf an, von welcher Version wir genau sprechen.
> Der FT232R z.B. kann 3MBaud auch mit RS232.

das stammt aber von der Webseite zum FT232R...

Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, jetzt hab ich glaubs auch begriffen:
>baud rate divisors with values
>between 1 and 2 are not possible.

und 3000000/2500000 = 1.2

Mist, da muss ich wohl auf einen FT245 ausweichen, oder kennt jemand 
eine andere Lösung?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick B. schrieb:

> Mist, da muss ich wohl auf einen FT245 ausweichen, oder kennt jemand
> eine andere Lösung?

- Du übertaktest den AVR auf 24MHz und verwendest 3MBaud.
- Du taktest den AVR mit 16MHz und verwendest 2MBaud.

Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benedikt K. schrieb:
> Patrick B. schrieb:
>
>> Mist, da muss ich wohl auf einen FT245 ausweichen, oder kennt jemand
>> eine andere Lösung?
>
> - Du übertaktest den AVR auf 24MHz und verwendest 3MBaud.
> - Du taktest den AVR mit 16MHz und verwendest 2MBaud.

Übertakten??? Dachte ich bin hier in einem MCU Forum und nicht in einem 
PC optimirungs-Forum.
Geht das überhaupt??

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja geht meist problemlos da die Dinger nicht so hochgezüchtet sind wie 
andere CPUs. Nur z.B. das EERPOM macht beim Übertakten Probleme. Und 
Atmel garantiert dann halt nicht mehr für die korrekte Funktion, aber 
davon abgesehen spricht nichts dagegen.

Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für Probleme sollen das sein? das Programmteile nicht richtig 
ausgeführt werden, oder dass man von der Software nicht mehr so einfach 
ins EEPROM schreiben kann?

Das ist natürlich eine ganz elegante aber nicht unbedingt 
standartisierte Lösung: 1 Bauelement austauschen, welches pinkompatibel 
ist als FTDI-Chip ersetzen, anderer MCU (da zu wenig IO's vorhanden 
FT245 braucht 13 IOs) was mit neuem Print und und und .... verbunden 
ist.

Werde ich auf jeden Fall mal ausprobieren.
Danke für die Antworten.
MFG
P.Berger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.