COUT=0 @ CIN- > VREF @ 1 volt

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

PIC12F683

Första frågan är om dessa inställningar stämmer för att få
COUT = 1 när CIN- < 1V (av VDD 5V)...

TRISIO1 = 1
ANS1 = 1
CM = 100
VREN = 1
VRR = 1
VR = 0101
T1GSS = 0

Vad fattas, vad behövs inte?

Andra frågan är vad som behövs för att göra jämförelsen, om något.
Digital I/O sker på egen hand, liksom analog jämförelse.
Men analogt skeende här, hur är det med att få ut ett resultat från komparatorn?
Dvs i vad mån måste man be processorn kolla innevarande läge på COUT?
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

:blond: :foliehatt:
Användarvisningsbild
hcb
Moderator
Inlägg: 5980
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av hcb »

Jag förstår inte riktigt vad det är du undrar. Det var länge sedan jag försökte mig på PIC-programmering, men efter att ha skummat igenom sektion 8 av databladet ser det väl inte helt uppåt väggarna ut, i alla fall om dina (del)registernamn är definierade i includefilen och "100" läses som det binära värdet av de tre lägsta bitarna i CMCON. Så ja, jag tycker att det ser ut som om du fått med det mesta.

Är det något som inte fungerar, eller vad är problemet? Jag säger som jag brukar i sådana här sammanhang: ge en beskrivning av problemet, hur in- och utsignaler ser ut/skall se ut och hur det är kopplat. All sådan information hjälper. Av det du skriver framgår inte ens om det ÄR ett problem eller inte.

Del 2: databladet säger

Kod: Markera allt

"It is recommended to synchronize the comparator with
Timer1 by setting the CMSYNC bit when the
comparator is used as the Timer1 gate source. This
ensures Timer1 does not miss an increment if the
comparator changes during an increment."
I övrigt säger jag som ovan.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

Tack.

Att sätta upp detta borde vara rakt och var som behövs är det enda och det andra.

Min fråga är om jag fått med allt, eller rent av för mycket.


Vad jag vill få ut är om Cin- (GP1) är större eller mindre än Vref (internal) på Cout (internal).


Den ena frågan är om pinnen ska vara analog (AN1) eller digital (I/O)?

Om den ska vara digital, kan man då nyttja WPU?

Den andra är i vad mån man måste säga till komparatorn att göra jämförelsen?
(Vilket står fritt från möjlighet till avbrottsbegäran vid förändring.)


Allt detta står, helt säkert, i databladet. Och är, troligen och säkerligen, skildrat utbrett över många av dessa hundratal sidor.
Så om någon som redan kan och har lärt sig detta kunde verifiera vad jag kommit fram till ovan och även klara ut de spörsmål jag fortfarande har så vore jag glatt tacksam.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av sodjan »

Eftersom komparatorn är en analog enhet så måste pinnen självklart vara analog.

Komparatorn är inget som måste "startas" på samma sätt som t.ex ADCn.
När den är konfigurerad och "på", så jobbar den kontinuerligt.

Varför vill du använda (weak-) pull-up på en analog signal?
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

Bra tack. :tumupp:

WPU tillsammans med diod bildar den en skyddad (kan aldrig bli mer än Vdd) insignal, en AND-grind.
Den blir bättre med ett högre värde på motståndet än vad WPU ger, men med WPU slipper man en komponent.
Användarvisningsbild
hcb
Moderator
Inlägg: 5980
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av hcb »

Vad? Det där får du förklara närmare.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

Standard AND-grind av motstånd och diod.

Bild
Användarvisningsbild
hcb
Moderator
Inlägg: 5980
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av hcb »

Jo, förvisso, men vad har det med din komparatorfunktion att göra? Hade du inte satt komparatorns andra ingång till Vdd internt?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av sodjan »

Om man ska göra så där så bör motståndet sitta till 5V (eller vad Vdd nu är).
Eller ha en efterföljande spänningdelare 12V -> 5V.
Sedan kan porten vara en vanlig digital I/O, komparator behövs inte.
WPU ska *inte* användas som en skyddsfunktion. Om du däremot ersätter
motståndet till 12V med WPU, så är det OK. Men komparatorn behövs inte...
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

Bilden var för att visa på diod-grind som sådan.

WPU har inte någon skyddsfunktion.

Du får titta på diodlogik, så förstår du hur det fungerar. För att sedan förstå hur det fungerar med de olika konstellationerna, analog, digital respektive komparator. Liksom vad jag menar med skyddsfunktion.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

hcb skrev:Jo, förvisso, men vad har det med din komparatorfunktion att göra? Hade du inte satt komparatorns andra ingång till Vdd internt?
Nej, men till VRref.
Erik M
Inlägg: 1380
Blev medlem: 23 februari 2012, 18:34:39
Ort: Göteborg

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av Erik M »

Om man nu läser databladet igen...
8.3 Comparator Configuration
There are eight modes of operation for the comparator.
The CM<2:0> bits of the CMCON0 register are used to select these modes as shown in Figure 8-4.
• Analog function (A): digital input buffer is disabled
• Digital function (D): comparator digital output, overrides port function
• Normal port function (I/O): independent of comparator

FIGURE 8-4:

The port pins denoted as “A” will read as a ‘0’ regardless of the state of the I/O pin or the I/O control TRIS bit.

Pins used as analog inputs should also have the corresponding TRIS bit set to ‘1’ to disable the digital output driver.

Pins denoted as “D” should have the corresponding TRIS bit set to ‘0’ to enable the digital output driver.
Vad som spökar är sådant som "regardless" och "should".
Regardless är enkel att förstå, men när det gäller PIC svårare att begripa.
Should står det, inte "shall". Dvs det är inget krav.

Såsom det är skrivet hanterar CMCON0 själv allt vad komparatorn behöver för den variant man ställt in den för.

Och det verkar inte spela någon roll om jag har satt AN1, eller ej.
Användarvisningsbild
hcb
Moderator
Inlägg: 5980
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av hcb »

Jag läser det som att
1- en port satt till analog ingång kommer att läsas som "0", oavsett vilken faktiskt nivå som finns på den fysiska ingången och vad motsvarande TRIS-register säger.
2- om mandessutom faktiskt vill använda porten som analog ingång är måste man stänga av den digitala utgången genom att sätta respektive bit i TRIS-registret.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: COUT=0 @ CIN- > VREF @ 1 volt

Inlägg av sodjan »

> Du får titta på diodlogik, så förstår du hur det fungerar.

Jag vet hur det fungerar och det är en digital funktion.
Det behövs ingen komparator för att läsa av den, bara
en het vanlig digital I/O pinne.
Skriv svar