ADC räkna ut binärt tal?
Re: ADC räkna ut binärt tal?
Tack för det svaret då gör jag en oppamp krets som ger mig 4 steg per grad
Sedan delar jag värdet med 4
Och slutligen substraherar jag med 10 (och så sparar varge sub i minne) tills jag bara har ental kvar?
Tror jag förstår nu!
Sedan delar jag värdet med 4
Och slutligen substraherar jag med 10 (och så sparar varge sub i minne) tills jag bara har ental kvar?
Tror jag förstår nu!
Senast redigerad av kvaark 9 september 2011, 18:28:25, redigerad totalt 1 gång.
Re: ADC räkna ut binärt tal?
> Och slutligen substraherar jag med 10 (och så sparar varge sub i minne)
Du räknar (1, 2, 3...) hur många gånger du kan dra bort 10 utan
att det går under noll. Sedan återställer du utgångsvärdet och drar
bort tiotals delen, resten är entalsdelen.
Säg att du har 47 grad C.
1. 47-10 = 37 => 1
2. 37-10 = 27 => 2
3. 27-10 = 17 => 3
4. 17-10 = 7 => 4
5. 7-10 ger overflow/borrow, alltå är tiotalssiffran 4 enligt steget innan.
5. 47-40 = 7, alltså är entalssiffran 7
Eller lägg till 10 igen till det du fick i steg 4 ovan så att resultatet
blir 7 igen, det är nog enklare.
Konvertera 4 resp 7 till rätt 7-segment-kod och lägg ut !
Det hela görs egentligen på exakt samma sätt som om du gjorde det med papper och penna.
Du räknar (1, 2, 3...) hur många gånger du kan dra bort 10 utan
att det går under noll. Sedan återställer du utgångsvärdet och drar
bort tiotals delen, resten är entalsdelen.
Säg att du har 47 grad C.
1. 47-10 = 37 => 1
2. 37-10 = 27 => 2
3. 27-10 = 17 => 3
4. 17-10 = 7 => 4
5. 7-10 ger overflow/borrow, alltå är tiotalssiffran 4 enligt steget innan.
5. 47-40 = 7, alltså är entalssiffran 7
Eller lägg till 10 igen till det du fick i steg 4 ovan så att resultatet
blir 7 igen, det är nog enklare.
Konvertera 4 resp 7 till rätt 7-segment-kod och lägg ut !
Det hela görs egentligen på exakt samma sätt som om du gjorde det med papper och penna.
Re: ADC räkna ut binärt tal?
Unge fär så jag tänkte då är det bara det där med overflow/borrow
Hur skriver man
Vet hur man kollar om det blit 0 btfss status, z
Men inte det andra!
Hur skriver man
Vet hur man kollar om det blit 0 btfss status, z
Men inte det andra!
Re: ADC räkna ut binärt tal?
Vilken PIC ?
Men rent allmänt, kolla t.ex SUBWF och vilka STATUS bitar som den påverkar.
Lägg värdet i ett register.
Ladda W med 10 (decimalt)
Kör SUBWF reg, f i en loop tills C = 0.
Antal varv i loppen innan C = 0 är lika med totalssiffran.
Du får ha ett extra register som du gör nollar före
loopen och kör en INCF på i loopen...
Men rent allmänt, kolla t.ex SUBWF och vilka STATUS bitar som den påverkar.
Lägg värdet i ett register.
Ladda W med 10 (decimalt)
Kör SUBWF reg, f i en loop tills C = 0.
Antal varv i loppen innan C = 0 är lika med totalssiffran.
Du får ha ett extra register som du gör nollar före
loopen och kör en INCF på i loopen...
Re: ADC räkna ut binärt tal?
Jag har inte valt pic ännu!
Men det kommer nog bli den billigaste 8bitars pic med minst 9 I/0s och en 8bitars ADC som fins på elfa!
Men som du säger så står det förmodligen i databladet!?
Då ska jag nog kunna få till något innom en snar framtid! Nu när jag iallafal förstår ungefär hur det fungerar!
Tack ska ni ha för all hjälp!
Men det kommer nog bli den billigaste 8bitars pic med minst 9 I/0s och en 8bitars ADC som fins på elfa!
Men som du säger så står det förmodligen i databladet!?
Då ska jag nog kunna få till något innom en snar framtid! Nu när jag iallafal förstår ungefär hur det fungerar!
Tack ska ni ha för all hjälp!
Re: ADC räkna ut binärt tal?
Ja, det blir lite svårt att diskutera detaljer när du inte har ett datablad att jämföra med !
PIC16F690 är helt OK. Vad ska du programmera med ?
Och priset för 1 PIC spelar nog ingen som helst roll.
Eller ska du bygga 1000 styck av prylen ??
> och en 8bitars ADC som fins på elfa!
Det blir svårt att hitta. I princip alla har 10 bitar. Men du kan
bara "kasta" 2 av bitarna (de lägsta) efter konvertering. Se
"result formating" i ADC kapitlet i databladet.
PIC16F690 är helt OK. Vad ska du programmera med ?
Och priset för 1 PIC spelar nog ingen som helst roll.
Eller ska du bygga 1000 styck av prylen ??
> och en 8bitars ADC som fins på elfa!
Det blir svårt att hitta. I princip alla har 10 bitar. Men du kan
bara "kasta" 2 av bitarna (de lägsta) efter konvertering. Se
"result formating" i ADC kapitlet i databladet.
Re: ADC räkna ut binärt tal?
Men detta kan väl bara fungera om jag vill visa från +1 grad och upp till typ 63 grader? Om jag vill att skalan ska börja på -10 blir det väll annat? Men det gör inget för min termometer ska bara sitta i ett vexthus och där ska det knappast vara minusgrader!
Re: ADC räkna ut binärt tal?
du subtraherar med 10 helt enket.
Antag att du har 27 grader:
Då kommer du att få ut siffran 37 från din ADC (när du skippat de sista bitarna)
37 - 10 = 27. Ett vanligt positivt tal.
Men om det är -3 grader då? (det kan ju bli vinter och nån värmare går sönder)
Jo då har du siffrran 7 från ADC.
7 - 10 = -3 och du får owerflow/borrow/carry eller vad det heter.
Då skriver du först ut ett minustecken på displayen.
sedan negerar du talet -3 så att du får talet 3.
skriv ut talet 3.
Men jag hade nog valt att visa temp i tiondels grader... :
40 grader ger 2.44 volt ut
-10 grader ger 0 volt ut.
Vref = 2.50 volt
ADC (10 bitar) ger en skala på 0-1023 för 0-2.50 volt
shifta bort en bit och du får ett tal från 0-511.
eftersom max är 2.44 volt (vid 40 grader) så får du då ut 2.44/2.50*1024/2 = 500 (avrundar uppåt).
subtrahera med 100 (dvs 10.0 grader) och du får ett tal som motsvarar tiondels grader.
Nu måste du räkna ut tre siffror: hundratal, tiotal och ental.
en temp på 32.4 grader kommer att representeras av talet 324.
Det är bara att sätta en punkt före sista siffran.
Antag att du har 27 grader:
Då kommer du att få ut siffran 37 från din ADC (när du skippat de sista bitarna)
37 - 10 = 27. Ett vanligt positivt tal.
Men om det är -3 grader då? (det kan ju bli vinter och nån värmare går sönder)
Jo då har du siffrran 7 från ADC.
7 - 10 = -3 och du får owerflow/borrow/carry eller vad det heter.
Då skriver du först ut ett minustecken på displayen.
sedan negerar du talet -3 så att du får talet 3.
skriv ut talet 3.
Men jag hade nog valt att visa temp i tiondels grader... :
40 grader ger 2.44 volt ut
-10 grader ger 0 volt ut.
Vref = 2.50 volt
ADC (10 bitar) ger en skala på 0-1023 för 0-2.50 volt
shifta bort en bit och du får ett tal från 0-511.
eftersom max är 2.44 volt (vid 40 grader) så får du då ut 2.44/2.50*1024/2 = 500 (avrundar uppåt).
subtrahera med 100 (dvs 10.0 grader) och du får ett tal som motsvarar tiondels grader.
Nu måste du räkna ut tre siffror: hundratal, tiotal och ental.
en temp på 32.4 grader kommer att representeras av talet 324.
Det är bara att sätta en punkt före sista siffran.
Re: ADC räkna ut binärt tal?
Njä det är klart att det inte spelar någon större roll om picken kosta 50 eller 18 kronor men snål som man är så!!!
Ja jag får exprimentera lite!!
Men med en tio bitars adc så delar den upp talet på två register och i och med det så går jag bet med mina haltande kunskaper!!
Tänkte att det kaanske va bra att börja lära sig med en 8bitars adc, det fins faktiskt några på elfa!
Men ni får gärna upplysa mitt dunkla inre och hjälpa mig ut i ljuset!!
Kanske är det enklare om man har en tio bitars pic med tio bitars adc än med en åtta bitars pic med tio bitars adc? Vad vet jag?
Med eran hjälp har jag fattat mycket mera av hur jag ska tänka när jag angriper problemet .
Jag vet att jag har picen som följer med pickit 2 med experimentkort tror det är PIC16F690, mins att den har en tio bitars adc,
Om jag utgår från den så slipper jag köpa något för att bara exprimentera! Pluss att jag kanske får lära mig något mera!
Frågar man inget får man inget veta... Om man inte läser en bok vill säga!
Ja jag får exprimentera lite!!
Men med en tio bitars adc så delar den upp talet på två register och i och med det så går jag bet med mina haltande kunskaper!!
Tänkte att det kaanske va bra att börja lära sig med en 8bitars adc, det fins faktiskt några på elfa!
Men ni får gärna upplysa mitt dunkla inre och hjälpa mig ut i ljuset!!
Kanske är det enklare om man har en tio bitars pic med tio bitars adc än med en åtta bitars pic med tio bitars adc? Vad vet jag?
Med eran hjälp har jag fattat mycket mera av hur jag ska tänka när jag angriper problemet .
Jag vet att jag har picen som följer med pickit 2 med experimentkort tror det är PIC16F690, mins att den har en tio bitars adc,
Om jag utgår från den så slipper jag köpa något för att bara exprimentera! Pluss att jag kanske får lära mig något mera!
Frågar man inget får man inget veta... Om man inte läser en bok vill säga!
Re: ADC räkna ut binärt tal?
16-bitars tal måste man kunna lära sig att använda i en processor.
det är bara att använda två register istället för ett.
Det är inte så svårt. finns säkert en massa på nätet om det.
exempelvis 16 Bit Arithmetic (PIC ASM)
det är bara att använda två register istället för ett.
Det är inte så svårt. finns säkert en massa på nätet om det.
exempelvis 16 Bit Arithmetic (PIC ASM)
Re: ADC räkna ut binärt tal?
> Men med en tio bitars adc så delar den upp talet på två register och i och med
> det så går jag bet med mina haltande kunskaper!!
Men jag skrev :
> Men du kan bara "kasta" 2 av bitarna (de lägsta) efter konvertering.
> Se "result formating" i ADC kapitlet i databladet.
Har du kollat där ? Eller gissar du bara utan att ha kollat databladet alls ?
Med rätt formattering (de två lägsta bitarna i "det andra" registret) så kan
du bara läsa den ena och använda det som ett 8-bitars resultat rakt av.
Som jag också skrev, så blir det lite meningslöst allt detta om du inte också
stämmer av de tips och rekomendationer du får mot databladet.
Lite fel att skriva att man "går bet" om man inte ens har försökt.
Dessutom är just *det* ju ganska enkelt. Jag tror inte alls att du
saknar förmåga att lära dig någon som helst nytt, men din inställning
är knappast till någon hjälp. Det är också lite tråkigt att försöka hjälpa
till när det bara är en massa negativt tillbaka.
Om du nu har en PICkit2 med en 16F690 så ska du så klart köra med den.
Den fungerar utmärkt till just detta och kortet och allt är ju redan klart.
Dessutom är "Lesson 4" av de "kortkurser" som följer med PICkit2 just för ADC !
En liten exempelkod på bara runt 20 rader. Har tittat på *den* ??
Du har ju allt serverat på silverfat.
Kanske dags att göra lite själv ?
> det så går jag bet med mina haltande kunskaper!!
Men jag skrev :
> Men du kan bara "kasta" 2 av bitarna (de lägsta) efter konvertering.
> Se "result formating" i ADC kapitlet i databladet.
Har du kollat där ? Eller gissar du bara utan att ha kollat databladet alls ?
Med rätt formattering (de två lägsta bitarna i "det andra" registret) så kan
du bara läsa den ena och använda det som ett 8-bitars resultat rakt av.
Som jag också skrev, så blir det lite meningslöst allt detta om du inte också
stämmer av de tips och rekomendationer du får mot databladet.
Lite fel att skriva att man "går bet" om man inte ens har försökt.
Dessutom är just *det* ju ganska enkelt. Jag tror inte alls att du
saknar förmåga att lära dig någon som helst nytt, men din inställning
är knappast till någon hjälp. Det är också lite tråkigt att försöka hjälpa
till när det bara är en massa negativt tillbaka.
Om du nu har en PICkit2 med en 16F690 så ska du så klart köra med den.
Den fungerar utmärkt till just detta och kortet och allt är ju redan klart.
Dessutom är "Lesson 4" av de "kortkurser" som följer med PICkit2 just för ADC !
En liten exempelkod på bara runt 20 rader. Har tittat på *den* ??
Du har ju allt serverat på silverfat.
Kanske dags att göra lite själv ?

Re: ADC räkna ut binärt tal?
oj jag menade verkligen inte att låta nedlåtande.. facktum är att jag har lärt mig mycket på alla tips som jag fått i denna tråd
grejen är den att jag har provat adc med experimentkortet.. men jag läste inte på databladet om just adc..
ok så det ska finnas lektioner med pickit två?? då måste jag leta upp den skivan och kolla!
grejen är den att jag har provat adc med experimentkortet.. men jag läste inte på databladet om just adc..
ok så det ska finnas lektioner med pickit två?? då måste jag leta upp den skivan och kolla!
Re: ADC räkna ut binärt tal?
ok har provat lite idag och lyckats göra en kod som visat 0 till 255 på en 3x7segmntst display där 0v motsvarar 0 och 5v motsvarar 255.... så nu tackvare all hjälp på detta forum ska jag nog kunna få till en temp mätare..
jag använde PICen 16f690 och gjorde som sodjan sa, och använde bara dom 8a högsta bitarna.. bra tips...
nu ska jag bara räkna lite på opamp koppling..
jag använde PICen 16f690 och gjorde som sodjan sa, och använde bara dom 8a högsta bitarna.. bra tips...
nu ska jag bara räkna lite på opamp koppling..