Scheef_schaap
't schaap is de preut af, meestal vooralleer het spel hespe is! (of in het AN: Meestal zal het eerst mislukken voor alleer het lukt..)
Hier een aantal vraagjes:
1. Hoe bekom je in bascom de systeemtijd (de klok linksonder), zodat ik bij het programmeren van m'n microcontroller telkens de juiste tijd meegeef?
2. Kan ik ipv portb.1 = 1 zeggen lamp = 1, hoe configureer ik dit?
3. Voor een klok te maken, heb ik daar een kristal voor nodig, of is de inwendige RC oscillator acuraat genoeg?
Bedankt!
1. Version()
2.
Lamp alias Portb.1
3. Zelfs een extern kristal op een AVR wijkt na een dag al enkele seconden af. De RC oscillator gebruiken is dus geen goed idee, tenzij je overal te laat wil komen...
Als je klok goed moet kloppen, kun je beter beroep doen op een externe RTC, zoals een DS1307.
[Bericht gewijzigd door Stijn S op (12%)]
Hallo schaap
Je kunt prima een klok maken met een aangesloten kristal. Je kunt gewoon een timer gebruiken en die preloaden. Ik heb er een klok meelopen en die blijft goed lopen.
$crystal = 4000000
Timpre = 61630
Config Timer1 = Timer , Prescale = 1024
Enable Timer1
Enable Interrupts
On Timer1 Tim1_isr
Timer1 = Timpre
Start Timer1
Do 'jou programma
Loop
Tim1_isr:
'Seconde timer
Timer1 = Timpre
Seconde = Seconde + 1 'clock
Return
Klein stukje code.
Klein beetje uitleg:
Je kristal 4Mc deel je door 1024 = 3906 Hz
Je 16 bits register telt tot 65536. In 1 sec moet je dus een interrupt krijgen. Je laad je register met 65536-3906 = 61630.
Nu krijg je na elke sec een interrupt.
Ik heb in mijn hoofd lus de rest van de klok staan. Ik vergelijk mijn seconde met de oude waarde:
If Seconde <> Oldsec Then
.......
.......
Oldsec = Seconde
end if
Hopelijk heb je hier iets aan.
Mvg Ernst