Hallo Zusammen,
ich habe hier einen Inkrementalgeber des Typs HEDS 9100. Dieser hat eine
Scheibe eingebaut mit 500 streifen. Jetzt dachte ich mir könnte ich die
Drehzahl des Motors anhand dieses Inkrementalgebers anzeigen lassen.
Um zu testen ob der microcontroller die vielen tausend Impulse des
Inkrementalgebers verarbeitet hate ich diesen kurzerhand an den
Microcontroller angeschlossen. VCC liegt auf +5V, Ground auf Ground und
die beiden Kanäle an 2 Ports welche als Eingänge definiert wurden. Jetzt
sollte mein Programm zählen (bis 5000 ca) und eine LED zum leuchten
bringen wenn diese Zahl erreicht wird. Mein Programm sieht so aus:
1 | #include <avr/io.h>
|
2 |
|
3 |
|
4 |
|
5 | int main(void){
|
6 |
|
7 | uint8_t counter = 0; //Zaehlvariable
|
8 |
|
9 | DDRD = 0x00; //Alle PINs als Eingang definieren
|
10 | DDRA = 0xff; //Alle Pins als Ausgang definieren
|
11 |
|
12 | while(1) //Endlosschleife
|
13 | {
|
14 | if( PIND & (1<<PD2)) //Falls ein Signal an PortD 1
|
15 | {
|
16 | counter++; //counter um 1 inkrementieren
|
17 | }
|
18 | if(counter >= 5000)
|
19 | {
|
20 | PORTA |= 1<<PA2;
|
21 | }
|
22 | }
|
Ich probiere schon mit beiden Kanälen herum , komme aber leider zu
keiner funtkionstüchtigen Lösung. Vielleicht sieht ja einer von euch was
für Fehler hier vorhanden sind.
Gruß