Forum: Compiler & IDEs ds30F6012A mit FT245, Assembler?


von Patrick B. (p51d)


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:
1
void usart_rx(void){                                     // read function (polling)
2
   int8 data = 0;                                        // data
3
   if(input_state(RX) == 0){                             // if new data in the FTDI buffer
4
      if(index_rxBuf_W == rxBuf_max){                    // ringbuffer
5
         index_rxBuf_W = 0;
6
      }
7
      else{
8
         index_rxBuf_W ++;
9
      }
10
11
// take datas and set it dynamic in the buffer
12
      output_low(RD);                                    // read data
13
      delay_cycles(1);
14
      if(input_state(D0) == 1) data |= (1 << 0);
15
      if(input_state(D1) == 1) data |= (1 << 1);
16
      if(input_state(D2) == 1) data |= (1 << 2);
17
      if(input_state(D3) == 1) data |= (1 << 3);
18
      if(input_state(D4) == 1) data |= (1 << 4);
19
      if(input_state(D5) == 1) data |= (1 << 5);
20
      if(input_state(D6) == 1) data |= (1 << 6);
21
      if(input_state(D7) == 1) data |= (1 << 7);
22
      rxBuf[index_rxBuf_W] = data;                       // store data
23
      output_high(RD);                                   // read finished
24
   }
25
}

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

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.