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

Asm. Funderingar hos en nybörjare.

Inlägg av Housepainter »

Jag håller på att läsa på lite om programmering i Assembler, och det går mycket bättre än jag hade hoppats. MEn det är samtidigt mycket man inte förstår.
Jag läser lite guider på gooligum.com.
I dessa exempel så skrivs koden för PIC12F509

Det jag undrar för tillfället är:
I exemplet jag är på så skall man läsa in factory cal värdet till oscillatorn. Koden börjar såhär.

Kod: Markera allt

RESET     CODE     0x000
            movwf    OSCCAL
Här undrar jag vad movwf har för värde i sig? Jag har ju inte skrivit något movlw än. Säkert något enkelt, men jag förstår inte.

Nästa fundering handlar om koden som följer direkt efter.

Kod: Markera allt

start
           movlw     b'111101'
           tris         GPIO
Här är det tris jag undrar om. Varför skriver man inte movwf?

Vore tacksam för svar, även om frågorna berör grunderna i asm.

Många små steg framåt. Jag får tänka på att jag för två dagar sedan inte kunde någon asm kod över huvud taget. Nu har jag iaf skrivit ett blink a led program! :)
haslish
Inlägg: 132
Blev medlem: 15 februari 2006, 18:47:34
Ort: Huskvarna

Re: Asm. Funderingar hos en nybörjare.

Inlägg av haslish »

Jag kollade på gooligum och vad jag kan se så skriver han:

RESET CODE 0x0000
call 0x03FF
banksel OSCCAL
movwf OSCCAL

I vilken tutorial står det du skrev?
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 »

Kanske i något annat exempel. Men i det jag är på så står det som jag skrev ovan.
Exemplet jag syftar på är detta PDF
Raderna jag undrar över finnes på sida 5 i pdf-dokumentet.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 8553
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

Notera att många guider du hittar ute på webben kan vara bra, men "dated", dvs de har inte hängt med i utvecklingen. Tex kommandot TRIS:

http://www.piclist.com/tecHREF/microchip/tris.htm

Koden du nämnde är annars för att läsa det kalibreringsvärde som kommer med vissa PIC. Om du gör en CALL till slutet av programminnet så kommer rutinen att göra en RETLW med kalibreringsvärdet i W, sedan pluggra man det i OSCCAL.
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 »

Så vid uppstart så har PIC:en automatiskt kallibreringsvärdet i W?

Tack! Jag skall läsa på ang Tris!
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 8553
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

Nja, vid uppstart ligger värdet i slutet på program-minnet. Det blir då din uppgift att flytta in det i OSCCAL enligt koden du postade.
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 »

Ok, jag förstår inte till 100%, MEN lär nog göra tids nog.
Jag blir nästan lite yr av all ny information som jag läser in.

Mitt mål är att jag skall programmera en "timer" till min systemkamera där jag skall kunna välja tider mellan 2s upp till 24h mellan exponeringen. Men jag får börja med att lära mig ifrån grunden.

Delay är något som är ganska viktigt antar jag. Och det är stora skillnader i delay mellan 2s och 24h, så jag får nog fundera en del.

Sen har man många funderingar kring hela projektet.
-Hur skall jag välja tiden? Två knappar, tid upp, tid ner. eller vridströmställare. Andra alternativ?
-Hur skall jag veta vilken tid jag valt? Display, etc.
-Vad för kristall skall jag använda?
-Vilken PIC skall jag ha? Antal pinnar som behövs. Minnesåtgång..
Detta är inga direkta frågor till er, utan mer funderingar som flyger omkring i min lilla hjärna. Men kom gärna med förslag..

Just nu har jag ingen mer specifik fråga, men det lär komma många fler inom kort.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 8553
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

Om du skall ha någonsomhelst noggrannhet så skall du använda en extern kristall. Den inbyggda RC-oscillatorn är 1% som bäst och det är litet för litet.

Förslagsvis kör du en litet en eller tvåradig LCD-display. Frågan är med hur stor noggrannhet du behöver kunna ställa? Du ratar om mellan 2..86400s? Kan bli litet tradigt att trycka 86400 gånger för att gå från min till max :)

Alternativt knappsats, typ:
http://www.dalton.ax/dds/dds1.jpg

Du borde klara det med en 16F690, låter inte som ngt jätteprogram.
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 har tänkt mig 12 olika tider. Tidigare har jag funderat på att ha två vridströmställare. En som väljer tidsenhet (s/m/h) och en som väljer mellan 4 olika lägen. Tex 2s, 10s, 30s, 60s. 5m, 15m, 30m, 45m. 1h, 5h, 10h, 24h.
Men om man använder två knappar istället så hoppar man mellan lägerna som är fördefinierade.

Jag har en 2-radig display som går efter HD44780, eller hur man nu säger. Sen skall jag bara lära mig hur det fungerar.

Jag har en PIC 16F688 hemma, men har även 16F628A på gång. Duger någon av de?

Extern kristall har jag räknat med. Jag har några olika hemma. T20.000, 10.000, 5.000 och även en klock-kristal(?) 3.579545.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 8553
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

Om du kollar koden som finns på www.dalton.ax/battmeter så kan du se hur jag implementerat menyn.

Båda skall nog fungera, bara du får antalet pinnar att räcka :)

Du kan ju kolla i länken ovan hur jag kopplat display/knappar.
Användarvisningsbild
Walle
Moderator
Inlägg: 7660
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Asm. Funderingar hos en nybörjare.

Inlägg av Walle »

Jag hade nog använt en extern klocka (RTC) för långa intervall. Typ 73-739-63 eller nån liknande (plockade bara en i högen för att visa vad jag menar).
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 »

Intressant. Det är en bra idé.
Men låt säga att jag låter bli den lösningen denna gången, för att lära mig att skriva långa delayfunktioner. För det är väl möjligt att få ett delay på säg 24h?
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 8553
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Asm. Funderingar hos en nybörjare.

Inlägg av AndersG »

Visst är det det. Gäller bara att sätta upp en tillräckligt lång räknare :)

Om du t ex har en 1MHz klocka och en 16-bits timer och sätter interrupt on overflow så får du en tick varje 0,262 sek (anta att timern matas med fosc/4). Då behöver du bara räkna upp till 329595 för 24 h :)

Med en 32-bitars räknare klarar du det elegant.
BJ
Inlägg: 8425
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Asm. Funderingar hos en nybörjare.

Inlägg av BJ »

Man kan ju ha två knappar för varje siffra.
En upp och en ner.
T.ex. så här:

Kod: Markera allt

^^   ^^   ^^
00 t 00 m 00 s
vv   vv   vv
Då kan man ställa in vad man vill.
T.ex. 13 timmar, 28 minuter och 14 sekunder.
Om man nu har använding för det. ;)
Det blir lite jobbigt att programmera, men det
går allt, bara man vill. :)
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 »

AndersG: Ok, bra. Måste läsa på mer om timers osv.

BJ: Lite överkurs för tillfället. :) Nu nöjer jag mig med 12 fasta tider.
Skriv svar