Timer i PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

"Ta det problem du har nu t.ex. Det enklaste är att göra ett mini PIC-Basic program med enbart ett "Pause 60000" kommando och titta på vilken assemblerkod som genereras. Det skulle direkt tala om varför tiderna blir fel !"

Kunde likväl vara grekiska, du har kanse kunskaper att tala om vad som är fel.

Det finns inte mycket på svenska om assembler och ska jag börja lära mig engelska så lär jag inte bli klar med detta projet.
Hade jag vetat detta för 40 år seda så hade det varit enklare, nu får jag fråga ungdomen om tips och hoppas på ett bra svar.
Senast redigerad av tusse 27 september 2005, 09:46:21, redigerad totalt 1 gång.
mrhedin
Inlägg: 114
Blev medlem: 3 maj 2005, 19:46:24
Ort: Trollhättan/Kiruna
Kontakt:

Inlägg av mrhedin »

tusse

Det låter ju prima med 58 sekunder.

öka då kanske till pause 62000 och

i = 0
WHILE i < 60
pause 62000
WEND

Borde bli runt 60minuter.
Sätt sedan det där i en funktion som du kan anropa när du trycker dig fram med dina knappar. När du tar fotot, så anropar du den här funktionen.

Borde inte det funka?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Visst ! Men då måste du visa lite kod... :-)

Gör ett mini-program, med bara ett "pause 60000" kommando (om det går). Se till att assembler filen sparas (behöver inte alltid vara default, vet inte hur PIC Basic gör, du får kolla det). Posta ASM filen här (om den inte blir tokstor!). Sen får vi se...

> Kunde likväl vara grekiska,

Jo, och just assemblerkoden från en *kompilator* är nog mer grekiska än nödvändigt, den är ju inte primärt avsedd att vara lättläst. Men, en liten snutt som genereras av ett enstaka Basic kommando bör man nog kunna förstå, det är väldigt praktiskt för att få bättre förståelse för vad kompilatorn har för sig.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

mrhedin>>
Det är nog den enklaste lösningen.Borde inte "i" ökas med ett i slingan?i = i+1
WHILE i < 60
pause 62000
i=i+1
WEND
Senast redigerad av tusse 27 september 2005, 10:00:47, redigerad totalt 1 gång.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

sodjan>>
; PicBasic Pro Compiler 2.43, from www.sonsivri.cjb.net UIN:100245565 sonsivri@hotmail.com
PM_USED EQU 1

INCLUDE "16F628.INC"

RAM_START EQU 00020h
RAM_END EQU 0014Fh
RAM_BANKS EQU 00003h
BANK0_START EQU 00020h
BANK0_END EQU 0007Fh
BANK1_START EQU 000A0h
BANK1_END EQU 000EFh
BANK2_START EQU 00120h
BANK2_END EQU 0014Fh
EEPROM_START EQU 02100h
EEPROM_END EQU 0217Fh

R0 EQU RAM_START + 000h
R1 EQU RAM_START + 002h
R2 EQU RAM_START + 004h
R3 EQU RAM_START + 006h
R4 EQU RAM_START + 008h
R5 EQU RAM_START + 00Ah
R6 EQU RAM_START + 00Ch
R7 EQU RAM_START + 00Eh
R8 EQU RAM_START + 010h
FLAGS EQU RAM_START + 012h
GOP EQU RAM_START + 013h
RM1 EQU RAM_START + 014h
RM2 EQU RAM_START + 015h
RR1 EQU RAM_START + 016h
RR2 EQU RAM_START + 017h
_PORTL EQU PORTB
_PORTH EQU PORTA
_TRISL EQU TRISB
_TRISH EQU TRISA
INCLUDE "TABORT.MAC"
INCLUDE "PBPPIC14.LIB"

PAUSE?C 0EA60h
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vi lägger ner det...

Det här är någon pre-assemblerfil. "PAUSE?C 0EA60h" kommer sannolikt att expanderas av något senare steg innan den slutgiltiga assembler koden är färdig.

Skit samma, du verkar inte behöva någon speciell noggranhet i alla fall...
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Finns det ingen som har eller kan skriva en kodsnutt i assembler som ger en sekundpuls passande 16f628 som kan klistras in i pic-basic.

Yttre klocka är tydlingen den bästa lösningen även om jag tycker det verkar vara att gå över ån efter vatten.
mrhedin
Inlägg: 114
Blev medlem: 3 maj 2005, 19:46:24
Ort: Trollhättan/Kiruna
Kontakt:

Inlägg av mrhedin »

tusse

ja givetvis skall i ökas med ett för varje varv, jag är ju helt full...
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

sodjan skrev:Vi lägger ner det...

Det här är någon pre-assemblerfil. "PAUSE?C 0EA60h" kommer sannolikt att expanderas av något senare steg innan den slutgiltiga assembler koden är färdig.

Skit samma, du verkar inte behöva någon speciell noggranhet i alla fall...

Kan det var detta som saknas?

NOLIST
; PicBasic Pro Compiler 2.43, from www.sonsivri.cjb.net UIN:100245565 sonsivri@hotmail.com

PAUSE?C macro Cin
if (high (Cin) == 0)
MOVE?CA Cin
L?CALL PAUSE
else
MOVE?CB high (Cin), R1 + 1
MOVE?CA low (Cin)
L?CALL PAUSEL
endif
endm
PAUSE_USED = 1


LIST

Det är möjligt att jag kan rucka på tiden lite men en timme ska vara samma tid varje gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Som sagt, jag "backar ur" här...
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

mrhedin>> fungerar hyggligt men tror du det räcker med minuter och ställa tid för exponering?
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg av Chribbe76 »

Om man kan starta en av de 3 inbyggda timer-modulerna i picbasic så kan du göra det ganska snyggt.

Timer1 är 16-bitars så jag utgår ifrån den.

Här kommer lite "princip kod":

Först ska du göra:

Total=0
GammalTid=0
Sekunder=0
Konfigurera TMR1 utan prescaler och nollställ den.

Denna rutin kan du anropa så ofta du vill, lämpligtvis i en loop där du kollar om Sekunder har fått rätt värde:

Tid=TMR1
Skillnad=Tid-GammalTid
GammalTid=Tid
Total=Total+Skillnad
if Total>1000000 then Total=Total-1000000 : Sekunder=Sekunder+1


Tid,Skillnad,GammalTid ska vara 16-bitars unsigned
Total ska vara 24-bitars unsigned eller 32-bitars unsigned

Principen är att man låter den inbyggda timern snurra fritt och slå runt.
Så länge man inte nollställer den så kan man ha koll på tiden.
I exemplet är 1 sekund 1000000 klockcycler.
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Vad är TMR1 som du skrev om "Konfigurera TMR1 utan prescaler och nollställ den". är det någon dialekt i någon annan basic eller?
mrhedin
Inlägg: 114
Blev medlem: 3 maj 2005, 19:46:24
Ort: Trollhättan/Kiruna
Kontakt:

Inlägg av mrhedin »

tusse

Tja, jag vet inte riktigt vad som kan räcka eller vilka val du vill ha. 60 minuter max är ju rätt stadigt i alla fall =)

Jag blev lite nyfiken, hur kopplar du in din uppfinning sen så att den styr själva exponeringen på din kamera, samt vad är det du skall fotografera?


Men när jag funderat lite, i och med att du vill ha långa slutartider, hade det inte vart nice med att härma en bulb funktion då? Så att du själv kan välja dina slutartider hur länge eller kort du vill utan att röra kameran.

Dra en längre sladd från kameran till din pryl så att den inte rubbas det minsta när du grejar. Då skulle du kunna sätta exempelvis en 1:a in på ett ben på PIC:en med en liten switch. Ditt PICBasic program kollar hela tiden värdet på ingånsbenet och skickar i sin tur ut en etta på ett annat ben som du kan antingen styra kameran direkt med, eller koppla till ett relä för att styra nåt större.

eller är jag helt ute och cyklar? Jag antar att du vill ha det ganska enkelt också...
Användarvisningsbild
tusse
Inlägg: 1364
Blev medlem: 19 augusti 2003, 21:56:17
Ort: Järfälla

Inlägg av tusse »

Så här ser texten ut på fotosidan.se:

Fjärrkontroll till Canon
Tänkte försöka bygga en radiostyrning till min Canon 10D och sitter och funderar över om man med radiolänken skulle kunna använda en timer för Bulb-tid, nu skulle jag kunna programmera in 15 stycken fasta tider som jag enkelt kan ändra med en omkopplare.
Nu är frågan vilka tider skulle man välja?


Som du ser så har jag försökt att utveckla det med lite fler tider men annars så är vi nog inne på samma ide.

Inkoppling till själva kameran blir samma som min IR-styrning. http://hem.bredband.net/berte/Canon/ircanon.htm
Senast redigerad av tusse 27 september 2005, 21:26:40, redigerad totalt 1 gång.
Skriv svar