www.mikrocontroller.net

Forum: Compiler & IDEs ds30F6012A mit FT245, Assembler?


Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander.

Ich habe eine kleine Frage bei einem momentanen Projekt:
Bei einem Buffer-System werden kontinuierlich Daten gesendet (@60Hz 
~3000 Byte). Jetzt habe ich aber das Problem, dass der FT245 "nur" einen 
RX-Buffer von 128 Byte hat.
Muss ich jetzt die 3000 Byte in 128 Byte Pakete unterteilen?
und auf der MCU-Seite das ganze jeweils in einer for-Schlaufe 
entgegennehmen?
Bis jetzt lese ich die Daten so aus dem FTDI:
void usart_rx(void){                                     // read function (polling)
   int8 data = 0;                                        // data
   if(input_state(RX) == 0){                             // if new data in the FTDI buffer
      if(index_rxBuf_W == rxBuf_max){                    // ringbuffer
         index_rxBuf_W = 0;
      }
      else{
         index_rxBuf_W ++;
      }

// take datas and set it dynamic in the buffer
      output_low(RD);                                    // read data
      delay_cycles(1);
      if(input_state(D0) == 1) data |= (1 << 0);
      if(input_state(D1) == 1) data |= (1 << 1);
      if(input_state(D2) == 1) data |= (1 << 2);
      if(input_state(D3) == 1) data |= (1 << 3);
      if(input_state(D4) == 1) data |= (1 << 4);
      if(input_state(D5) == 1) data |= (1 << 5);
      if(input_state(D6) == 1) data |= (1 << 6);
      if(input_state(D7) == 1) data |= (1 << 7);
      rxBuf[index_rxBuf_W] = data;                       // store data
      output_high(RD);                                   // read finished
   }
}

Da aber bei einer for-Schlaufe der MCU für eine Zeit "blockiert" ist, 
müsste dies sehr schnell gehen. Wäre da eine Alternative die 
FTDI-Funktionen in Assembler zu schreiben? Was würde mir das für einen 
Geschwindigkeitsvorteil bringen?
Leider bin ich bei Assembler nicht so sehr bewandert...

Besten Dank für den Rat
MFG
P51D

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.