Nel tutorial sulla conversione A/D è spiegato come considerare tanti aspetti tra cui la Fosc e l'impedenza della sorgente analogica. Puoi fornire questi valori?
Paolo.
Due PWM con 16F877
Moderatore:
Paolino
29 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Non so che compilatore usi ma quest' istruzione
Dovrebbe esssere scritta cosi':
- Codice: Seleziona tutto
while(ADGO)
continue; //Attende che la conversione sia completa
Dovrebbe esssere scritta cosi':
- Codice: Seleziona tutto
while(ADGO); //Attende che la conversione sia completa
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Uso MPLAb IDE v8.5
Il codice che posto e' quello usato per testare il convertitore A/D con due potenziometri e funziona correttamente...
Ovviamente su AN0 AN1 ci sono due potenziometri diversi!
PS uso un quarzo da 20 MHz
Il codice che posto e' quello usato per testare il convertitore A/D con due potenziometri e funziona correttamente...
- Codice: Seleziona tutto
/*
* programma A/D con due potenziometri su AN0 e AN1
*/
#include <PIC.h>
#include <stdio.h>
#include "delay.c"
int main(void)
{
int ang, ang1;
TRISA=0b00101111; // Tutte le Porte A analogiche come uscite
TRISD=0;//Porte D come uscite
PORTD=0;//Porte D tutte a zero
TRISC=0;//Porte C come uscite
PORTC=0;//Porte C tutte a zero
ADCON0 = 0b10000001; //attiva porte analogiche con 32tosc e lettura su AN0
ADCON1= 0b10000000;
while(1)
{
CHS0=0; // seleziona la porta da leggere (AN0)
DelayUs(20); //ritardo per il cambio porta analogica
ADGO = 1; //Fa partire la conversione
while(ADGO)
continue; //Attende che la conversione sia completa
ang = ADRESL+(ADRESH<<8); // risultato a 10 bit
if(ang>=511) //se e' maggiore uguale alla metà del valore possibile
{
RD0=1;//accendi i led su RD0 e RC1
RC1=1;
}
else //se e' minore della metà allora spegni i led
{
RD0=0;
RC1=0;
}
CHS0=1; //seleziona la porta da leggere (AN1)
DelayUs(20); //ritardo per il cambio porta analogica
ADGO = 1; //Fa partire la conversione
while(ADGO)
continue; //Attende che la conversione sia completa
ang1 = ADRESL+(ADRESH<<8); // risultato a 10 bit
if(ang1>=511) //se e' maggiore uguale alla metà del valore possibile
{
RD1=1; //Accendi i led su RD1 e RC2
RC2=1;
}
else //se e' minore della metà allora spegni i led
{
RD1=0;
RC2=0;
}
}
}
Ovviamente su AN0 AN1 ci sono due potenziometri diversi!
PS uso un quarzo da 20 MHz
0
voti
Tu fai come vuoi ma una continue dentro il ciclo while(1) non fa altro che far continuare l' iterazione del ciclo. L' ambiguita' sta nel fatto che operi sul ciclo while(ADGO) o no.
Poi, per carita', se sei sicuro di quello che fai vai pure avanti cosi'.
Io mi ritiro in buon' ordine.
Pero' mi piacerebbe ancora sapere quale COMPILATORE C usi.
Poi, per carita', se sei sicuro di quello che fai vai pure avanti cosi'.
Io mi ritiro in buon' ordine.
Pero' mi piacerebbe ancora sapere quale COMPILATORE C usi.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Ehm Ho già risposto MPLAB IDE v 8.5 della Microchip
Comunque ho anche provato senza il continue ed e' lo stesso risultato...del resto l'ho usato anche perché studio informatica e me l'hanno insegnata come cosa plausibile...
Comunque ho anche provato senza il continue ed e' lo stesso risultato...del resto l'ho usato anche perché studio informatica e me l'hanno insegnata come cosa plausibile...
0
voti
LucaScia ha scritto:Ehm Ho già risposto MPLAB IDE v 8.5 della Microchip
Ehm, veramente no, non hai risposto! Dire infatti che usi MPLAB IDE 8.5 non significa proprio nulla! Infatti in quell'IDE ci possono stare, senza troppi problemi, diversi COMPILATORI C! Giusto qualcuno:
- CCS C compiler;
- SourceBoost;
- HiTech C.
Quindi la domanda di Tardofreak è più che pertinente
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
LucaScia ha scritto:PS uso un quarzo da 20 MHz
Scusa, ma hai detto PIC16F877 oppure PIC16F877-20?
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Allora forse il problema risiede lì! Il PIC16F877 (immagino ci sia anche un "-04" a seguire) lavora fino a 4MHz. Se vuoi andare a 20MHz serve il PIC16F877-20
Ciao.
Paolo.
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
29 messaggi
• Pagina 2 di 3 • 1, 2, 3
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 10 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)