Estoy usando un ATtiny167 chip Atmel en una placa PCB personalizada que he diseñado.
Prototipé la placa con los sensores y un Digispark ( Comenzando , Cargar Bootloader ) como el ADC y la conexión en serie. He fabricado la placa (varias veces) y ahora estoy intentando comunicarme con ella.
He intentado cargar un gestor de arranque a través de ISP (se ha cargado algo) y luego he intentado hablar con él con mi PC con Windows 10 a través de USB:
Antecedentesyintentosactuales
Elobjetivofinalesun"sensor stick" USB conectado a una Raspberry Pi que recopila datos del sensor y los envía a un servidor.
Bootloader
He usado el gestor de arranque micronucleus ( Micronucleus repo ) utilizando AVRDUDE y un Arduino Uno como un ISP desde la terminal. Esto se hace a través de las conexiones de pogo en la PCB (MISO, MOSI, RESET, SCK, VCC y GND).
El gestor de arranque se carga correctamente:
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin>avrdude -c stk500v1 -p attiny167 -P com6 -U lfuse:r:-:i -v -C avrdude.conf -b 19200
que produce:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9487 (probably t167)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "ProBootloaderR2.hex"
avrdude: writing flash (16384 bytes):
Writing | ################################################## | 100% 0.03s
avrdude: 16384 bytes of flash written
avrdude: verifying flash memory against ProBootloaderR2.hex:
avrdude: load data flash data from input file ProBootloaderR2.hex:
avrdude: input file ProBootloaderR2.hex contains 16384 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.03s
avrdude: verifying ...
avrdude: 16384 bytes of flash verified
avrdude: safemode: Fuses OK (E:FE, H:DF, L:62)
avrdude done. Thank you.
(Discutiré sobre los fusibles más adelante).
Controladores
He instalado los controladores adecuados para el micronúcleo ( Grabar el cargador de arranque Micronucleus para usar ATtiny85 a través de usb (avrdude) (probado con un Digispark en mi PC).
Fusibles
No estoy seguro de si los fusibles que he seleccionado son correctos. Estoy usando calculadora de fusibles de engbedded.com para calcular los fusibles correctos, he intentado varios y ninguno ha funcionado. No seleccionar el fusible (dejarlo por defecto) parece no dar errores.
Cuando leo desde el cargador de arranque usando el comando
avrdude -c stk500v1 -p attiny167 -P com6 -U lfuse:r:-:i -v -C avrdude.conf -b 19200
me sale:
avrdude: Version 6.3, compiled on Dec 16 2016 at 13:33:19
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "avrdude.conf"
Using Port : com6
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATtiny167
Chip Erase delay : 1000 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 10 4 0 no 512 4 0 4000 4500 0xff 0xff
flash 65 10 64 0 yes 16384 128 128 4500 4500 0xff 0xff
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.06s
avrdude: Device signature = 0x1e9487 (probably t167)
avrdude: safemode: hfuse reads as DF
avrdude: safemode: efuse reads as FE
avrdude: reading lfuse memory:
Reading | ################################################## | 100% 0.03s
avrdude: writing output file "<stdout>"
:01000000629D
:00000001FF
avrdude: safemode: hfuse reads as DF
avrdude: safemode: efuse reads as FE
avrdude: safemode: Fuses OK (E:FE, H:DF, L:62)
avrdude done. Thank you.
Cuando seleccioné Ext. Reloj - XTAL1; Tiempo de inicio PWRDWN / RESET: 6 CK / 14 CK + 64 ms; estaba recibiendo el ID de dispositivo de error 0x00000000 y ya no pude ISP un cargador de arranque. De lo contrario lo he mantenido como Int.RC Osc. 8 MHz
Tengo un reloj externo de 16 MHz, pero como dije, la selección del reloj externo pareció bloquear uno.
No he deshabilitado el reinicio.
Controladores USB
Cuando conecto el dispositivo a mi computadora en el puerto USB (COM6) obtengo el mensaje "Dispositivo USB no reconocido". El controlador (en el Administrador de dispositivos) es "Dispositivo USB desconocido (error en la solicitud del descriptor del dispositivo)".
He intentado seleccionar el controlador por: Actualizar controlador → Buscar en mi computadora el software del controlador → Permítame seleccionar de una lista de controladores de dispositivos en mi computadora → Have Disk ... → Browse ... y luego intentó seleccionar el archivo .inf apropiado:
"La carpeta que especificó no contiene un controlador de software compatible para su dispositivo. Si la carpeta contiene un controlador, asegúrese de que esté diseñada para funcionar con Windows para sistemas basados en x64 ".
También seleccioné el archivo que contiene los controladores apropiados, pero recibo el error "Windows ha determinado que el software del controlador para su dispositivo está actualizado". Y cuando utilizo el IDE de Arduino como si fuera un Digispark, no hay dispositivo se reconoce (se agota el tiempo). He probado los mismos controladores en otras máquinas con Windows, con los mismos resultados.
¿Qué estoy haciendo mal y cómo puedo solucionarlo?
Creo que el problema está en configurar los fusibles, pero no estoy seguro de cuál es la configuración correcta y cómo probarlo.
Contexto
Ahora estoy usando un ATtiny167 en lugar del ATtiny85, por lo que es más parecido al Digispark pro. Sin embargo, utiliza los mismos controladores (controladores de micronúcleos). No he probado otro cargador de arranque para USB y el rango ATtiny ( Optiboot ). No he intentado usar ISP de alto voltaje.