PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Impulse oder Flanken zählen //Wie geht das???



STS-Robotics
30.04.2007, 14:05
Hallo zusammen...

Sitze gerade vor einem kleinen Problem... Ich würde gerne die Impule eines GP1A030 auswerten bzw. zählen und auf meinem Display ausgeben. Bin leider neu auf dem Gebiet und kenn mich mit C noch nicht so gut an. Arbeite mit dem C Compiler und bräuchte am besten einen groben Quellcode um weiter zu kommen.

Dank im Vorraus

...STS-Team

Hubert.G
30.04.2007, 14:37
Nachdem du allgemein gefragt hast kann ich auch nur allgemein antworten.
Die Impulsleitung auf z.B. INT0 legen, ISR bei steigender Flanke einstellen, in der ISR ein Register hochzählen und dieses entsprechend auswerten.
Hubert

STS-Robotics
30.04.2007, 14:58
Okay... Habe ein ATMega128Funkboard von robotikhardware.de. Wie genau geht das mit den INT Ports??? Kann es sein dass dort nur noch INT6/7 auf dem JOY Port frei sind???

MfG

...STS-Team

Hubert.G
30.04.2007, 18:16
Es sieht so aus als wären nur mehr diese beiden INT frei, es sei denn du brauchst eine der anderen Funktionen nicht.
Du musst die entsprechenden Bits im EICRB und EIMSK laut Datenblatt External Interrupts setzen und unter ISR(INT7_vect) die entsprechenden Programmzeilen einfügen.
Hubert

brundle
02.05.2007, 09:10
Hallo, gugst Du hier:

https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=264


Das Programm arbeitet als sogenannter Event Counter oder auch Impulszähler und zählt alle fallenden Flanken. (geht auch mit steigenden Flanken, siehe Prescaler im Datenblatt des AVR)
Über einen anderen PIN hier PORTD, PD3 lässt sich die Zählrichtung (UP-/DOWN- COUNTER) bestimmen.

Hardwareempfehlung:
Ein ATMEGA BOARD natürlich. Diese Sourcen sind für ein ATMEGA128 geschrieben.
RN-KEYLCD von Vorteil, alternativ rs232 verbindung mit rs232 Terminal Programm.
I2C-Verbindung vom AVR-Hauptboard zum RN-KEYLCD-BOARD

Das Programm arbeitet in der Haptschleife so:
Der Cursor wird auf dem LCD immer auf Position 1,1 gesetzt und nach einer kurzen Wartezeit wird der Zählerwert angezeigt.
Da der Zählerwert über den Interrupt-Timer hochgezählt wird, verrechnet sich der Zähler auch nicht durch die Wartezeit in der Haupschleife :-))
Der Zähler wird immer so vorgesetzt, dass er immer nur einen Impuls braucht, damit er in die Interrupt-Routine geht.


mfg

brundle
02.05.2007, 09:11
Hallo, gugst Du hier:

https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=264


Das Programm arbeitet als sogenannter Event Counter oder auch Impulszähler und zählt alle fallenden Flanken. (geht auch mit steigenden Flanken, siehe Prescaler im Datenblatt des AVR)
Über einen anderen PIN hier PORTD, PD3 lässt sich die Zählrichtung (UP-/DOWN- COUNTER) bestimmen.

Hardwareempfehlung:
Ein ATMEGA BOARD natürlich. Diese Sourcen sind für ein ATMEGA128 geschrieben.
RN-KEYLCD von Vorteil, alternativ rs232 verbindung mit rs232 Terminal Programm.
I2C-Verbindung vom AVR-Hauptboard zum RN-KEYLCD-BOARD

Das Programm arbeitet in der Haptschleife so:
Der Cursor wird auf dem LCD immer auf Position 1,1 gesetzt und nach einer kurzen Wartezeit wird der Zählerwert angezeigt.
Da der Zählerwert über den Interrupt-Timer hochgezählt wird, verrechnet sich der Zähler auch nicht durch die Wartezeit in der Haupschleife :-))
Der Zähler wird immer so vorgesetzt, dass er immer nur einen Impuls braucht, damit er in die Interrupt-Routine geht.


mfg