mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt per AVR USB an WIndows


Autor: Thorsten2605 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ist es möglich per USB einen Interrupt in Windows zu erzeugen?

Wenn ja wie?

Hintergrund:

Ich habe einen Schlüsselschalter, der Windows melden soll ob und welcher 
Schlüssel gesteckt ist! Sobald dieser aber rausgezogen wird soll Windows 
eine Meldung bringen...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...USB einen Interrupt in Windows...
Ein USB-Device wird vom USB-Host in zyklischen Zeitabständen gepollt. 
Daher ist es per Definition nicht möglich, einen "Interrupt" von einem 
Slave an einen Host zu senden.
Der einzige Weg ist, ein USB-Device zu programmieren, das den 
Schlüsselschalter an das OS meldet, wo wieder ein Stück Software darauf 
reagiert.

>Sobald dieser aber rausgezogen wird soll Windows eine Meldung bringen
Windows wird keine Meldung bringen, das ist nicht Aufgabe eines 
Betriebssystems. Du kannst aber ein Stück Software (aka Programm) 
schreiben, das eine Meldung anzeigt.

Autor: Thorsten2605 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja aber da geht doch enorm viel Rechenleistung drauf, wenn ich sagen wir 
mal alle sekunde nachsehe ob was geschickt worden ist oder nicht...

Vor allem wie mach ich das?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht dein Windows doch eh schon, alle x ms beim Device nachfragen, 
ob was anliegt. Bei USB-2.0 "Gamer"-Mäusen sogar jede ms....
Da fällt einmal zusätzlich Nachfragen pro Sekunde wirklich nicht mehr 
auf..

Autor: Thorsten2605 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe einfach das AVR-USB nicht!

Jedesmal wenn ich es builden will kommen hunderte von Fehlern in der 
usbdrv.h dass ein "=",",",";" oder "asm" erwartet wird?!? Was mach ich 
denn da falsch?




Wie kann ich denn über AVR-USB Daten an Windows schicken ohne vorher 
etwas an den Atmel geschickt zu haben?

Autor: Thorsten2605 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatt denn niemand eine Idee?

../usbdrv.h:429: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'char'
../usbdrv.h:435: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'char'
../usbdrv.h:441: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'char'
../usbdrv.h:447: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'char'
../usbdrv.h:453: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'int'
../usbdrv.h:459: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'int'
../usbdrv.h:465: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before 'int'
../Schlüssel.c: In function 'usbFunctionSetup':
../Schlüssel.c:13: error: number of arguments doesn't match prototype
../usbdrv.h:171: error: prototype declaration

Hier noch der Code:
/* ------------------ forward declaration of descriptors ------------------- */
/* If you use external static descriptors, they must be stored in global
 * arrays as declared below:
 */
#ifndef __ASSEMBLER__
extern
#if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM)
PROGMEM
#endif
char usbDescriptorDevice[];

extern
#if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM)
PROGMEM
#endif
char usbDescriptorConfiguration[];

extern
#if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM)
PROGMEM
#endif
char usbDescriptorHidReport[];

extern
#if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM)
PROGMEM
#endif
char usbDescriptorString0[];

extern
#if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM)
PROGMEM
#endif
int usbDescriptorStringVendor[];

extern
#if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM)
PROGMEM
#endif
int usbDescriptorStringDevice[];

extern
#if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM)
PROGMEM
#endif
int usbDescriptorStringSerialNumber[];

#endif /* __ASSEMBLER__ */

Autor: Franz-Juergen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thorsten

ich war soeben selbst auf der Suche nach einer Problemlösung für diese 
Fehlermedlung. Das Problem ist gelöst: In einem eingebundenne h File 
hatte ich ein ";" vergessen.

Gruss
Franz-Juergen

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man kann den Usb-port kurzschließen, das sollte windows sofort anzeigen.

Autor: Sven Z. (treito)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am Einfachsten wäre wohl ein USB-HID-Device, z.B. Joystick und ein 
kleines Programm, was den Zustand abfragt.

Und eine grobe Vermutung zu Deiner Fehlermeldung: Höchstwahrscheinlich 
muss jeweils hinter PROGMEM ein Semikolon.

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.