USB Joystick basato su ATmega8 microcontrollore a 8bit

Questo è un joystick basato su AVR che si collega al PC tramite la porta USB. L'USB joystick basato su AVR utilizza l'ATmega8, il microcontrollore a 8bit della Atmel ed è su 8 assi con i suoi ingressi analogici. L'USB joystick basato su ATmega (microcontrollore a 8 bits da Atmel) ha 28 pulsanti per usi diversi ed è completamente "plug-and-play" essendo immediatamente riconosciuto quando è collegato al PC (non è richiesto nessun driver)

Il progetto dell'USB joystick è basato su Mjoy16, progettato da Mindaugas Milasauskas. L'hardware ed il software sono open source e gli schemi, i file Gerber, la lista parti ed il codice sorgente sono disponibili gratuitamente. Per incrementare in numero di canali analogici da 6 a 8 è stato cambiato l'hardware dell'ATmega8 in SMD TQFP package. Sono stati fatti dei cambiamenti al codice per supportare 2 canali aggiuntivi.

USB Stick basato su AVR ATmega8 - Lista Parti

Name	Value		Package
C1	100n		0805	
C2	100n		0805	
C3	100n		0805	
C4	27p		0805	
C5	27p		0805	
C6	10u/10V	2412
C7	10n		0805	
D1	LL4148		MINI-MELF-DIODE	
D2	LL4148		MINI-MELF-DIODE	
D3	LL4148		MINI-MELF-DIODE	
D4	LL4148		MINI-MELF-DIODE	
D5	LL4148		MINI-MELF-DIODE	
D6	LL4148		MINI-MELF-DIODE	
D7	LL4148		MINI-MELF-DIODE	
D8	LL4148		MINI-MELF-DIODE	
D9	LL4148		MINI-MELF-DIODE	
D10	LL4148		MINI-MELF-DIODE	
D11	LL4148		MINI-MELF-DIODE	
D12	LL4148		MINI-MELF-DIODE	
D13	LL4148		MINI-MELF-DIODE	
D14	LL4148		MINI-MELF-DIODE	
D15	LL4148		MINI-MELF-DIODE	
D16	LL4148		MINI-MELF-DIODE	
D17	LL4148		MINI-MELF-DIODE	
D18	LL4148		MINI-MELF-DIODE	
D19	LL4148		MINI-MELF-DIODE	
D20	LL4148		MINI-MELF-DIODE	
D21	LL4148		MINI-MELF-DIODE	
D22	LL4148		MINI-MELF-DIODE	
D23	LL4148		MINI-MELF-DIODE	
D24	LL4148		MINI-MELF-DIODE	
D25	LL4148		MINI-MELF-DIODE	
D26	LL4148		MINI-MELF-DIODE	
D27	LL4148		MINI-MELF-DIODE	
D28	LL4148		MINI-MELF-DIODE	
D29	ZD3.3V		MINI-MELF-DIODE	
D30	ZD3.3V		MINI-MELF-DIODE	
IC1	ATmega8-16AI	TQFP32-0762	
JP1	K1X3		2.54mm Header
JP2	K1X3		2.54mm Header
JP3	K1X3		2.54mm Header	
JP4	K1X3		2.54mm Header	
JP5	K1X3		2.54mm Header	
JP6	K1X3		2.54mm Header	
JP7	K1X3		2.54mm Header	
JP8	K1X3		2.54mm Header	
K1	ISP		2.54mm Header
K2	USB-BU B	USB-B-PRINT	
L1	10µH		1206	
Q1	12MHZ 		HC-18U	
R1	82		0603	
R2	82		0603	
R3	2k2		0603	
R4	4k7		0603	
R5	10k		0603	
S1	K1X2		2.54mm Header	
S2	K1X2		2.54mm Header	
S3	K1X2		2.54mm Header	
S4	K1X2		2.54mm Header	
S5	K1X2		2.54mm Header	
S6	K1X2		2.54mm Header	
S7	K1X2		2.54mm Header	
S8	K1X2		2.54mm Header	
S9	K1X2		2.54mm Header	
S10	K1X2		2.54mm Header	
S11	K1X2		2.54mm Header	
S12	K1X2		2.54mm Header	
S13	K1X2		2.54mm Header	
S14	K1X2		2.54mm Header	
S15	K1X2		2.54mm Header	
S16	K1X2		2.54mm Header	
S17	K1X2		2.54mm Header	
S18	K1X2		2.54mm Header	
S19	K1X2		2.54mm Header	
S20	K1X2		2.54mm Header	
S21	K1X2		2.54mm Header	
S22	K1X2		2.54mm Header	
S23	K1X2		2.54mm Header	
S24	K1X2		2.54mm Header	
S25	K1X2		2.54mm Header	
S26	K1X2		2.54mm Header	
S27	K1X2		2.54mm Header	
S28	K1X2		2.54mm Header

USB Joystick basato su ATmega8 microcontrollore a 8-bit - Codice sorgente

;********************************************************************
;*  Joystick Initialization Routine
;********************************************************************

InitJoystickAxis:

		rcall	BackupUpperRegisters

		ldi r16, 0xFF
		sts	ADCChanStarted,r16	; reset last ADC  channel number

		ldi r16, XAxisChannel	;
		rcall ReadADC10
		ldi	ZH, high(XAxisRAM)	
		ldi	ZL,  low(XAxisRAM)
		ldi	YH, high(XAxisEE)	
		ldi	YL,  low(XAxisEE)
		rcall Init10SymAxis

		ldi r16, YAxisChannel	;
		rcall ReadADC10
		ldi	ZH, high(YAxisRAM)	
		ldi	ZL,  low(YAxisRAM)
		ldi	YH, high(YAxisEE)	
		ldi	YL,  low(YAxisEE)
		rcall Init10SymAxis

		ldi r16, RudderAxisChannel	;
		rcall ReadADC10
		ldi	ZH, high(RudderAxisRAM)	
		ldi	ZL,  low(RudderAxisRAM)
		ldi	YH, high(RudderAxisEE)	
		ldi	YL,  low(RudderAxisEE)
		rcall Init10SymAxis

		ldi	ZH, high(ThrottleAxisRAM)	
		ldi	ZL,  low(ThrottleAxisRAM)
		ldi	YH, high(ThrottleAxisEE)	
		ldi	YL,  low(ThrottleAxisEE)
		rcall Init8AsymAxis

		ldi	ZH, high(ZAxisRAM)	
		ldi	ZL,  low(ZAxisRAM)
		ldi	YH, high(ZAxisEE)	
		ldi	YL,  low(ZAxisEE)
		rcall Init8AsymAxis

		ldi	ZH, high(RxAxisRAM)	
		ldi	ZL,  low(RxAxisRAM)
		ldi	YH, high(RxAxisEE)	
		ldi	YL,  low(RxAxisEE)
		rcall Init8AsymAxis

		ldi	ZH, high(RyAxisRAM)	
		ldi	ZL,  low(RyAxisRAM)
		ldi	YH, high(RyAxisEE)	
		ldi	YL,  low(RyAxisEE)
		rcall Init8AsymAxis

		ldi	ZH, high(RyAxisRAM)	
		ldi	ZL,  low(RyAxisRAM)
		ldi	YH, high(RyAxisEE)	
		ldi	YL,  low(RyAxisEE)
		rcall Init8AsymAxis

		rcall RestoreUpperRegisters

		ret

Nota: questa è solo una parte del codice sorgente del progetto - USB joystick ATmega8. Per scaricare tutto il codice, cliccate il link sopra

Scarica subito una copia gratis
Tags:

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend