Hallo, Ich habe das Beispiel Programm "AT91SAM7S-USART_USB_SAM7S" von Martin Thomas in den AT91SAM7S256 mit einem selbstgebautem Wiggler und Openocd flashen können. Das Programm läuft stabil und ich kann über dem Programm "HTerm" Strings zwischen der RS232 und dem virtuellen Comport hin- und her schicken. Jetzt habe ich versucht, den Datenempfang am virtuellen Comport Interrupt gesteuert zu machen. Es soll ein Interrupt ausgelöst werden, wenn ich über HTerm (virtueller Comport) ein Character über der Tatastur eingebe. In der Interrupt Service Routine soll die READ Funktion aus "cdc_enumerate.c" aufgerufen werden. Die READ Funktion habe ich aus der while(1) in main.c rausgenommen. Den USB Interrupt habe ich folgendermaßen im AIC konfiguriert: (in cdc_enumerate.c) void AT91F_USB_Interrupt_Enable(void) { AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_UDP , 0, 0, usb_isr); AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_UDP); AT91F_UDP_EnableIt(AT91C_BASE_UDP, (1<<1)); //ENDPOINT 1 Interrupt } Die Definition von usb_isr (ebenfalls in cdc_enumerate.c) void usb_isr(void) { unsigned int length; char Daten[MSG_SIZE]; struct _AT91S_CDC pCDC_Interrupt; length = pCDC_Interrupt.Read(&pCDC_Interrupt, Daten, MSG_SIZE); Daten[length]=0; } In der main.c habe ich aus der while(1) Schleife length = pCDC.Read(&pCDC, Daten, MSG_SIZE); Daten[length]=0; herausgenommen. In main.c habe ich AT91F_USB_Interrupt_Enable(); while(1) { ........ } eingefügt. In der Funktion AT91F_UDP_EnableIt setze ich das ENDPOINT 1 Interrupt Flag im UDP_IER. Wenn ich das ganze auf den µC flash, wird der USB Anschluß nicht mehr als virtueller Comport erkannt. Mit dem ENDPOINT 1 als Interrupt Quelle bin ich mir nicht so sicher, ob dies stimmt. Wie kann ich ein Receive Data Interrupt beim virtuellen Comport realisieren? Also wie ein "RXRDY: RXRDY Interrupt" bei der echten "RS232". Hat jemand vielleicht einen Tipp? Danke im voraus! Thomas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.