Asm. Funderingar hos en nybörjare.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

Skriver ett nytt inlägg så detta syns.

Jag programmerar med en wisp628. Har ej PICKit eller liknande.

AndersG, länk nr två funkar ej.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4743
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Swech »

De flesta encoders har inte snäppläge. Men då är de heller inte tänkta som panelval utan
för att räkna position på t.ex. en motor.

Oavsett - poängen var att det är lite lurigt med encoders. Det är lätt att det blir fel.
Det viktigaste då man skriver program är att man inte antar att allt funkar klockrent
utan att programmet även kan hantera då signaler m.m. inte uppför sig som tänkt.

Swech
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Asm. Funderingar hos en nybörjare.

Inlägg av sodjan »

I det aktuella fallet (alltså i denna tråd) så handlar det om encoder
för manuell inmatning. Och de encoders som då är aktuella har nästan
alltid snäpp-lägen. Dessutom är inte en missad läsning då och då
något problem vid manuell "in-rattning", men vrider bara en bråkdel
av ett varv längre och användaren kommer i de flesta fall aldrig
att märka att koden missade ett "snäpp" i alla fall...

En guide för en 16F84/16F84A (som AndersG länkade till) är i alla fall
bättre en en guide för en "Base Line" modell. 16F84/16F84A är ju
en "Mid Range" modell precis som praktiskt taget alla andra PIC16
modeller. Så arkitekturmässigt så är den OK. Det som skiljer är att
den saknar en del finesser (timers, USARTs o.s.v) så en del lösningar
på en 16F84A är kanske inte så som man hade gjort det på en modernare
processor.

Men, som sagt, för att lära sig ASM grunderna så är den mycket bättre
en en 12F509 (eller någon annan "Base Line")...
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

I kameratimer 0.1.0 så skippar jag nog en rotary encoder och kör med två helt vanliga tryckknappar. Bara för att ni skall slippa träta om encodern! :wink:
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Asm. Funderingar hos en nybörjare.

Inlägg av sodjan »

Bra ! Då kan vi träta om "debouncing" istället... :-)
Men annars så håller jag med om att du kan vänta med
encodern ett tag. Sedan, när du blir nyfiken på det, så
har jag ett gäng liggandes på kontoret... 8)
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

Debouncing ja.. Sånt skall man ju och så tänka på.. Suck :) Det börjar kännas som att jag beslutat mig för att bestiga MtEverest, i badbyxor. :)
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4743
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Swech »

Det är ingen som träter :wink: vi har bara en liten diskussion.
Hur kul är det med ett forum om alla håller med och är överens..... :D

Du får väl börja med det lokala berget... d.v.s blinka lite med lysdioder
Så skall vi nog få upp dig för mt everest då tiden är mogen


Swech
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

Ni får träta hur mycket ni vill! :)

Saken är den att jag redan har blinkat med lysdioder. Så det är inte roligt längre.
Jag vill bygga något som jag har användning för, därav detta projekt.

Jag har nu iaf ritat upp på papper hur jag skall fördela pinnarna.

Jag borde då kunna lura ut hur jag skall börja mitt program. Och ställa alla pinnar som I/O allt efter hur det ser ut.

Sen antar jag att jag får googla lite på debouncing. :)
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Asm. Funderingar hos en nybörjare.

Inlägg av sodjan »

OK.

Börja med att definiera funktionen uppifrån/utifrån.
Vad är det den ska göra ? o.s.v...

Sedan testar du de detaljer som du är osäker på i separata småprogram.

Samtidigt funderar du på hur "stommen" i programmet ska se ut med t.ex
en grundläggande timerrutin som du sedan kan använda här och där. Detta
utgör "pulsen", "andningen" (eller vad man vill likna det med) i hela applikationen.

Jag minns inte exakt vad det var du ville göra, men en sådan "grundpuls" kan t.ex
vara 10-100 ms eller liknande. Det får avgöras av vilken upplösning man vill ha
generellt. Denna grundpuls används sedan till debouncing, tidtagning, whatever.

Rutiner för knappar (bygger sannolikt på ovanstående "puls").
Rutiner för eventuell LCD.
O.s.v.

Slutligen syr du ihop det hela till en fungerande helhet.

Men som sagt, börja med att definiera målet, sedan fixar du
detaljerna. Med detta klart blir det rellativt enkelt att sy ihop
helheten på slutet.

Ett vanligt fel är att man börjar bygga Den Slutgiltiga Lösningen
direkt, och sedan sitter man där med en massa kod och med
skitsaker som inte fungerar (kontaktstudsar och liknande). Mycket
enklare att reda ut som först i separata experiment/labb kodersnuttar
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9049
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

De flesta encoders har inte snäppläge. Men då är de heller inte tänkta som panelval utan
för att räkna position på t.ex. en motor.
OK. Jag formulerar om: "De flesta enkoders tänkta för inmatning (till skillnad från positionering) har snäpplägen"
Oavsett - poängen var att det är lite lurigt med encoders. Det är lätt att det blir fel.
Det viktigaste då man skriver program är att man inte antar att allt funkar klockrent
utan att programmet även kan hantera då signaler m.m. inte uppför sig som tänkt.
Absolut, "do nothing gracefully" etc. Men i dfet här fallet så klippte jag kod från en existrande app där koden enbart var avsedd att hantera en alps EC-12 enkoder. Den koden är givetvis ej så lämplig att användas för andra. Det kan tom hända att det är enklare att använda de färdiga ICs som finns för detta ändamål.

Länken nummer två:
http://www.microchip.com/stellent/idcpl ... e=en023805

(Längst ned på sisdan)
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4743
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Swech »

Det enda du behöver ändra i din kod är att den räknar på båda flankerna....
Ta bara bort den där knepiga delayen som du har
samt ta bort kollen om vilken flank det är.

Resultatpulspositionen delar du med 2... och vips har du en kod som alltid funkar :)

Swech
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9049
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

OK. Noterat, dock ligger det ganska lågt ner på listan.
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

Jag tillbringade flera timmar igår på att försöka förstå mig på hur jag räknar med TIMER0 och Prescaler. Utan att komma fram till något. Jag håller på att bli tokig!
Jag fick fram en formel som lyder fout= fclk / Presc(256-TMR0)Count
Vad syftar Count på?
Sedan när jag gjorde mer efterforskningar så var det någonstans det stod att jag skulle ta fclk / 4*Presc(256-TMR0)Count.
Vad är det som gäller?
Man hade kunnat önska att denna formel fanns med i databladet på picen. Eller har jag bara missat den?

Närmre sex timmar i går helt utan resultat. Suck. :sleepy:
sodjan
EF Sponsor
Inlägg: 43242
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Asm. Funderingar hos en nybörjare.

Inlägg av sodjan »

Vilken PIC gäller det ? Låt oss anta att det är 16F688...

Men generellt så delar bara prescalern ner insignalen till timern med valbar faktor.
Figur 5-1 visar hur Timer0 hänger ihop.
Prescaler sätts mellan 1:2 till 1:256 via bitarna PS0-2 i OPTION_REG.
Sen så räknar bara Timer0 ner, från vad du nu har satt den till, till 0 då
TOIF sätts (och ett interrupt triggas om du har enablat det).

> Sedan när jag gjorde mer efterforskningar...

Vardå och varför då ? Allt du behover finns i kapitel "5.0 TIMER0 MODULE".
Det är enklare om du mer konkret talar om vad det är där som är oklart.
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

Jag blev inte något klokare av det där tyvärr.

Det jag vill göra är att få en timer eller man kanske skall kalla det ett delay på 1Hz.
Säg att jag använder en extern kristall på 4MHz
Ja, jag förutsätter nu att jag använder PIC16F688.


EDIT:

Jag har förstått sen tidigare att man sätter prescaler i OPTION_REG. Det glömde jag att säga.
Det jag undrar är helt enkelt hur jag räknar fram en viss frekvens. Beroende på hur man ställer TMR0 så kan man få interupten vid olika tidpunkter. OM jag har förstått rätt.
Skriv svar