Progetti

   

Tutorial

   

Servizi

   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: __delay_ms(1000) sembra non funzionare

__delay_ms(1000) sembra non funzionare 2 Settimane 4 Giorni fa #1

  • Lello Guidi
  • Avatar di Lello Guidi
  • Offline
  • Platinum Boarder
  • Messaggi: 360
  • Ringraziamenti ricevuti 9
  • Karma: 3
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.

File allegato:

Nome del file: ADC_Functions.c
Dimensione del file:2 KB


Saluti

Lello
Ultima modifica: 2 Settimane 4 Giorni fa da Lello Guidi. Motivo: Aggiunta del file di configurazione
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

__delay_ms(1000) sembra non funzionare 2 Settimane 3 Giorni fa #2

  • Cosimix
  • Avatar di Cosimix
  • Offline
  • Gold Boarder
  • Messaggi: 176
  • Ringraziamenti ricevuti 16
  • Karma: 3
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
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

__delay_ms(1000) sembra non funzionare 2 Settimane 3 Giorni fa #3

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Offline
  • Moderatore
  • Messaggi: 4518
  • Ringraziamenti ricevuti 527
  • Karma: 49
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
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

__delay_ms(1000) sembra non funzionare 2 Settimane 3 Giorni fa #4

  • Lello Guidi
  • Avatar di Lello Guidi
  • Offline
  • Platinum Boarder
  • Messaggi: 360
  • Ringraziamenti ricevuti 9
  • Karma: 3
Se non ci foste voi che mi date un aiuto e mi date la possibilità di imparare, sarei a terra!
Grazie

Lello
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

__delay_ms(1000) sembra non funzionare 2 Settimane 3 Giorni fa #5

  • Cosimix
  • Avatar di Cosimix
  • Offline
  • Gold Boarder
  • Messaggi: 176
  • Ringraziamenti ricevuti 16
  • Karma: 3
Che embedded world sarebbe senza Laurtec? :)

Funziona adesso?

Saluti,
Cosimo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Powered by Forum Kunena
   
© LaurTec 2006-2015