www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmel ATMEGA32U4 mit USB


Autor: Benny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage zum ATMEGA32U.

Der Chip hat einen integrierten USB-Controller. Ich will jetzt über die 
Applikationsseite (PC) auf den USB-Controller zugreifen um die 
Kommunikation zwischen PC und uC durchzuführen. Leider finde ich 
überhaupt keine Angaben über Treiber, DLL usw. wie ich den Zugriff 
handeln kann.

Habe bisher immer mit 8051er gearbeitet und hinten dran ein FT232RL (von 
FTDI) mit dem konnte man über eine DLL Funktionen aufrufen um mit dem 
Burschen zu kommunizieren.

Vielleicht sind ja hier ein par Atmel Spezi's :-)

Vielen Dank!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist wie bei jedem anderen "echten" USB Device auch, Du musst 
entweder eine Standard-USB-Geräteklasse wie CDC oder HID implementieren 
und kannst dann die Standardgerätetreiber des Betriebssystems nutzen, 
oder aber Du implementierst ein USB-Device, das keiner 
Standardgeräteklasse entspricht und musst dann auch auf der 
Betriebssystemseite Dich selbst um das Erstellen von passenden 
Gerätetreibern kümmern.

Der zweite Weg ist erheblich steiniger als der über eine der 
Standardgeräteklassen. Mit libusb/libusb-win32 kann man sich das zwar 
etwas vereinfachen, aber auch das ist nicht "ohne".

Daher bietet sich der Gebrauch von Standardgeräteklassen an; 
beispielsweise bedarf CDC nur einer angepassten .inf-Datei und kann dann 
annähernd wie eine klassische serielle Schnittstelle behandelt werden.

Autor: NN (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der Atmel-Seite gibt es ein Software-Paket: "ATmega32U4 USB Software 
Package". Darin enthalten sind Beispiele z.B. HID etc. inkl. der auf der 
PC-Seite notwendigen Software. Beim ersten überfliegen scheint aber nur 
die erste Variante mit Beispielen beschrieben zu sein.

Über welche Bezugsquelle hast du den ATmega32U4 bekommen ? Ich finde das 
Teil recht interessant, habe aber auf die Schnelle nur Digikey als 
Händler gefunden.

Autor: Benny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten.

@NN

Habe den Atmega noch nicht bekomme ihn auch nicht einzeln, wenn ist er 
vom Kunden schon bestückt auf einem fertigen Produkt. Als Quelle kann 
ich dir nur Digikey, buerklin.de nennen, die den evtl. führen.

Viele Grüße
Benny

Autor: Joshi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.msc-ge.com

Distributor für Atmel (kein Verkauf an Privatpersonen)

Autor: Ulrich Reinelt (ureinelt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

: Bearbeitet durch Moderator
Autor: Pat Rik (patrik)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
den ATmega32U4 in TQFP44 gibt es bei mir zu kaufen. Wer Interesse hat, 
einfach ne Nachricht schicken.
Grüsse

Autor: Dr Strange (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benny schrieb:
> Habe bisher immer mit 8051er gearbeitet und hinten dran ein FT232RL (von
> FTDI) mit dem konnte man über eine DLL Funktionen aufrufen um mit dem
> Burschen zu kommunizieren.

Du kannst eine serielle Schnittstelle simulieren.
Dazu gibt es ein Atmel app note .... AVR272_USB_CDC_Virtual_Com_Port
die Series4 Version passt zum Atmega32u4.
Die Ordner
->modules
->lib_mcu
und deren Unterordner und Files müssen ins Projekt eingebunden werden.
Im Ordner Demo befinden sich die Dateien, welche spezifisch für die 
Anwendung
verändert, bzw. erstellt worden sind. Sowie die Treiber *.inf Datei !!!!
D.h. eingebunden werden müssen die in diesem Ordner vorhandenen .c und 
.h Files.
Auch der Unterordner conf muss eingebunden werden.
In cdc_task.c findet sich die eigentliche Abhandlung wieder.
Im Beispiel wird eine USB-UART Bridge gebaut, diese kann man aber 
einfach verändern.
//! @brief This function initializes the hardware ressources required for CDC demo.
//!
//!
//! @param none
//!
//! @return none
//!
//!/
void cdc_task_init(void)
{
   Usb_enable_sof_interrupt();
}



//! @brief Receive data from USB(Serial Port)
//!
//! RX from USB Handling
//!
//! @param none
//!
//! @return none
void cdc_task(void)
{
      
   if(Is_device_enumerated()) //Enumeration processs OK and COM port openned ?
   {
    
         if (uart_usb_test_hit())   // Something received from the USB ?
         {
       
            while (rx_counter)
            {
        //Loopback
        U8 sbyte = uart_usb_getchar();
        usb_sendbyte(&sbyte);
            }
         }
   }
}

//! @brief sof_action
//!
//! This function increments the cpt_sof counter each times
//! the USB Start Of Frame interrupt subroutine is executed (1ms)
//! Usefull to manage time delays
//!
//! @warning Code:?? bytes (function code length)
//!
//! @param none
//!
//! @return none
void sof_action()
{
   cpt_sof++;
}

void usb_sendbyte(U8* tsend){
   U8 save_ep;
   
   if(Is_device_enumerated()) 
   {
      save_ep=Usb_get_selected_endpoint();   
      Usb_select_endpoint(TX_EP);
      uart_usb_send_buffer(tsend,1);
      Usb_select_endpoint(save_ep);
   }
  
}

Im passenden .h file noch den Eintrag hinzufügen
void usb_sendbyte(U8* tsend);

In der Main-Routine sollte man dann noch folgendes einfügen
   wdtdrv_disable();
   Clear_prescaler();
   scheduler();

Es wird dann der USB-Scheduler in einer Endlosschleife ausgeführt.
Will man also etwas nebenbei ausführen, muss das in diese Schleife rein.
->modules->scheduler->scheduler.c

Damit sollte es laufen.
Das Testprogramm oben schickt jedes byte, welches über den COM-Port 
geschickt wurde wieder zurück.

mfg

Autor: stromflo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

weitere Beispiele gibt es auch unter 
http://www.pjrc.com/teensy/usb_debug_only.html zu finden.

Beziehen kann man den Atmega32U4 auch beim HBE Shop. (Shop für 
Privatpersonen von Farnell)

Gruß Flo

Beitrag #4694075 wurde von einem Moderator gelöscht.
Beitrag #4694081 wurde von einem Moderator gelöscht.
Beitrag #4694212 wurde von einem Moderator gelöscht.

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.