Problema al cargar sketch por ICSP en ATMEGA328P-AU al incluir 74LV245A

Saludos…veran hace un par de dias voy armando una tarjeta que mande a hacer el cual esta compuesta en su totalidad por componentes SMD, y lo que hace es guardar datos de temperatura registrados desde termocuplas (usan como interfaz el integrado MAX31855) en una memoria micro SD, ademas esta basado en el ATMEGA328P-AU, y lo primero que hice fue soldar el microcontrolador y lo necesario para cargarle programas por ICSP, en esto pude verificar que andaba muy bien ya que logre cargar algunos programas a traves de un arduino nano. El problema surgio al incluir unicamenten el integrado 74LV245A el cual lo quiero usar como conversor de niveles para poder usar la tarjeta micro sd y los MAX31855, ya que ahora no logro cargar ningun programa ya que el error me indica lo siguiente.

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         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    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    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.02s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000 (retrying)

An error occurred while uploading the sketch
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Invalid library found in C:\Users\Avendano\Documents\Arduino\libraries\Prototipo_Programa: C:\Users\Avendano\Documents\Arduino\libraries\Prototipo_Programa

En esto que me pongo a revisar el cableado y veo que ese no es el problema, al retirar el 74LV245 nuvemente vuelve a funcionar correctamente, asi que cambio el 74LV245 por otro y nuevamente deja de funcionar. Alguien me podria ayudar con este problema por favor, y gracias de antemano…dejo adjunto la imagen del cableado que tengo.

PROBLEMA 74LV245.PNG

Moderador: Imagen editada

El tema como lo veo es que el 245 esta fijando los niveles de tu puerto SPI con el que luego vas a programar el ATmega328. La alternativa sería que lo deshabilites poniendo un jumper (que obviamente no previste) en el pin /OE. Con lo cual pasaría a tri-state y liberaría la placa para tu proceso de programación y una vez resuelto eso, vuelves a ponerlo a tierra y solucionado.

Entonces un jumper que esta NC habitualmente conectado a gnd y cuando liberas el mismo deja /OE a 5V con una R de 10k.

Gracias por responder surbyte, voy a seguir tu consejo

Por cierto, tampoco pusiste el código de como arrancas los CS de cada MAX.
Cuando plantees un problema aporta toda la info aunque te parezca innecesaria. Recuerda que nosotros no conocemos todo tu proyecto. Pero con las herramientas se hace mas fácil.

EDITO: Mirando mas detenidamente tu esquema, he intentado entender como es que funciona tu programa.
Entiendo que el 245 esta para adaptar niveles y eso esta bien , mi sugerencia sigue firme.

Lo que no comprendo es como direccionas a los MAX. Se supone que los 3 deben estar compartiendo los mismos pines CLK y MISO/MOSI y con el /CS es que habilitas uno u otro.

Por lo visto tu lo estas haciendo sin usar el SPI salvo aquel que si te esta comprometiendo la comunicación cuando intentas flashearlo.

Si tuvieras que rehacer el PCB te sugeríría ciertos cambios que bueno, no se si ayudarán, porque funcionalmente será similares, pero es otro modo de hacerlo.

Quiero decir que puedes usar SHIFIN o SHIFOUT, o sea desplazamiento de bits y eso funciona y mas con estos dispositivos pero también puedes usar SPI para lograr lo mismo.

Solo es un comentario.