Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Čet Dec 15, 2011 2:16 pm Naslov sporočila: |
|
|
sem ze gledal datasheete. Ko pogledam na strani 155 tabelo mi ni najbolj jasno kako bi lahko uporabil samo an8 in an9.
Upam da ne bo treba popravljati vezja zaradi tega...
|
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Čet Dec 15, 2011 2:35 pm Naslov sporočila: |
|
|
Ne moreš imet samo AN8 in AN9. Možne kombinacije so navedene v tabeli.
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Pet Dec 16, 2011 9:34 am Naslov sporočila: |
|
|
gumby, hvala za potrditev moje napake, ze brikam po vezju da naredim delujoco testno varjanto...
|
|
Nazaj na vrh |
|
 |
branko Član

Pridružen-a: Čet 03 Jan 2008 14:29 Prispevkov: 12 Aktiv.: 0.06 Kraj: kidričevo
|
Objavljeno: Pet Dec 16, 2011 12:27 pm Naslov sporočila: |
|
|
Če hočeš uporabit AN8 in AN9 kot analogni vhod, moraš nastavit kot analogni vhod vse vhode od AN0 do AN9.
Primer: SETUP_ADC_PORTS(AN0_TO_AN9);
_________________ LP, Branko |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Pet Dec 16, 2011 3:25 pm Naslov sporočila: |
|
|
branko je napisal/a: |
Če hočeš uporabit AN8 in AN9 kot analogni vhod, moraš nastavit kot analogni vhod vse vhode od AN0 do AN9.
Primer: SETUP_ADC_PORTS(AN0_TO_AN9); |
ja, se mi je zdelo da je tako takoj ko sem zacel gledat po datasheetu od PICa. Skoda da nisem tega videl ze pred nacrtovanjem PCB, sicer pa zdaj na prvi verziji ni neke panike ker bo v vsakem primeru potrebno popraviti kakšne malenkosti, tako da bo tudi to ena od sprememb za 2. verzijo.
|
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Tor Jan 10, 2012 6:45 pm Naslov sporočila: |
|
|
Ponovno pozdravljeni,
najprej vsem skupaj srecno in zdravo 2012...
Koncno se je spet nasel cas za nadaljevanje mojega vecnega projekta... Tokovni vhod 4-20mA sem preko 240ohmskega upora "pretvoril" v napetostnega tako da sedaj lahko berem analogno vrednost.
Pri tem se mi je pojavil problem da je analogna vrednost od 0 do 256 inkrementov kar je 8-bit in ne 10-bit kot je napisano v datasheetih.
A je potrebna kaksna zacetna komanda, da so analogni vhodi 10-bitni ali je 256 inkrementov maksimalna resolucija ki jo AD zmore??
Prebrano vrednost imam tipa double, čeprav sem v nekaterih primerih videl da je kot integer, ki pa dejansko ne gre dalje od 255...
hvala, LP.
|
|
Nazaj na vrh |
|
 |
žrepko Član

Pridružen-a: Tor 23 Mar 2010 20:12 Prispevkov: 700 Aktiv.: 3.77 Kraj: Ptuj-Maribor
|
Objavljeno: Tor Jan 10, 2012 6:57 pm Naslov sporočila: |
|
|
KLIK Branje, branje,.... google je prijatelj!
_________________ Štromar ima včasih prav, elektrika pa vedno! Profesor Seliger |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Tor Jan 10, 2012 7:22 pm Naslov sporočila: |
|
|
žrepko je napisal/a: |
KLIK Branje, branje,.... google je prijatelj! |
Berem in berem... za malo hitrejši rezultat bi pa prosil za direktni odgovor... medtem pa še vedno berem...
-- medtem našel na linku poglavje 23.7.2, ki ga pa ne razumem povsem... ali je možno brati samo 8 LSB, ali 8MSB? Jaz bi moral brati vseh 10 bitov če se da...
|
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Tor Jan 10, 2012 7:53 pm Naslov sporočila: |
|
|
Ne vem kakšne čarovnije dela tvoj izbrani kompiler vendar je rezultat AD pretvorbe vedno 10 biten. Vrednost je zapisana v ADRESH in ADRESL registrih. Važno je tudi kako ADC inicializiraš. Če izbereš levo poravnavo imaš 8MSb v ADRESH in dva LSb na bitih 6 in 7 v ADRESL. Če izbereš desno poravnavo imaš 8LSb v ADRESL in dva MSb v ADRESH na bitih 0 in 1.
Poglej si kako funkcije iz tvojega kompilerja inicializirajo in izvajajo ADC. Kakšen step by step v debug načinu ne bi škodil. Mogoče celo ugotoviš kam zapiše tista dva manjkajoča bita...
_________________ LP, Matjaž |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Tor Jan 10, 2012 8:51 pm Naslov sporočila: |
|
|
Najbolje da kar pokazem program, morda bo lazje poiskat kaksno napako...
Koda: |
//-----------------------------------
double ref2=0;
void read_temp()
{
set_adc_channel(0); //berem analog input AN0
delay_ms(5);
ref2=read_adc();
if ((ref2>50)&&(ref2<200)) //vklopi izhoda z nizko resolucijo, želena od 200 do 800
{
output_high(RD6);
}
if ((ref2<=50)||(ref2>=200))
{
output_low(RD6);
}
}
void main()
{
SETUP_ADC_PORTS(AN0_TO_AN2_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
while(1)
{
read_temp();
}
} |
|
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Tor Jan 10, 2012 9:26 pm Naslov sporočila: |
|
|
Zakaj double? Rad kompliciraš?
_________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Tor Jan 10, 2012 9:40 pm Naslov sporočila: |
|
|
gumby je napisal/a: |
Zakaj double? Rad kompliciraš? |
če pa gre int samo do 255, 10 bitov je pa 1024... ammm, kak nasvet kako lahko pridem do razpona vrednosti od 0 do 1024??
lp.
|
|
Nazaj na vrh |
|
 |
S53DZ Član



Pridružen-a: Čet 28 Apr 2011 9:27 Prispevkov: 951 Aktiv.: 5.53 Kraj: Ljubljana
|
Objavljeno: Tor Jan 10, 2012 11:34 pm Naslov sporočila: |
|
|
en byte = 8 bitov = 0..255
int = integer = 16 (ali 32) bitov
|
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Sre Jan 11, 2012 12:02 am Naslov sporočila: |
|
|
Za rešitev problema raje pripni definicije funkcij/makrov, ki jih kličeš:
set_adc_channel(), SETUP_ADC_PORTS(),setup_adc()
_________________ LP, Matjaž |
|
Nazaj na vrh |
|
 |
taubek Član


Pridružen-a: Čet 21 Feb 2008 0:37 Prispevkov: 174 Aktiv.: 0.83 Kraj: Malecnik pri MB
|
Objavljeno: Sre Jan 11, 2012 7:08 pm Naslov sporočila: |
|
|
Sicer ne vem tocno kaj imas v mislih pod definicije za te funkcije... ce prav mislim potem je to v header datoteki - priponka
Opis: |
|
 Download |
Ime datoteke: |
16F777.h |
Velikost datoteke: |
13.63 KB |
Downloadano: |
3 krat |
|
|
Nazaj na vrh |
|
 |
|