Hallo,
ich soll mich für meine Firma, nebenbei, ein wenig in Richtung
Mikrocontrollerprogrammierung weiterbilden, da man denkt das könnte man
mal brauchen. Konkret hab ich dafür einen Arbeitstag/Woche
freigeschaufelt bekommen. Habe etwas eingerostete, aber durchaus ganz
gute C Kenntnisse.
Habe mich für einen Arm7 entschieden, also AT91SAM7x-EK, Rowley
Crossstudio + Jtag Interface organisiert. Wollte erstmal mit FreeRTOS
rumexperimentieren, den Code verstehen etc.
Jetzt, nach langem lesen in der Doku von Atmel wollte ich darauf
aufbauen und sachen zum FreeRTOS ergänzen.
Von einem Sensor bekomme ich ein Signal, vondem die Zeit der einzelnen
Peaks messen möchte.
Signal liegt am PIO Controller an.
Mit den Registern komme ich soweit klar.
Nur eine ganz blöde Frage habe ich, wie erkenne ich möglichst effektiv
eine fallende Flanke an einem IO Pin?
Stells mir grad so vor:
1 | for (;;){
|
2 |
|
3 | if (steigende Flanke kommt) {
|
4 | starte Timer TC0;
|
5 | }
|
6 | if (fallende Flanke kommt) {
|
7 | Timerwert TC0 = array[x];
|
8 | Timerreset TC0;
|
9 | x++;
|
10 | }
|
Also mal ganz banal aufgeschrieben. Wie ich den Timer
starte/stope/resete etc. ist mir alles klar. Nur wie lass ich den Timer
am klügsten auf die Flanken reagieren?
__________ ______
/ \ / \
/|<- t1 ->| \ / |< t2>| \
/ \______/ \___ usw.
Zeit t1 und t2 möchte ich messen, diese Zeite variieren.
( Aus irgendeinem Grund wird die "high level linie" durchgezeichnet,
bitte unterbrochen vorstellen)
Wäre echt sehr dankbar für gute Ratschläge.
Da ich ja die Zeit habe mich sehr intensiv damit zu beschäftigen
überlege ich auch irgendwann mal meine Erfahrungen zu einem kleinen
Beginners Tutorial zusammenzufassen. Von einem dann hoffentlich
ehemaligem Einsteiger für den Einsteiger... aber da ist es noch lang
lang hin ;)