__delay_ms(1000) sembra non funzionare
- Lello Guidi
-
Autore della discussione
- Platino Utente
-
Less
Di più
5 Anni 5 Mesi fa - 5 Anni 5 Mesi fa #1
da Lello Guidi
__delay_ms(1000) sembra non funzionare è stato creato da Lello Guidi
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:
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
I minutri vengono scanditi con l'istruzione "__delay_ms(1000)".
Il listato è il seguente:
Code:
/*****************************************
* 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);
}
}
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
Ultima Modifica 5 Anni 5 Mesi fa da Lello Guidi. Motivo: Aggiunta del file di configurazione
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Cosimix
-
- Elit Utente
-
Less
Di più
- Messaggi: 198
- Ringraziamenti ricevuti 26
5 Anni 5 Mesi fa #2
da Cosimix
Risposta da Cosimix al topic __delay_ms(1000) sembra non funzionare
Salve!
Perdona la banalità.. prima di esaminare il codice, assicurati che il potenziometro sia collegato correttamente (e che funzioni correttamente controllandolo con un multimetro).
Saluti,
Cosimo
Perdona la banalità.. prima di esaminare il codice, assicurati che il potenziometro sia collegato correttamente (e che funzioni correttamente controllandolo con un multimetro).
Saluti,
Cosimo
Si prega Accesso o Crea un account a partecipare alla conversazione.
5 Anni 5 Mesi fa #3
da Mauro Laurenti
Risposta da Mauro Laurenti al topic __delay_ms(1000) sembra non funzionare
Presupponendo collegamenti corretti, un paio di problemi software ci sono.
Non inizializzi il registro TRIS per ingressi e uscite.
Nel caso del tuo PIC o sono ingresso di Default o causale...che è male...e può essere input.
Inoltre i resistori di pull-up interni sono attivi di default.
Tradotto in altri termini:
Non hai controllo sulle uscite perché non le hai impostate.
Quindi il LED non lampeggia.
...e ancor peggio il resistore di pull-up ti accende sia il LED che il relay.
Saluti,
Mauro
Non inizializzi il registro TRIS per ingressi e uscite.
Nel caso del tuo PIC o sono ingresso di Default o causale...che è male...e può essere input.
Inoltre i resistori di pull-up interni sono attivi di default.
Tradotto in altri termini:
Non hai controllo sulle uscite perché non le hai impostate.
Quindi il LED non lampeggia.
...e ancor peggio il resistore di pull-up ti accende sia il LED che il relay.
Saluti,
Mauro
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Lello Guidi
-
Autore della discussione
- Platino Utente
-
5 Anni 5 Mesi fa #4
da Lello Guidi
Risposta da Lello Guidi al topic __delay_ms(1000) sembra non funzionare
Se non ci foste voi che mi date un aiuto e mi date la possibilità di imparare, sarei a terra!
Grazie
Lello
Grazie
Lello
Si prega Accesso o Crea un account a partecipare alla conversazione.
- Cosimix
-
- Elit Utente
-
Less
Di più
- Messaggi: 198
- Ringraziamenti ricevuti 26
5 Anni 5 Mesi fa #5
da Cosimix
Risposta da Cosimix al topic __delay_ms(1000) sembra non funzionare
Che embedded world sarebbe senza Laurtec? 
Funziona adesso?
Saluti,
Cosimo

Funziona adesso?
Saluti,
Cosimo
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Forum - Ultimi messaggi
-
- progetto can
- da marcelloraja
-
- MODULO GSM SIM900A
- da Mauro Laurenti
-
- Freedom III e compilazioni fallite
- da Mauro Laurenti
-
- Gestione degli errori su comunicazione seriale
- da Mauro Laurenti
-
- Timer0 e interrupt
- da Mauro Laurenti