www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe zu USB/CDC Implementierung (USBN9604)


Autor: Läubi .. (laeubi) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe folgendes "Problem":
Ich wollte für das USBProg eine neue Firmware schreiben die Werte mit 
dem ADC aufzeichnet und dann per USB an den Host schickt mittels eines 
virtuellen COM ports. Habe mir daher Benedikts usbserial firmware als 
Grundlage runtergeladen 
(http://svn.berlios.de/svnroot/repos/usbprog/trunk/...), 
dort wird aber immer nur ein Zeichen versendet. Im Datenblatt des 
USBN9604 ließt sich das aber so das man über den TXBUFFER auch mehr 
bytes gleichzeitig versenden kann, jezt quäl ich mich damit aber schon 
ne Weile und komm auf keinen Grünen Zweig.
Habe mal die Aktuelle Version als zip angehängt.

mittels der transmit funktion
void transmit(unsigned char c) {
  USBNWrite(TXC2,FLUSH);
  USBNWrite(TXD2, c);
  rs232_send();
  interrupt_ep_send();
  wait_ms(20);
}
 Kann ich zwar wie gesagt ein Zeichen problemlos senden aber ohne das 
Delay funktionierts nicht und macht die Sache natürlich laaaaaangsam. ;)

Daher habe ich folgendes versucht:
USBNWrite(TXC2,FLUSH+TX_EN);
for(i=start;i<length;i+=burst) {
  for(j=0;j<burst;j++) {
    USBNWrite(TXD2, buffer[i+j]);
  }
  rs232_send();
  interrupt_ep_send();
  wait_ms(20);
}
Hat auch ganz gut funktioniert, nur das burst nicht größer als 4 sein 
darf, sonst geht wieder nix, und wenn ich größere Datenpakete damit 
sende hängt sich das Terminalprogram auf, ich habe auch Versucht den 
FIFO Pufferplatz zu lesen: Der ist aber immer = 31 was heißt das der 
Fifo leer ist, daran kann es eigentlich auch nicht liegen.
Auch das Abfragen des TX_DONE Flags brachte nix.

Ich verzweifel hier schon langsam weil das alles für mich keinen Sinn 
ergibt, erlaubt so ein CDC Device (oder die Implementierung von 
Benedikt?) nur das Senden EINES Zeichens/X ms??

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.