Digital klocka/termometer...
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 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
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 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
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
[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
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
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
-
- Inlägg: 2360
- Blev medlem: 16 september 2003, 17:18:13
- Ort: Dubai, United Arab Emirates
- Kontakt:
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."
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."
- Illuwatar
- Inlägg: 2256
- Blev medlem: 10 november 2003, 14:44:27
- Skype: illuwatar70
- Ort: Haninge
- Kontakt:
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.
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.
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
//Rille
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
//Rille
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,
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,