Despues de perder dos uc atmega8 utilizando el programa uisp bajo linux, senti un gusto amargo, pensando lo torpe que soy y culpandome por haberlos bloqueado, lo mas extraño aun es que nisiquiera estaba modificando los famosos fuses, de un dos por tres ya no podia programarlos, leyendo en la red habia mucha gente que tenia el mismo problema, entonces me decidi por armar un programdor paralelo y ver si podia recuperar dichos uc. Por otro lado en mi pais es muy dificil conseguir una stk500 o una dragon, sin considerar el costo de estas.
En resumidas cuentas me decidi a armar el programador del japones elm chan, que sin duda tiene un gran nivel en electronica del siguiente link:
http://elm-chan.org/works/avrx/report_e.html#AVRXPEspecificamente el programador es el siguiente:
El transistor logico RN2205 me dio algunos problemas encontrarlo como no es novedad en la tienda de mi ciudad, pero lo remplaze con un pnp 2N3906 añadiendo las resistencias 47K Rbe y 2,2K. Utilice una 74ls299 (ttl) y funciono ok.
Lugo de armar el programador debemos descargar la aplicacion avrpp desde la pagina de elm chan, abrimos la consola y nos dirijimos a la direccion donde se encuentra la aplicacion antes nombrada, en mi caso:
cd C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin
Luego verificamos las distintas opciones:
C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin>avrpp
AVRPP - AVR Parallel Programming tool R0.40 (C)ChaN,2007 http://elm-chan.org/
Write code and/or data : <hex file> [<hex file>] ...
Verify code and/or data : -v <hex file> [<hex file>] ...
Read code, data or fuse : -r{p|e|f}
Write fuse byte : -f{l|h|x}[<bin>]
Lock device : -l[<bin>]
Erase device : -e
Copy calibration bytes : -c
Control port [-p1] : -p<n>
For more options, refer avrx32.txt.
Supported Device:
AT90S 1200,2313,2323,2333,2343,4414,4433,4434,8515,8535
ATtiny 10,11,12,13,15,22,24,25,26,28,44,45,84,85,261,461,861,2313
ATmega 8,16,32,48,48P,64,88,88P,103,128,161,162,163,164P,165,168,168P,169,323,32
4P,325/329,328P,406,603,640,644,644P,645/649,1280,1281,2560,2561,3250/3290,6450/
6490,8515,8535
AT90CAN32,64,128, AT90PWM 2,3
En mi caso leer directamente los fuses, aver si nos encontramos con sorpresas.
C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin>avrpp -rf
Put a device on the socket and type Enter...
PAR->Detected device is ATmega8.
Low: 11101111
││││└┴┴┴── CKSEL[3:0] Clock source selection
││└┴── SUT[1:0] Startup time
│└── BODEN (1:Disable BOD, 0:Enable BOD)
└── BODLEVEL (1:2.7V, 0:4.0V)
High:00000010
│││││││└── BOOTRST *Refer to data sheet
│││││└┴── BOOTSZ[1:0] *Refer to data sheet
││││└── EESAVE (Retain EEPROM at chip erase 1:No, 0:Yes)
│││└── CKOPT (Oscillation Mode 1:Low amplitude, 0:Full swing)
││└── SPIEN (1:Disable ISP, 0:Enable ISP) *Available only in Parallel mode
│└── WDTON (1:WDT normal, 0:WDT always on)
└── RSTDISBL (RESET pin 1:Enable, 0:Disable(PC6))
Cal: 192 192 186 186
Como era de esperarse tenia un fuse mal configurado, pero nunca iba a imaginar que iba a ser que el pin reset estaba disable, creanme cuando les digo que cuando dejo de funcionar el micro, yo no configuraba los fuses, sin mas dejo de funcionar se bloqueo!, sorpresa mia es que nunca pense que se iba a escribir los fuses high de tal manera que quedara desabilitado el reset.
Bueno entonces configuramos de nuevo los fuses:
C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin>avrpp -fl11111
111
Put a device on the socket and type Enter...
PAR->Detected device is ATmega8.
Writing fuse low byte...Passed.
C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin>avrpp -rf
Put a device on the socket and type Enter...
PAR->Detected device is ATmega8.
Low: 11111111
││││└┴┴┴── CKSEL[3:0] Clock source selection
││└┴── SUT[1:0] Startup time
│└── BODEN (1:Disable BOD, 0:Enable BOD)
└── BODLEVEL (1:2.7V, 0:4.0V)
High:00000010
│││││││└── BOOTRST *Refer to data sheet
│││││└┴── BOOTSZ[1:0] *Refer to data sheet
││││└── EESAVE (Retain EEPROM at chip erase 1:No, 0:Yes)
│││└── CKOPT (Oscillation Mode 1:Low amplitude, 0:Full swing)
││└── SPIEN (1:Disable ISP, 0:Enable ISP) *Available only in Parallel mode
│└── WDTON (1:WDT normal, 0:WDT always on)
└── RSTDISBL (RESET pin 1:Enable, 0:Disable(PC6))
Cal: 192 192 186 186
C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin>avrpp -fh11001
001
Put a device on the socket and type Enter...
PAR->Detected device is ATmega8.
Writing fuse high byte...Passed.
C:\Documents and Settings\Administrador\Escritorio\avrxtool32\bin>avrpp -rf
Put a device on the socket and type Enter...
PAR->Detected device is ATmega8.
Low: 11111111
││││└┴┴┴── CKSEL[3:0] Clock source selection
││└┴── SUT[1:0] Startup time
│└── BODEN (1:Disable BOD, 0:Enable BOD)
└── BODLEVEL (1:2.7V, 0:4.0V)
High:11001001
│││││││└── BOOTRST *Refer to data sheet
│││││└┴── BOOTSZ[1:0] *Refer to data sheet
││││└── EESAVE (Retain EEPROM at chip erase 1:No, 0:Yes)
│││└── CKOPT (Oscillation Mode 1:Low amplitude, 0:Full swing)
││└── SPIEN (1:Disable ISP, 0:Enable ISP) *Available only in Parallel mode
│└── WDTON (1:WDT normal, 0:WDT always on)
└── RSTDISBL (RESET pin 1:Enable, 0:Disable(PC6))
Cal: 192 192 186 186
Y listo ya tengo mis dos micros recuperados, gracias a este maravilloso programador de bajo costo, espero les sea de utilidad, muy recomendable, cuando el uisp se pone bruto o cuando no saben que fuses pasaron a modificar por error.