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


von Thorsten2605 (Gast)


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...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Thorsten2605 (Gast)


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?

von Εrnst B. (ernst)


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..

von Thorsten2605 (Gast)


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?

von Thorsten2605 (Gast)


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:
1
/* ------------------ forward declaration of descriptors ------------------- */
2
/* If you use external static descriptors, they must be stored in global
3
 * arrays as declared below:
4
 */
5
#ifndef __ASSEMBLER__
6
extern
7
#if !(USB_CFG_DESCR_PROPS_DEVICE & USB_PROP_IS_RAM)
8
PROGMEM
9
#endif
10
char usbDescriptorDevice[];
11
12
extern
13
#if !(USB_CFG_DESCR_PROPS_CONFIGURATION & USB_PROP_IS_RAM)
14
PROGMEM
15
#endif
16
char usbDescriptorConfiguration[];
17
18
extern
19
#if !(USB_CFG_DESCR_PROPS_HID_REPORT & USB_PROP_IS_RAM)
20
PROGMEM
21
#endif
22
char usbDescriptorHidReport[];
23
24
extern
25
#if !(USB_CFG_DESCR_PROPS_STRING_0 & USB_PROP_IS_RAM)
26
PROGMEM
27
#endif
28
char usbDescriptorString0[];
29
30
extern
31
#if !(USB_CFG_DESCR_PROPS_STRING_VENDOR & USB_PROP_IS_RAM)
32
PROGMEM
33
#endif
34
int usbDescriptorStringVendor[];
35
36
extern
37
#if !(USB_CFG_DESCR_PROPS_STRING_PRODUCT & USB_PROP_IS_RAM)
38
PROGMEM
39
#endif
40
int usbDescriptorStringDevice[];
41
42
extern
43
#if !(USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER & USB_PROP_IS_RAM)
44
PROGMEM
45
#endif
46
int usbDescriptorStringSerialNumber[];
47
48
#endif /* __ASSEMBLER__ */

von Franz-Juergen (Gast)


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

von Sam .. (sam1994)


Lesenswert?

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

von Sven Z. (treito)


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.

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
Noch kein Account? Hier anmelden.