Digital klocka/termometer...

Planering och tankar kring eventuella framtida projekt.
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Hur snabb är picbasicen egentligen? Hinner den med att interrupta i 1000 Hz?
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

matseng>> Tanka ner PICBasicPro här -->> http://www.sonsivri.com/
Jag tycker iaf att det är värt att... det är nämligen inget som begränsar en till att bara använda det så...

Hmm... du säger att om man gör det i assembler är det inga probz men säg att man låter det göras i assembler då? Interuptet kommer sen är det ju bara att skriva själva interuptet i assembler eller åtminstone den första delen som ska återställa att... sen är det bara att låta PICBasic delen sköta resten... dvs har det gått en sekund? är sekund variablen över 60 etc etc...

mrmike>> Okej :doubt: Antar att jag skulle förstå ngt där men jag konstaterar bara att jag kan använda timern för att dela ett hej dundrans värde och få ett interupt då det är "lagom" och medhjälp av detta avgöra vilken kristall jag ska använda så att det blir bra... hmmmmm... du har inte lust att utveckla räkningen du gjorde? Samt då hur du har kommit fram till att... :)

EDIT: Ni är snabba på att svara... hmm... om den hinner intreupta på 1000Hz? Hmm... PICBasic är ju assembler... dvs du får ut en fil i ASM... i princip ASM iaf... som du sedan assemblerar till en .hex fil som du sedan bränner in... så jag ser inte ngn anledning till varför det inte skulle kunna gå... hmm... sätter mig och kollar igenom "manualen"... om du inte har den så har jag lagt ut den här -->> http://devinc.sytes.net/~rikard/pdf/pbpm502a.pdf

//Rille
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

Hmm... sitter och kollar i PICBasic manualen och dem verkar skilja på PICBasic interrupts och ASM interrupts så det är nog inte omöjligt att lyckas med 1000Hz interrupts...

[EDIT] There are 2 ways to handle interrupts using the PicBasic Pro Compiler.
The first is to write an assembly language interrupt routine. This is the
way to handle interrupts with the shortest latency and lowest overhead,
but must contain only assembly language, not BASIC, code.

//Rille
Användarvisningsbild
mrmike
Inlägg: 301
Blev medlem: 29 oktober 2003, 20:40:12

Inlägg av mrmike »

matseng>> ingen aning om det funkar med picbasic :) Men det är väl inte så mkt kod för att räkna upp klockan, och räkna ut dag, månad å år behöver man ju inte göra 1000 ggr/sekund

rickeboy>>Eftersom du ber så snällt kan jag ju försöka.
Om Timer0 används i "Timer mode" så räknar den varje instruktionscykel upp registret TMR0 från 0 till 255. När TMR0 slår över från 255 till 0 så sätts T0IF och ett interrupt kan fås.
Prescalern är en delare som man kan dela frekvensen till TMR0 med, ex om man sätter prescalern till 1:8 tar det 8 ggr så lång tid innan TMR0 räknas upp än om man inte skulle använda prescaler. prescalern kan sättas till minst 1:2 och max 1:256.

så då blir det väl nåt sånt här: interruptfrekvens = kristallfrekvens / 4 / 256 / prescaler

säg till om det är nåt som är oklart
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Jag tänkte mest på att pickbasicen ville utföra klart den "basic-instruktion" som den höll på med när interruptet kom in innan den anropar interruptrutinen. Och då gäller det att inga instruktioner tar mer än 1 mS att utföra.

Genererar picbasic assemblerkod som exekveras eller kör den med nån typ av P(seudo)-kod? Om den genererar assembler så kan ni glömma det som står i stycket ovan, men är det P-kod så är risken att den väntar till instruktionen är "färdigkörd."
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

mrmike>> Mkt pedagogiskt! Jag förstod faktiskt det mesta... eller är det bara jag som tror för att klocka när mkt... :humf: :roll: I vilket fall som helst så blev det klarare... tack... återkommer om jag skulle behöva mer förklaring angående just det...

//Rille
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

matseng>> Den hoppar direkt om det är i assembler...
Läs 9.3 sid 192 i manualen så får du det förklarat... eller hela 9 (s 189) så får du bra grepp om vad det är jag håller på att ge mig in på... börjar få ont i huvet nu... (sova time alltså...)


//Rille
Användarvisningsbild
tops
Inlägg: 93
Blev medlem: 13 januari 2004, 08:46:51
Ort: Sollentuna

Inlägg av tops »

Jag använde en DS1302 tilsammans med en basic stamp, detta var inte särskilt svårt att få till. Hur det är med pic vet jag ej, kanske like mekkigare om man kör det i assemblykod. Tyckte att 1302 var smidig att jobba med ialla fall, lätt att "programera" in datum å tid och sen körde den på själv....
Användarvisningsbild
Illuwatar
Inlägg: 2256
Blev medlem: 10 november 2003, 14:44:27
Skype: illuwatar70
Ort: Haninge
Kontakt:

Inlägg av Illuwatar »

Har också kört en DS1302 från en AVR (AT90S2313) och då i ren assembler (Nixieklockan för PC - http://www.geekjoan.com/forum/viewtopic.php?t=764). Det är inte så surt som det verkar. Tiden och datumet kommer dessutom BCD-kodat direkt ur chippet - perfekt för min drivning av nixierören.

Ett CR2032-batteri skall hålla tiden hos RTC'n cirka ett år vid frånslagen matningsspänning. Allt som behövs för att hantera detta finns inbyggt i DS1302 - kretsen är lätt att koppla in.
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

tops>> Du skulle möjligtvis inte vilja skicka koden du använde till mig? Eller åtminstone berätta hur du gjorde? Vilket/Vilka kommandon etc... jag kör ju ASM och PICBasic vilket är mkt likt BasicStamp koden...

Illuwatar>> Möjligt att det inte är så svårt men jag tror ändå inte det är värt att skriva att i ren assembly :wink:

//Rille
sälungen
Inlägg: 2
Blev medlem: 31 januari 2004, 21:45:07

Inlägg av sälungen »

Tjena grabbar... har bara lusläst lite på denna tråd (så ni får ursäkta om jag kommer med en massa skit) ... men generellt brukar man välja en kristall med frekvensen 3.2768 MHz för applikationer där man vill ha en realtidsklocka. Man brukar låta en timer (för microcontrollers från Microchip) t.ex TIMER0 generera ett periodiskt avbrott exakt var 10:e millisekund.
Det är just därför frekvensen 3.2768 MHz är lämplig. Om man ställer (för microcontrollers från Microchip) prescalern på en delning med 32 får man att timern räknar till 256 efter exakt 10 millisekunder (32*256*Tosc, där Tosc är Fosc/4, och Fosc är 3.2768 MHz). Ett avbrott genereras alltså efter EXAKT var 10:e millisekund, lämpligt är då att i avbrottsrutinen öka en variabel och när denna variabel har nått 100 har exakt 1 sek förlutits.

hupp,
Skriv svar