Lo scopo del seguente listato è quello che superata una certa tensione in ingresso ad "AN3" mi attiva un relè e lo tiene attratto per 10 secondi visualizzando con un led lo scorrere del tempo.
I minutri vengono scanditi con l'istruzione "__delay_ms(1000)".
Il listato è il seguente:
/*****************************************
* main.c
* pic 12F675
* MPLAB X IDE 4.01 e XC8 1.45
* 19 novembre 2019
[attachment=1586]ADC_Functions.c[/attachment]
*
* Configurazione pin:
* GP0 = Led
* GP2 = Rele
* GP4 = (AN3) ADC input
*****************************************/
#include <xc.h>
#include "ADC_Functions.h"
#pragma config FOSC = INTRCIO
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config BOREN = ON
#pragma config CP = OFF
#pragma config CPD = OFF
#define _XTAL_FREQ 4000000
#define Led GPIObits.GP0
#define Rele GPIObits.GP2
void main()
{
unsigned int ADC_value = 0;
InitADC(AN3);
while(1)
{
ADC_value = GetADCValue(AN3);
if (ADC_value > 512) // valore preso a caso per il test
{
Rele = 1; // led rosso
for(int a = 10; a < 0; a -- ){
__delay_ms(500);
Led = 0; // led blu
//Led = Led^1;
__delay_ms(500);
Led = 1; // led blu
}
}
Rele = 0; // led rosso
Led = 0; // led blu
__delay_ms(500);
}
}
Variando la tensione da 0 a 5 volt in ingresso con un potenziometro da 100K non succede niente.
Quello che succede è che il led è acceso fisso, cosi come il rele che è attratto.
Non vedo scorrere i secondi e il circuito tornare a riposo dopo i 10 secondi.
Saluti
Lello