Hi,
in meinem Aufbau sende ich mit dem AT90CAN128 ein CAN-Signal an einen
PC. Das klappt auch wunderbar.
Am PC soll dann eine Protokollierung gestartet und gestoppt werden.
Die Daten möchte ich, nach dem Start, eine Zeit lang aufnehmen.
Also muss der Controller wissen wie lange die definierte Zeit vergangen
ist, bis er die Mesung stoppt.
Der AT90CAN128 ist auf der Entwicklungsplatine von Olimex verbaut und
die Platine besitzt einen 16 MHz Quarz.
Könnte ich den existierenden Quarz für eine relativ genaue Zeitsteuerung
nutzen?
Eine Ungenauigkeit von einer Sekunde wäre für den Aufbau kein Problem!
Die Rechnung geht doch soweit auf:
OCR1A = 16000000 / 256 - 1 = 62499, Rest 0
Wie fange ich den damit an, ich habe keine Ahnung!?
Früher habe ich die Funktion "sleep(5)" genutzt, um z.B. eine
Verzögerung von 5s zu erzeugen.
1 | #include <iostream>
|
2 | ...
|
3 | int main(){
|
4 | sleep(5); //für 5 Sekunden
|
5 | }
|
Denke ich da falsch, Funktionen und Eigenschaften von C/C++ auf den MCU
zu übertragen?
Kann mir jemand einen Ansazt geben, wie ich zu dem erwünschten Zeil
komme?
Edit:
Beim senden eines Signales wird doch CPU Rechenzeit in Anspruch
genommen.
Muss ich das in der späteren Timer Funktion berücksichtigen oder sind
das vernachlässigbare Zeiten, liegt das im Nano- oder Mikrobereich?