PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frequenzen auswerten mit dem RP6



hmellermann
22.08.2008, 08:59
Hallo zusammen,
hat jemand von Euch schon einmal Frequenzen mit dem RP6 ausgewertet? Ist er dazu in der Lage??? 8-[ Hatte schon mal vor längerer Zeit gepostet, will einen RGB-Sensor anschliessen:

Zitat:

So wie es aussieht brauchst du nur 3 I/O Pins (oder 4, wenn du die LEDs auch schalten willst) Zwei Output Pins hängst du an S2 und S3, für die Farbfilterwahl, dann optional einen an den LED eingang, und einen Input Pin hängst du an Out des Moduls. Dann noch Vdd und GND anschließen, sowie S0 und S1 an Vdd und OE and GND und schon ist das Modul installiert, wo du es an deinem Roboter plazierst sei dir überlassen. Jetzt brauchst du nurnoch ein programm dafür...

1. Select red filters (S2=0, S3=0)
2. Count pulses on OUT for a short time (red value)
3. Select blue filters (S2=0, S3=1)
4. Count pulses on OUT for a short time (blue value)
5. Select green filters (S2=1, S3=1)
6. Count pulses on OUT for a short time (green value)

Leider ist das kein Digitaler Sensor, ich bekommen nir Frequenzen und die muss ich auswerten. Vielleicht hat einer von Euch auch ein bissl Beispiel-Code!!

Vitis
22.08.2008, 10:28
gib mal nen link zum datenblatt des sensors,
dann kann man sich ansehen was der sensor ausgibt
und ne empfehlung geben

blenderkid
22.08.2008, 13:40
Ja, habe ich ein Programm dafür




uint8_t RC()
{

while(!(PINA&ADC3));
timer = 0;
while(PINA&ADC3);
return (timer);
}



Erst wird solange bis an ADC3 nicht mehr LOW angeschlossen ist gewartet und dann der timer auf 0 gesetzt (also sobald HIGH angeschlossen ist ), dann wird solange gemessen und timer automatisch erhöht bis ADC3 wieder LOW ist und dann wird timer ausgegeben.

timer erhöht sich automatisch, alle 100µs um 1 erhöht.

So hast du am Ende die Länge der Frequenz, wenn der timer am Ende 19 ist war die Ferquenz 1900µs lang.


MfG, blenderkid
[/code]

hmellermann
25.08.2008, 09:16
Hier das Datenblatt!!!

Vitis
25.08.2008, 10:31
ok, beispielcode hab ich nicht, aber nun in etwa nen
schimmer wie das ding läuft. da ich meist auf atmelavr progge
kann ich dir schreiben wie ich das anginge.
laut dem datenblatt gibt das ding eine rechteckspannung
in der frequenz moduliert je nach auswahl von s1 und s2
von kanal r g und b aus.
beim atmel würde ich dafür 2 hardware timer verwenden.
einen als zeitbasis, den zweiten als zähler.
dazu dann nochmal 2 io um s1 und s2 zu bedienen.

für die zählung währe u.U. n 16 bit timer ganz praktisch
timer 1 oder timer 3 für die zeitbasis dann timer 0, den
könnt man dann u.U. per uhrenquarz mit zeitbasis versorgen.

dann währs ne ganz einfache geschichte.
bei tieroverflow interrupt timer0 auswahl kanal r/g/b
reset timer1 (counter) und raus aus dem interrupt
nächster interrupt, counter auslesen in variable speichern
für kanal r/g/b counter nächsten kanal wählen und counter resetten
das ganze dann immer im kreis rum und gut ist.
würde durch verwendung der avr-hardware sogar kaum prozessorlast
verursachen der aufbau.