El siguiente circuito, construido en un prototypeboard / stripboard, a veces no funciona: está muerto para el mundo. No hay salida independientemente de la entrada. Originalmente pensé que algunas de las conexiones soldadas eran inestables (debido al hecho de que al tocar la placa parecería que el circuito se apagaba o volvía a estar vivo), sin embargo, después de revisar la placa prototipo nuevamente, no pude. encuentra mucho de algo fuera de lo común, aparte de la resistencia entre Vcc y Gnd siendo 7. mega ohmios Me pregunto ahora si hay algún error en el diseño / lógica del circuito.
Laentradaes0Vo12V,yestáconectadaalauCatravésdeloptoacoplador.LaunidaduCescuchalaentradayparpadealosdistintosledsmientraslaentradaesde12Vyladesactivacuandolaentradavuelvea0V.Códigocompleto:
#include<avr/io.h>#include<util/delay.h>#include<avr/interrupt.h>#include<avr/cpufunc.h>#include<avr/sleep.h>volatileuint8_tuseless=0;ISR(INT0_vect){useless^=0xFF;}intmain(void){//UsingPCINT0aslow-levelinterruptMCUCR&=~((1<<ISC01)|(1<<ISC00));//lowlevelinterruptonINT0GIMSK=1<<INT0;//enableINT0interrupt#defineOUTPUTA4#defineOUTPUTB3#defineINPUT1DDRB=0x00|(1<<OUTPUTA)|(1<<OUTPUTB);PORTB=0;sei();//enableinterrupts_NOP();while(1){if((PINB&&(1<<INPUT))==0){PORTB|=(1<<OUTPUTA)|(1<<OUTPUTB);while((PINB&(1<<INPUT))==0){_delay_ms(170);PORTB^=(1<<OUTPUTA);}PORTB&=~((1<<OUTPUTA)|(1<<OUTPUTB));}if(1){//GotosleepMCUCR|=1<<SE;MCUCR=MCUCR&&~((1<<SM1)|(1<<SM1))|(1<<SM1)|(0<<SM1);sleep_cpu();//WakeuphereMCUCR&=~(1<<SE);}
Mimejorideaactualesreponerel74HC14N(disculpas,eldisparadorSchmitteseso,ynoel74LS14),yeltamañodelatapadederivaciónmáspequeña(elcircuitosealimentadeunwallwartde2-3AyhaybastantepocosLEDs)
EDITAR:sehacorregidoelesquemafrentealasalidadeloptoacoplador(gracias
EDIT2 Se ha corregido el esquema para mostrar que el pin de reinicio está vinculado a Vcc (gracias geometrikal )