FT232RL 3Mbaud senden und empfangen

Gast #1739194
Lesenswert?

Hallo


Ich versuche mit dem FT232RL und einem Attiny2313 mit 3MBaud's daten 
auszutauschen.

Mein C Programm
1
void uart_init(void)
2
{
3
  UCSRB |= (1<<RXEN);
4
  UCSRB |= (1<<TXEN);                // UART TX einschalten
5
  UCSRB |= (1<<RXCIE);
6
  UCSRC |= (3<<UCSZ0);    // Asynchron 8N1 
7

8
  UBRRH = 0;
9
  UBRRL = 0;
10
}
11

12
ISR(USART_RX_vect)
13
{
14

15
}
16

17
void main(void)
18
{
19
  uart_init();
20
  sei();
21
  
22
  
23
  
24
  while(1)
25
  {
26
      while (!(UCSRA & (1<<UDRE)));  /* warten bis Senden moeglich                   */
27
  UDR = ('o');                    /* schreibt das Zeichen x auf die Schnittstelle */
28
  }
29

30
}

Auf der PC Seite verwende ich ein angepasstes Beispielprogramm von FTDI

Ich stelle in delphi so die Baudrate ein:
1
FT_Current_Baud := 3000000;
2
Set_USB_Device_BaudRate;

Doch leider kommt nur "müll" beim PC an...

Ich empfange erst 30000 bytes und zeige diese an.

bei o wie in diesem beispiel kommt

~~~~~~~~

an


Hoffe ihr könnt mir helfen...
Danke schonmal
#1739216
Lesenswert?

Wenn schon ISR für Rx, dann Daten abholen um Int zu löschen, sonst 
Interrupt im Dauerfeuer.

NB: Dass aus Sicht des AVR die Rx Richtung keine 3Mbps verkraftet, weil 
dessen CPU das nicht packt, jedenfalls nicht per Interrupt, dürfte wohl 
klar sein. D.h. das PC Programm muss da sehr dezent vorgehen und 
ausserdem berücksichtigen, dass der USB-Layer Zeug bündelt was innerhalb 
einer Millisekunde rüberkommt. Also maximal 2 Bytes pro Millisekunde in 
den AVR schieben.
#1739264
Lesenswert?

Claudio Hediger schrieb:

> Bei 0xFF kommt 127dez an und bei 0xEF 111dez

Klingt nach Bitratenfehler, wie immer du das geschafft hast. Wenn 
127=0x7F empfangen wird, dann kommt das nächste Startbit zu früh. Oder 
jemand unterwegs maskiert das obere Bit weg, denn bei 111=0x6F statt 
0xEF passt alles ausser dem letzten (obersten) Bit.

> Somit sollte ja alles gut sein oder?

Wieso? 0xFF ist 255, nicht 127.
Gast #1739282
Lesenswert?

A. K. schrieb:
> Mach das mal wie vorgeschlagen mit deutlich Pause dazwischen, um auch
> definitiv auf das Startbit zu triggern.

Hab das problem gefunden...

Asche auf mein haupt...

Ich hab doch tatsächlich vergessen dem 232RL bzw meinem Programm 
mitzuteilen das es ein Parity bit gibt...

Nun empfange ich bei 0xFF 255

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