- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: AVR-CDC ist bockig (USB per AVR)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38

    AVR-CDC ist bockig (USB per AVR)

    Anzeige

    E-Bike
    Hallo zusammen!

    Ich habe mir eine kleine Platine nach angehängtem Schaltplan angefertigt. Die Schaltung soll ein kleines Terminal darstellen.

    Zur Inbetriebnahme der Platine habe ich dann von der AVR-CDC-Seite
    http://www.recursion.jp/avrcdc/
    die Hex-Datei für die Version mit Attiny45 @12MHz auf einen Attiny aufgespielt und die Fusebits laut Readme programmiert.
    Anschließend habe ich auf meinem m644 folgendes Testprogramm aufgespielt und die Fusbits natürlich auf externen Quarz programmiert.
    Code:
    '*******************************************************************************
    '***   Testprogramm für CPU Board CPU32GUSB 20090114                         ***
    '***   Empfängt über die serielle Schnittstelle einen Textstring und gibt    ***
    '***   ihn zeilenweise auf einem grafischen LCD aus.                         ***
    '*******************************************************************************
    '*******************************************************************************
    
    'Quarzfrequenz festlegen
    $crystal = 20e6
    $baud = 4800
    
    Config Serialin = Buffered , Size = 32
    
    'Display konfigurieren
    $lib "glcdKS108.lib"
    Config Graphlcd = 128 * 64sed , Dataport = Porta , Controlport = Portc , Ce = 3 , Ce2 = 4 , Cd = 7 , Rd = 6 , Reset = 2 , Enable = 5
    Setfont Font6x8
    
    Config Portd.7 = Output                                     'LCD-Backlight
    Set Portd.7                                                 'Backlight on
    
    'Variablen
    Dim Text$ As String * 40
    Dim Zeichen As Byte                                         'Von ATtiny empfangenes Zeichen
    Dim Zeile As Byte , Spalte As Byte
    
    '*******************************************************************************
    '***   HAUPTPROGRAMM                                                         ***
    '*******************************************************************************
    
    Enable Interrupts
    
    Cls
    
    Zeile = 1
    Spalte = 0
    
    Do
       Input Text$
       If Len(text$) <= 16 Then
          Lcdat Zeile , Spalte , Text$
          Spalte = 0
          Incr Zeile
          If Zeile > 8 Then Zeile = 1
       End If
    Loop
    End
    
    '_******************************************************************************
    
    'Fontdatei
    $include "font6x8.font"
    Fazit:
    Beim Verbinden meiner Platine mit meinem Pc per USB-Kabel wird ein virtueller Comport erzeugt.
    Als Terminalprogramm benutze ich das Bascom-Terminal. Meistens klappt es dann mit der Kommunikation, manchmal muss ich jedoch Terminal oder auch den m644 neustarten.
    Leider hängt sich der AVR-CDC nach ein paar Zeichen (ca. 5 bis 20) auf und ich muss alles wieder neustarten...

    Hat sonst noch jemand Erfahrungen mit AVR-CDC, insbesondere mit der Attiny45-Version, gemacht, und möchte sich dazu äußern?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken usbtest.png  

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    Hallo zusammen!

    Ich habe gerade mal dieses Hauptprogramm in obigen Quellcode eingebaut.
    Code:
    '*******************************************************************************
    '***   HAUPTPROGRAMM                                                         ***
    '*******************************************************************************
    
    Enable Interrupts
    
    Cls
    
    Zeile = 1
    Spalte = 0
    Do
       Input Text$
       If Len(text$) <= 21 Then
          Lcdat Zeile , Spalte , Text$
          Incr Zeile
          If Zeile > 8 Then Zeile = 1
       End If
    Loop
    End
    Solange ich die Zeicheneingaben über Bascom-Terminal schön langsam (> 1 Sek/Zeichen) arbeitet alles stabil, bei schnellerer Eingabe stürzt dann wie gehabt AVR-CDC ab und ich muß meine Schaltung und Terminal neustarten.

    Ersetze ich die Zeile
    Input Text$
    durch
    Input Text$, noecho
    funktioniert es auch bei schnellerer Zeicheneingabe.

    Ich kann nur vermuten, dass aufgrund der hohen µP-Auslastung für das USB-Protokoll für die Soft-Uart zuwenig Rechenzeit übrig bleibt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.04.2005
    Beiträge
    178
    Hallo srewdriver,

    ich kann deine oben gemachte Annahme bestätigen. Ich habe den CDC mit dem ATtiny2313 gebaut. Bei 9600 Baud funktioniert alles noch problemlos, bei 38400 Baud muss man nach jedem Byte, das der AVR zum PC sendet eine Pause einbauen, sonst kommt nur noch die Hälfte der Zeichen beim PC an. Da bleibt wohl wegen der USB-Kommunikation zu wenig Zeit übrig.

    felack

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    12.12.2004
    Ort
    Trier
    Beiträge
    38
    Hi felack,

    danke für deine Wortmeldung. Ich spielte eigentlich schon mit dem Gedanken bei meiner nächsten Bauteilebestellung einen Attiny2313 mitzuordern. Sieht so aus, dass ich bei FTDI doch glücklicher werde - trotz der Löterei.
    Aber wundern tut es mich doch schon, dass der Attiny2313 - trotz Hardware UART - immer noch Probleme macht. Ich dachte, es läge nur an der Soft-UART beim Attiny45.

    Sonst noch jemand, der seine Erfahrungen mitteilen möchte?

    Gruß,
    screwdriver

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    26.02.2009
    Beiträge
    195
    Die Soft USB braucht natürlich alle 40ms mal etwas Rechenleistung in der auch die Interrupts aus sein müssen ist also logisch das man damit keinen kontinuierlichen Datenstrom hinkriegt.

    Irgendwo muss der Preisunterschied von 2 Eur ja auch herkommen

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.04.2005
    Beiträge
    178
    Mit 9600 Baud funktioniert der CDC mit ATtiny2313 einwandfrei, nur bei höheren Baudraten gibt es Probleme.

    felack

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen