Komparatorn i en PIC12F629

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
korp
Inlägg: 1216
Blev medlem: 30 maj 2006, 02:21:18
Ort: Strömstad

Komparatorn i en PIC12F629

Inlägg av korp »

Hej. Jag håller på att labba med PIC12F629, och försöker förstå mig på komparatorn. Har läst igenom kapitlet om komparatorn i databladet några gånger men jag tycker det är lite snurrigt ändå :?

Jag har börjat på enklast möjliga vis genom att använda mig av komparatorläge 1, dvs komparator med direkt utsignal på GP2, utan att komplicera det med interrupt, interna spänningsreferenser och sånt.

Jag får det inte att fungera. Innan jag postar källkod och fler detaljer undrar jag bara...

Räcker det att koppla CIN+ och CIN- till två punkter i en krets där spänningen relativt till jord är känd? Jag har kopplat CIN+ till en punkt helt nära + på mitt batteri som driver kretsen, och CIN- till en punkt efter en spänningsregulator som alltid ger 5V. :shock:
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Tror knappast de klarar spänningar utanför matningen till PICen, vilket det låter som du har på din beskrivning.

Alltså bara spänningar 0-5V om du driver PICen med 5V!
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Helt rätt. *Inga* in-spänningar utanför Vdd/Vss !!

Ett par motstånd som spänningsdelare fixar det (om det är rätt uppfattat
av din beskrivning, varför skriver du inte vilka spänningar du har i
mätpunkterna ???)

Sen förstår jag inte vad du försöker "mäta", spänningen från batteriet
kommer väl *alltid* att vara högre än efter regulatorn !??

Vill du ha en signal när batterispänningen sjunker (under en viss nivå) ?
Lätt fixat med ett par motstånd.
Kolla även att komp kan jobba så nära matningsspänningen, du kanske
även behöver dela ner spänningen på den andra ingången...
Användarvisningsbild
korp
Inlägg: 1216
Blev medlem: 30 maj 2006, 02:21:18
Ort: Strömstad

Inlägg av korp »

Hej, får verkligen be om ursäkt för de knapphändiga detaljerna. Det var sent och jag tänkte inte klart. Jag ska skärpa till mig.

Det stämmer att jag ville ha en varning då batterispänningen sjönk under en viss nivå. Min "regulator" (lite missvisande ordval), är en MAX619 som boostar till 5V regulerad spänning, varvid batteriet som driver kretsen kan ha flera volt lägre spänning än Vdd.

Vet inte om detaljerna längre är intressanta eftersom jag fick till det idag. Felet var att jag skrev till CMCON i fel minnesbank, och det gav naturligtvis inget vidare resultat. :roll:

Lite synd att MPASM inte ger ordentliga fel när man skriver till fel bank.
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Lite synd att MPASM inte ger ordentliga fel när man skriver till fel bank.

MPASM har inte en aning om vilken bank du skriver till.
Så hur skulle den då veta att det är "fel" bank ??
Användarvisningsbild
korp
Inlägg: 1216
Blev medlem: 30 maj 2006, 02:21:18
Ort: Strömstad

Inlägg av korp »

Hmm .. Nej det klart. Assemblern har väl ingen koll på det. Fast det skulle vara smidigt med en parser som kollar koden för sådana grejor. Eller så får man väl hålla koll på det själv då :lol:
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Finns ett bra kommando i MPASM som heter banksel.... Använd det så brukar koden tämligen smärtfritt gå byta mellan olika PIC. Använder man absolut bankning så måste man tänka... ;)
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det finns ett par olika metoder för att hålla reda på bankingen...

1. Man kollar själv manuellt allting. Fördelen är att man kan se till att
bank-komandona blir optimala (d.v.s inga i onödan). Nackdelen är att
det är hur lätt som helst att få en bug. Den nackdelen är så stor så
metoden är i praktiken oanvändbar...

2. Man använder BANKSEL för alla minnes acceses. Fördelen är att man
alltid kommer att accessa rätt bank. Nackdelen är att man kommer att ha en
del "onödig" kod, t.ex då man accessar två register efter varandra som
ligger i samma bank. Om man då sätter BANKSEL före båda så kommer den
andra BANKSEL att göra samma sak som den första. Men, det kan ånda vara
en bra metod p.g.a att det hela blir bomb-säkert.
Man kan optimera lite genom att bara ha en BANKSEL, men då får man se
upp om man t.ex lägger in en label så att man kan hoppa direkt till det
*andra* kommandot (som alltså då saknar en BANKSEL)...

3. Man använder macron och andra verktyg i MPASM för att automatiskt
hålla reda på bankningen. Så fungerar t.ex Olin Lathrops utvecklingsmiljö
för PIC (http://www.embedinc.com/pic/) Olin's motsvarighet till BANKSEL
heter DBANKIF. Skillnaden är att BANKSEL *alltid* sätter RPx bitarna
i STATUS registret oavsett om det behövs eller inte. DBANKIF håller reda
på vilka RPx bitar som sattes förra gången DBANKIF kördes, och om det
inte behövs så blir det inga onödaga BCF/BSF instruktioner. Man kan alltså
"gödsla" med DBANKIF i koden och endå bara få med exakt de banknings
kommandon som faktiskt behövs.
Användarvisningsbild
korp
Inlägg: 1216
Blev medlem: 30 maj 2006, 02:21:18
Ort: Strömstad

Inlägg av korp »

Tack för tipsen!
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Bara för att förtydliga lite angående de tre banknings metoderna...

1. Bör bara användas då maximalt kompakt kod är nödvändigt.
2. Bör användas i de allra flesta fall, speciellt om man är "nybörjare". Den är vattentät.
3. Är för större utvecklingsprojekt där det extra jobbet att lära sig Olin Lathrops utv.miljö (eller fixa något liknande själv) kan vara motiverat...
Användarvisningsbild
korp
Inlägg: 1216
Blev medlem: 30 maj 2006, 02:21:18
Ort: Strömstad

Inlägg av korp »

Tror jag ska fixa till en enkel parser själv just för bank-problemet. Är ingen större sak att köra den på källkoden och få den att gnälla om ett register skrivs/läses till, som inte existerar i aktuell bank.
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det är inte alls så enkelt som det kan se ut... :-)
Det stora problemet är att hålla reda på vad som
är "aktuell bank"...
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Användandet av banksel spar många gråa hår...... Ungefär lika många som att alltid komma ihåg att stänga av komparatorn när man inte skall ha den.....
Användarvisningsbild
korp
Inlägg: 1216
Blev medlem: 30 maj 2006, 02:21:18
Ort: Strömstad

Inlägg av korp »

bengt-re, tack för påminnelsen :lol:
Skriv svar