ricevitore usb per telecomando (ex:infrahid)

Hardware esterno.
Panelli LCD, TFT, HDTV, Telecomandi, Xbox-client, etc.

Moderatori: ragno, tapino, alez, zulu, davidea

Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

@ragno

Sto facendo varie prove, appena riesco provo anche questi che hai appena indicato, sai dirmi di preciso cosa settano? Purtroppo essendo nuovo dell'atmel non ho ancora avuto modo di studiarmi per bene i fuses sul datasheet...

Per fare prove parallele a bootloadhid ho flashato anche uspasploader, che al contrario di molti progetti ha già gli hex e il makefile per 8, 168 e 328 con indicato anche tutti i fuses da usare; continuando gli smanettamenti è saltata fuori anche una cosa a cui non avevo pensato, e cioè l'indirizzo di start del bootloader (che probabilmente è quello che viene jumpato nel momento in cui metti il piedino per selezionare il bootloader a GND), vi includo qui il primo pezzo del Makefile di usbasploader, è molto istruttivo:

Codice: Seleziona tutto

# Name: Makefile
# Project: USBaspLoader
# Author: Christian Starkjohann
# Creation Date: 2007-12-10
# Tabsize: 4
# Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH
# License: GNU GPL v2 (see License.txt)
# This Revision: $Id: Makefile 798 2010-07-27 17:29:28Z cs $

###############################################################################
# Configure the following variables according to your AVR.
# Program the device with
#     make fuse    # to set the clock generator, boot section size etc.
#     make flash   # to load the boot loader into flash
#     make lock    # to protect the boot loader from overwriting

F_CPU = 16000000
DEVICE = atmega168
# BOOTLOADER_ADDRESS is 1800 for 8k devices, 3800 for 16k and 7800 for 32k.
BOOTLOADER_ADDRESS = 3800
FUSEOPT = $(FUSEOPT_168)
LOCKOPT = -U lock:w:0x2f:m

PROGRAMMER = -c stk500v2 -P avrdoper
# PROGRAMMER contains AVRDUDE options to address your programmer

FUSEOPT_8 = -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m
FUSEOPT_88 = -U hfuse:w:0xd6:m -U lfuse:w:0xdf:m -U efuse:w:0x00:m
FUSEOPT_168 = -U hfuse:w:0xd6:m -U lfuse:w:0xdf:m -U efuse:w:0x00:m
FUSEOPT_328 = -U lfuse:w:0xf7:m -U hfuse:w:0xda:m -U efuse:w:0x03:m
# You may have to change the order of these -U commands.

#---------------------------------------------------------------------
# ATMega8
#---------------------------------------------------------------------
# Fuse high byte:
# 0xc0 = 1 1 0 0   0 0 0 0 <-- BOOTRST (boot reset vector at 0x1800)
#        ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0
#        | | | |   | +-------- BOOTSZ1
#        | | | |   + --------- EESAVE (preserve EEPROM over chip erase)
#        | | | +-------------- CKOPT (full output swing)
#        | | +---------------- SPIEN (allow serial programming)
#        | +------------------ WDTON (WDT not always on)
#        +-------------------- RSTDISBL (reset pin is enabled)
# Fuse low byte:
# 0x9f = 1 0 0 1   1 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (external >8M crystal)
#        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
#        | +------------------ BODEN (BrownOut Detector enabled)
#        +-------------------- BODLEVEL (2.7V)
#---------------------------------------------------------------------
# ATMega88, ATMega168
#---------------------------------------------------------------------
# Fuse extended byte:
# 0x00 = 0 0 0 0   0 0 0 0 <-- BOOTRST (boot reset vector at 0x1800)
#                    \+/
#                     +------- BOOTSZ (00 = 2k bytes)
# Fuse high byte:
# 0xd6 = 1 1 0 1   0 1 1 0
#        ^ ^ ^ ^   ^ \-+-/
#        | | | |   |   +------ BODLEVEL 0..2 (110 = 1.8 V)
#        | | | |   + --------- EESAVE (preserve EEPROM over chip erase)
#        | | | +-------------- WDTON (if 0: watchdog always on)
#        | | +---------------- SPIEN (allow serial programming)
#        | +------------------ DWEN (debug wire enable)
#        +-------------------- RSTDISBL (reset pin is enabled)
# Fuse low byte:
# 0xdf = 1 1 0 1   1 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (external >8M crystal)
#        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
#        | +------------------ CKOUT (if 0: Clock output enabled)
#        +-------------------- CKDIV8 (if 0: divide by 8)
#---------------------------------------------------------------------
# ATMega328P
#---------------------------------------------------------------------
# Fuse extended byte:
# 0x03 = - - - -   - 0 1 1
#                    \-+-/
#                      +------ BODLEVEL 0..2 (011 = 4.3V)
# Fuse high byte:
# 0xda = 1 1 0 1   1 0 1 0 <-- BOOTRST (0 = jump to bootloader at start)
#        ^ ^ ^ ^   ^ \+/
#        | | | |   |  +------- BOOTSZ 0..1 (01 = 2KB starting at 0x7800)
#        | | | |   + --------- EESAVE (don't preserve EEPROM over chip erase)
#        | | | +-------------- WDTON (1 = watchdog disabled at start)
#        | | +---------------- SPIEN (0 = allow serial programming)
#        | +------------------ DWEN (1 = debug wire disable)
#        +-------------------- RSTDISBL (1 = reset pin is enabled)
# Fuse low byte:
# 0xf7 = 1 1 1 1   0 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (0111 = external full-swing crystal)
#        | |  +--------------- SUT 1..0 (11 = startup time 16K CK/14K + 65ms)
#        | +------------------ CKOUT (1 = clock output disabled)
#        +-------------------- CKDIV8 (1 = do not divide clock by 8)


###############################################################################
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da ragno »

@alez: se utilizzi il calcolatore online, puoi fare una sorta di reverse engineering, basta impostare manualmente i valori e vedere cosa varia fra i vari atmel.

Con l'impostazione suggerita viene disabilitato il watchdog che sul atmega8 con i valori suggeriti per usb_irr non e' impostato.
Appena ho un po' di tempo provo a programmare un 328 e vedo se funziona sul mio circuito...

In ogni caso: se il chip non e' vergine bisogna sbloccare il bootloader prima di riflashare qualcosa.

proverei cosi:

erase del chip
unlock del bootloader (lock bits=3f)
flash del bootloader
lock del bootloader (lock bits = 0f)
impostazione dei fuses

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

Ok seguo l'esatta procedura che hai proposto perché a questo punto potrebbe essere una questione di ordine di esecuzione delle cose, io ad esempio non ho cancellato il chip prima (lascio fare a avrdude mentre carica la flash) ho settato i fuses ed ho lasciato il bootloader sbloccato sempre a 3F senza rimettere poi loccato a 0F. Sbaglio o il lock serve solo per proteggere il bootloader da eventuali suicidi?



Altra cosa, già che ci sono, volevo ricompilarmi USB IRR ma non ricesco a capire come fare anche rileggendomi il thread e le note...
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da ragno »

@alez: tranquillo :mrgreen:

Ho provato il 328p tolto dall'arduino. Non il bootloader funziona, ho gli stessi tuoi risultati.

A questo punto ho cercato sul forum del virtual-usb e ho trovato un po' di thread fra cui questo:
http://forums.obdev.at/viewtopic.php?f= ... hilit=328p

Appena posso, do un'occhiata a usbdrvasm.S che dovrebbe essere il nocciolo del problema.

ciao

p.s. ho scaricato l'ultima release del bootloader e non ci sono riferimenti al 328p, ma solo al
8,48,88,168...Quindi probabilmente bisogna metterci le mani...


pp.ss. sul forum di v-usb e' un problema conosciuto per tutte le versioni 'p' delle mcu atmega, consigliano di:

1) compilare il codice per atmega168
2) flashare il codice oggetto sull'atmega328p (che pero' funzionera' come un 168)

oppure

1) inserire la seguente riga in usbconfig.h

Codice: Seleziona tutto

#define USB_INTR_VECTOR INT0_vect
2) compilare per 328p
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

Ok allora è quello che avevo intuito anche io leggendo in giro, quel problema da quel che ho capito affligge diverse MCU della serie p...

Ora comunque riprovo a riflashare per bene usbasploader, quello deve andare dato che ha sia gli hex che i makefile per 328

Grazie per la prova ;)


P.s.: in queste cose se non hai la testaccia dura non ne vieni a capo, per fortuna sono ariete :mrgreen:
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

Ma vieni!

Codice: Seleziona tutto


Bus 005 Device 026: ID 16c0:05dc VOTI USBasp AVR Programmer

questo ottenuto grazie alla semplice indicazione di Ragno, modificato il Makefile inserendo:

Codice: Seleziona tutto

#define USB_INTR_VECTOR INT0_vect
per completezza riporto il Makefile che ha funzionato per intero:

Codice: Seleziona tutto

# Name: Makefile
# Project: USBaspLoader
# Author: Christian Starkjohann
# Creation Date: 2007-12-10
# Tabsize: 4
# Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH
# License: GNU GPL v2 (see License.txt)
# This Revision: $Id: Makefile 798 2010-07-27 17:29:28Z cs $

###############################################################################
# Configure the following variables according to your AVR.
# Program the device with
#     make fuse    # to set the clock generator, boot section size etc.
#     make flash   # to load the boot loader into flash
#     make lock    # to protect the boot loader from overwriting

#define USB_INTR_VECTOR INT0_vect

F_CPU = 16000000
DEVICE = atmega328p
# BOOTLOADER_ADDRESS is 1800 for 8k devices, 3800 for 16k and 7800 for 32k.
BOOTLOADER_ADDRESS = 7800
FUSEOPT = $(FUSEOPT_328)
LOCKOPT = -U lock:w:0x2f:m

PROGRAMMER = -c stk500v2 -P avrdoper
# PROGRAMMER contains AVRDUDE options to address your programmer

FUSEOPT_8 = -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m
FUSEOPT_88 = -U hfuse:w:0xd6:m -U lfuse:w:0xdf:m -U efuse:w:0x00:m
FUSEOPT_168 = -U hfuse:w:0xd6:m -U lfuse:w:0xdf:m -U efuse:w:0x00:m
FUSEOPT_328 = -U lfuse:w:0xf7:m -U hfuse:w:0xda:m -U efuse:w:0x03:m
# You may have to change the order of these -U commands.

#---------------------------------------------------------------------
# ATMega8
#---------------------------------------------------------------------
# Fuse high byte:
# 0xc0 = 1 1 0 0   0 0 0 0 <-- BOOTRST (boot reset vector at 0x1800)
#        ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0
#        | | | |   | +-------- BOOTSZ1
#        | | | |   + --------- EESAVE (preserve EEPROM over chip erase)
#        | | | +-------------- CKOPT (full output swing)
#        | | +---------------- SPIEN (allow serial programming)
#        | +------------------ WDTON (WDT not always on)
#        +-------------------- RSTDISBL (reset pin is enabled)
# Fuse low byte:
# 0x9f = 1 0 0 1   1 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (external >8M crystal)
#        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
#        | +------------------ BODEN (BrownOut Detector enabled)
#        +-------------------- BODLEVEL (2.7V)
#---------------------------------------------------------------------
# ATMega88, ATMega168
#---------------------------------------------------------------------
# Fuse extended byte:
# 0x00 = 0 0 0 0   0 0 0 0 <-- BOOTRST (boot reset vector at 0x1800)
#                    \+/
#                     +------- BOOTSZ (00 = 2k bytes)
# Fuse high byte:
# 0xd6 = 1 1 0 1   0 1 1 0
#        ^ ^ ^ ^   ^ \-+-/
#        | | | |   |   +------ BODLEVEL 0..2 (110 = 1.8 V)
#        | | | |   + --------- EESAVE (preserve EEPROM over chip erase)
#        | | | +-------------- WDTON (if 0: watchdog always on)
#        | | +---------------- SPIEN (allow serial programming)
#        | +------------------ DWEN (debug wire enable)
#        +-------------------- RSTDISBL (reset pin is enabled)
# Fuse low byte:
# 0xdf = 1 1 0 1   1 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (external >8M crystal)
#        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
#        | +------------------ CKOUT (if 0: Clock output enabled)
#        +-------------------- CKDIV8 (if 0: divide by 8)
#---------------------------------------------------------------------
# ATMega328P
#---------------------------------------------------------------------
# Fuse extended byte:
# 0x03 = - - - -   - 0 1 1
#                    \-+-/
#                      +------ BODLEVEL 0..2 (011 = 4.3V)
# Fuse high byte:
# 0xda = 1 1 0 1   1 0 1 0 <-- BOOTRST (0 = jump to bootloader at start)
#        ^ ^ ^ ^   ^ \+/
#        | | | |   |  +------- BOOTSZ 0..1 (01 = 2KB starting at 0x7800)
#        | | | |   + --------- EESAVE (don't preserve EEPROM over chip erase)
#        | | | +-------------- WDTON (1 = watchdog disabled at start)
#        | | +---------------- SPIEN (0 = allow serial programming)
#        | +------------------ DWEN (1 = debug wire disable)
#        +-------------------- RSTDISBL (1 = reset pin is enabled)
# Fuse low byte:
# 0xf7 = 1 1 1 1   0 1 1 1
#        ^ ^ \ /   \--+--/
#        | |  |       +------- CKSEL 3..0 (0111 = external full-swing crystal)
#        | |  +--------------- SUT 1..0 (11 = startup time 16K CK/14K + 65ms)
#        | +------------------ CKOUT (1 = clock output disabled)
#        +-------------------- CKDIV8 (1 = do not divide clock by 8)


###############################################################################

# Tools:
AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE)
CC = avr-gcc

# Options:
DEFINES = #-DDEBUG_LEVEL=2
# Remove the -fno-* options when you use gcc 3, it does not understand them
CFLAGS = -Wall -Os -fno-move-loop-invariants -fno-tree-scev-cprop -fno-inline-small-functions -I. -mmcu=$(DEVICE) -DF_CPU=$(F_CPU) $(DEFINES)
LDFLAGS = -Wl,--relax,--gc-sections -Wl,--section-start=.text=$(BOOTLOADER_ADDRESS)

OBJECTS =  usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o

# symbolic targets:
all: main.hex

.c.o:
	$(CC) $(CFLAGS) -c $< -o $@

.S.o:
	$(CC) $(CFLAGS) -x assembler-with-cpp -c $< -o $@
# "-x assembler-with-cpp" should not be necessary since this is the default
# file type for the .S (with capital S) extension. However, upper case
# characters are not always preserved on Windows. To ensure WinAVR
# compatibility define the file type manually.

.c.s:
	$(CC) $(CFLAGS) -S $< -o $@

flash:	all
	$(AVRDUDE) -U flash:w:main.hex:i

readflash:
	$(AVRDUDE) -U flash:r:read.hex:i

fuse:
	$(AVRDUDE) $(FUSEOPT)

lock:
	$(AVRDUDE) $(LOCKOPT)

read_fuses:
	$(UISP) --rd_fuses

clean:
	rm -f main.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s

# file targets:
main.bin:	$(OBJECTS)
	$(CC) $(CFLAGS) -o main.bin $(OBJECTS) $(LDFLAGS)

main.hex:	main.bin
	rm -f main.hex main.eep.hex
	avr-objcopy -j .text -j .data -O ihex main.bin main.hex
	avr-size main.hex

disasm:	main.bin
	avr-objdump -d main.bin

cpp:
	$(CC) $(CFLAGS) -E main.c

# Special rules for generating hex files for various devices and clock speeds
ALLHEXFILES = hexfiles/mega8_12mhz.hex hexfiles/mega8_15mhz.hex hexfiles/mega8_16mhz.hex \
	hexfiles/mega88_12mhz.hex hexfiles/mega88_15mhz.hex hexfiles/mega88_16mhz.hex hexfiles/mega88_20mhz.hex\
	hexfiles/mega168_12mhz.hex hexfiles/mega168_15mhz.hex hexfiles/mega168_16mhz.hex hexfiles/mega168_20mhz.hex\
	hexfiles/mega328p_12mhz.hex hexfiles/mega328p_15mhz.hex hexfiles/mega328p_16mhz.hex hexfiles/mega328p_20mhz.hex

allhexfiles: $(ALLHEXFILES)
	$(MAKE) clean
	avr-size hexfiles/*.hex

$(ALLHEXFILES):
	@[ -d hexfiles ] || mkdir hexfiles
	@device=`echo $@ | sed -e 's|.*/mega||g' -e 's|_.*||g'`; \
	clock=`echo $@ | sed -e 's|.*_||g' -e 's|mhz.*||g'`; \
	addr=`echo $$device | sed -e 's/\([0-9]\)8/\1/g' | awk '{printf("%x", ($$1 - 2) * 1024)}'`; \
	echo "### Make with F_CPU=$${clock}000000 DEVICE=atmega$$device BOOTLOADER_ADDRESS=$$addr"; \
	$(MAKE) clean; \
	$(MAKE) main.hex F_CPU=$${clock}000000 DEVICE=atmega$$device BOOTLOADER_ADDRESS=$$addr DEFINES=-DUSE_AUTOCONFIG=1
	mv main.hex $@
poi ho compilato con

make all

che mi ha generato il main.hex

non ho ancora fatto il make install di avrdude patchato, quindi il make flash e il make fuse non funzionerebbe (dato che uso il programmatore FTDI con bitbanging), allora ho fatto il flash e il setting dei fuses a mano con

Codice: Seleziona tutto

sudo ./avrdude -C avrdude.conf -c diecimila -p m328p -P ft0 -U flash:w:main.hex

sudo ./avrdude -C avrdude.conf -c diecimila -p m328p -P ft0 -U lfuse:w:0xf7:m -U hfuse:w:0xda:m -U efuse:w:0x03:m
per i collegamenti di USB D- / D+ e del jumper per abilitare il bootloader ho seguito le indicazioni contenute nel file bootloaderconfig.h che sono riassumibili in:

Codice: Seleziona tutto

#define USB_CFG_IOPORTNAME      D
#define USB_CFG_DMINUS_BIT      4
#define USB_CFG_DPLUS_BIT       2
#define JUMPER_BIT  7   /* jumper is connected to this bit in port D, active low */
ossia:

USB D- pin 6 atMega
USB D+ pin 4 atMega
jumper abilitazione pin 13 atMega

come da specifiche della https://metalab.at/wiki/Metaboard


:D
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

A questo punto non potevo riprovarci con bootloadHID, testato, funziona sia con quarzo a 12 che 16 MHz, ovviamente bisogna compilare il codice mettendo la frequenza giusta nel makefile se non scazzano tutte le routines di timing e il device USB non viene riconosciuto :D

Ho copiato parte del Makefile funzionante per USBasploader e ho ricompilato con successo anche bootloadHID che ora gira felicemente anche su atMega328p

Per testarlo, ho usato il tool a linea di comando ./bootloadHID ../../blink_test/main.hex

ovviamente testato con versione del firm sia a 16 che a 12 MHz ;)





Che dire, sono stra soddisfatto! La cosa che godo molto è che mi ricordavo i bootloader come oggetti che dovevi "saltare" quando creavi l'hex da buttare dentro alla MCU, invece con questi simpatici Atmel e il jumper tu puoi caricare un hex normalissimo fatto da chiunque, l'importante è usare il jumper quando lo vuoi fare entrare in modalità bootloader, veramente una figata...
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da ragno »

@alez: quindi ora chiudendo il jumper del circuito, dmesg ti riporta l'id del bootloader?

Ora devi "sparare" dentro il codice usb_irr?
Allora siano in 3 ciascuno con un micro differente...

Questi "ragnetti" di atmega sono proprio "cazzuti", bene o male si riesce sempre a risolvere...

ciao

p.s. devo dire che anch'io di solito l'avrdude lo lancio a manina per vedere cosa accade.
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

Esatto, con caricato il blinketto di esempio: con jumper si inizializza correttamente l'USB mentre senza jumper non si inizializza l'USB e gira il programmino semplice che blinka il led :D

Devo pubblicare tutto per benino, compreso programmetto che ho realizzato al volo per blinkare completo di makefile...

Col PIC ero stato costretto ad usare Winzoz per fare cose un po evolute mentre con questi Atmel è veramente una pacchia lavorare sotto Linux :D

a proposito io sto usando Ubuntu 10.04, se tu usi la 11 e Von usa Arch siamo a 3 micro differenti testati su 3 distro differenti :lol:

Avrdude via FTDI è veramente una scheggia comunque







P.s. la "metaboard" con USBasploader caricato da quel che ho capito ti permetterebbe di usare direttamente la ide di arduino (dato che supporta come programmatore USBasp) e quindi di realizzarti un clone di Arduino Duemilanove a prezzi impossibilmente barboni: MCU, quarzo, condensatori e materiale per la porta usb, veramente stra barbone e flashabile via USB!!
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da ragno »

@alez: io sono "sotto" natty (11.04).

Riguardo l'arduino usbaspato, direi che forse la soluzione piu' economica e' quella di una board xino + eventualmente convertitore usb2ttl (come quello che hai).
La versione usbaspata infatti manca sempre della possibilita' di loggare via seriale, perche' la usb viene utilizzata solo per emulare un programmatore usbasp ed in effetti la board xino costa veramente poco.
Quindi se devi loggare via seriale, si presuppone che tu debba avere un convertitore oppure un cavo nokia dku-5 (va bene pure quello perche' fornisce l'alimentazione), se hai il convertitore, programmi l'atmel dall'ide arduino come fosse un 2099/diecimila standard.
Nonostante cio', il progetto e' molto interessante. Peccato non si trovino pcb a basso prezzo...

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

Hai ragione, il log via seriale è molto comodo oltre che molto usato negli esempi e ti evita di doverci attaccare un display LCD per fare debugging, quindi sempre meglio avere la seriale...
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

von fritz ha scritto:...

1. scaricare l'archivio contenente i sorgenti irmplircd :

Codice: Seleziona tutto

wget http://gen-saarpfalz.de/irmplircd/irmplircd.tar.gz
tar -xzvf irmplircd.tar.gz
2. entrare nella cartella appena creata e compilare:

Codice: Seleziona tutto

cd irmplircd
make
3. eseguire e testare irmplircd

Codice: Seleziona tutto

sudo ./irmplircd /dev/hidraw0
irw

Ho trovato una cosetta mancante: occorre creare la directory dove il demone irmplircd va a creare il PID:

sudo mkdir /var/run/lirc/

cosa non necessaria se già da prima si aveva installato lirc sulla macchina ;)
Ciao alez
Avatar utente
alez
Messaggi: 3074
Iscritto il: 09 mag 2007, 17:11

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da alez »

Dunque, mi sono copiato dal Makefile16 creando un MakeFile32 che cambia solo per la parte iniziale in questo modo:

Codice: Seleziona tutto

##################################
## Makefile for project: usb_ir_rr
## Generated by AVR Project IDE: http://code.google.com/p/avr-project-ide/
##################################

#define USB_INTR_VECTOR INT0_vect

## General Flags
PROJECT = usb_ir_rr
MCU = atmega328p
BURNMCU = atmega328p
BURNPROGRAMMER = usbasp
OUTDIR = ATMEGA32
compila senza problemi, tant'è che:

Codice: Seleziona tutto


Feb 11 00:12:18 portatile kernel: [ 4688.197991] generic-usb 0003:16C0:05DF.000D: hiddev96,hidraw0: USB HID v1.01 Device [www.vdr-italia.org USB IR Remote Receiver] on usb-0000:00:1d.0-2/input0

Ho compilato ed eseguito irmplircd (come si può notare dal post precedente :mrgreen: ) ma irw non mi restituisce niente.

Ora il mio dubbio è: deve funzionare subito o il coso deve prima apprendere qualcosa? (es. tasto power, ecc....)

C'è da dire che come ricevitore IR sto usando un cosetto recuperato da un VHS Panasonic e non il TSOP classico... per lo TSOP devo aspettare domani e farò come Von Fritz cannibalizzando un ricevitore seriale...

altri tool da utilizzare per i test oltre a hiddump suggerito da Von Fritz?
Ciao alez
Avatar utente
ragno
Messaggi: 3017
Iscritto il: 20 gen 2007, 09:43
Località: Marte e dintorni
Contatta:

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da ragno »

@alez: mi pare che la parte usb sia ok. Se funziona il ricevitore, il primo tasto che apprende lo utilizza per pilotare il cyn17, quindi se sostituisci quest'ultimo con un led, lo vedrai lampeggiare quando premi il (primo) tasto del telecomando.

Ovviamente se il ricevitore non e' un tsop, potrebe non funzionare correttamente.

ciao
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.

E quando penso che sia finita,
è proprio allora che comincia la salita.
Avatar utente
von fritz
Messaggi: 1479
Iscritto il: 18 gen 2007, 23:33

Re: ricevitore usb per telecomando (ex:infrahid)

Messaggio da von fritz »

Hello
alez ha scritto:.......C'è da dire che come ricevitore IR sto usando un cosetto recuperato da un VHS Panasonic e non il TSOP classico... per lo TSOP devo aspettare domani e farò come Von Fritz cannibalizzando un ricevitore seriale...

altri tool da utilizzare per i test oltre a hiddump suggerito da Von Fritz?
che modello/tipo hai usato?
collegato correttamente?
questi, dovrebbero funzionare :
Vishay TSOP 1738, Vishay TSOP 1838, Vishay TSOP 11xx series, Siemens SFH 5110, Radio Shack 276-0137, Mitsumi IR Preamp KEY-COOSV (0924G), Toshiba TK19 444 TFMS 5360, Temic TFMS 5380 by Telefunken Semiconductors, Sharp IS1U60, Everlight IRM-8601S, Sony SBX 1620-12, Sharp GP1U271R.
o se no anche quelli allegati alle schede tipo questo:
cavo con ricevitore IR integrato.
cavo con ricevitore IR integrato.
IR-Cable.jpg (10.64 KiB) Visto 2341 volte
protocolli abilitati?
provato con altri telecomandi?

bye
VDRBOX-HD : in pensione!
ALTRO : freerunner (openmoko) ; nokia n900 ; 2 seagate dockstar, samsung ps64d8000, diversi dispositivi ARM (Allwinner, Amlogic) ;)
Don't feed the trolls non alimentate sistemi proprietari ;)

Linux rulez! :)
Rispondi