Timer i PIC
Timer i PIC
Tänkte bygga en timer för en kamera, där ska finnas lite mer funktioner som jag tänkte överlåta till PIC16f628. Programmerar i PIC-Basic och där finns vad jag kan se ingen timerfunktion, PULSOUT skulle nog fungera men om tiden blev 60 min tvivlar jag att det är någon lösning.
Det är ingen tidtagning i tiondels sekunder utan fasta tider från någon minut upp till en timme.
Att ställa tiden ska ske med ett par knappar som man stegar fram tiden med.
Tusse
Det är ingen tidtagning i tiondels sekunder utan fasta tider från någon minut upp till en timme.
Att ställa tiden ska ske med ett par knappar som man stegar fram tiden med.
Tusse
Normalt sätter man upp en timer för att ge en "tidbas", säg 1 sek eller 1 minut om den upplösningen räcker.
I interrupt rutinen för timern räknar man sedan upp sek/min/tim räknare, antingen i "riktiga" klockslag, eller bara som en rellativ tid (rellativt när PIC'en startades eller någon annan händelse...)
Om du ska "ställa tiden" (alltså ett intervall, inte ett klockslag ?), så måste du väll ha någon slags LCD eller liknande att visa den på. Naturligsvis inget problem, men du sa inget om det.
Sedan beror ju lösningen även en del på vad "lite mer funktioner" är för något och vilka krav de ställer.
En display med knappar : http://www.tradera.com/auction/aid_17596887
(Ok, ok, det är jag som säljer den...
)
När det gäller PIC-Basic är jag helt "lost", assembler är roligare...
I interrupt rutinen för timern räknar man sedan upp sek/min/tim räknare, antingen i "riktiga" klockslag, eller bara som en rellativ tid (rellativt när PIC'en startades eller någon annan händelse...)
Om du ska "ställa tiden" (alltså ett intervall, inte ett klockslag ?), så måste du väll ha någon slags LCD eller liknande att visa den på. Naturligsvis inget problem, men du sa inget om det.
Sedan beror ju lösningen även en del på vad "lite mer funktioner" är för något och vilka krav de ställer.
En display med knappar : http://www.tradera.com/auction/aid_17596887
(Ok, ok, det är jag som säljer den...

När det gäller PIC-Basic är jag helt "lost", assembler är roligare...

Tja, svårt att ha några idéer med en så "tunn" beskrivning.
Det finns ju i princip ingenting att gå på.
Jag är tveksam om du kommer att få någon precision med pause eller sleep, du måste nog ha en timer som snurrar i bakgrunden hela tiden som en tidbas.
Pause ger väll en viss "delay", men sedan har du ju även kod som körs mellan Pause anropen att ta hänsyn till. A mess...
Det finns ju i princip ingenting att gå på.
Jag är tveksam om du kommer att få någon precision med pause eller sleep, du måste nog ha en timer som snurrar i bakgrunden hela tiden som en tidbas.
Pause ger väll en viss "delay", men sedan har du ju även kod som körs mellan Pause anropen att ta hänsyn till. A mess...
En annan sak...
Hur "vet" PIC-Basic vilken hastighet PICen går med ?
Det måste finnas någon inställning någonstans. Är den korrekt ?
"Pause 60000" ger naturligtsvis bara rätt tid om PIC-Basic har rätt uppfattning om vilken hastighet målsystemet går med. Ändrar man hastighet på PIC'en (utan att kompilera om applikationern), så blir det fel, så klart...
Hur "vet" PIC-Basic vilken hastighet PICen går med ?
Det måste finnas någon inställning någonstans. Är den korrekt ?
"Pause 60000" ger naturligtsvis bara rätt tid om PIC-Basic har rätt uppfattning om vilken hastighet målsystemet går med. Ändrar man hastighet på PIC'en (utan att kompilera om applikationern), så blir det fel, så klart...
Mrhedin>> som bäst 58 sekunder när inget annat är i gång.
Sodjan>> Man talar om vilken frekvens som gäller med DEFINE OSC 4 = 4 Mhz
Detta såg intressant ut men med min dåliga engelska och ännu sämre kunskaper i assemblerkod så vet jag inte om jag blir klokare. http://www.ezy.net.au/~fastvid/one_sec.htm
Sodjan>> Man talar om vilken frekvens som gäller med DEFINE OSC 4 = 4 Mhz
Detta såg intressant ut men med min dåliga engelska och ännu sämre kunskaper i assemblerkod så vet jag inte om jag blir klokare. http://www.ezy.net.au/~fastvid/one_sec.htm
Att aktivera timern i assembler är ju inte direkt svårt och du får då en väldigt exakt upplösning på den, basic känns väldigt otillförlitligt i detta fall.
kod kan du hitta här:
http://www.elektronikforumet.com/forum/ ... php?t=6736
kod kan du hitta här:
http://www.elektronikforumet.com/forum/ ... php?t=6736
> Detta såg intressant ut men med min dåliga engelska och ännu
> sämre kunskaper i assemblerkod så vet jag inte om jag blir klokare.
> http://www.ezy.net.au/~fastvid/one_sec.htm
Obs att detta är en sida som använder den gamla 16F84, där man har betydligt sämre hårdvarutimers än i de senare modellerna. Därmed blir också lösningen onödigt komplicerad. Kolla gärna sidor som bygger på F84'an, men ta inte för hårt på de faktiska lösningarna.
> assembler är för mig ett annat språk...
Där har du ett annat "problem" att åtgärda...
Spelar ingen roll vad du använder för språk "till vardags", utan en hygglig assemblerkunskap (vilket inte är mycket begärt igentligen !), så kommer du nog att råka på många andra "show stoppers".
Att förstå assembler är till stor det detsamma som att förstå hur processorn fungerar, de ligger så nära varandra.
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 !
> sämre kunskaper i assemblerkod så vet jag inte om jag blir klokare.
> http://www.ezy.net.au/~fastvid/one_sec.htm
Obs att detta är en sida som använder den gamla 16F84, där man har betydligt sämre hårdvarutimers än i de senare modellerna. Därmed blir också lösningen onödigt komplicerad. Kolla gärna sidor som bygger på F84'an, men ta inte för hårt på de faktiska lösningarna.
> assembler är för mig ett annat språk...
Där har du ett annat "problem" att åtgärda...

Spelar ingen roll vad du använder för språk "till vardags", utan en hygglig assemblerkunskap (vilket inte är mycket begärt igentligen !), så kommer du nog att råka på många andra "show stoppers".
Att förstå assembler är till stor det detsamma som att förstå hur processorn fungerar, de ligger så nära varandra.
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 !