PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR-Timer fuer PWM und CNY70 nutzen



neurix
16.01.2006, 23:12
Hallo,

ich bastle gerade an einem Board fuer meinen Roboter.
Das Board soll u.a. zwei Servo steuern und den Zustand von CNY70 feststellen.

Hier zu haben ich drei Fragen:
1. Das Bestimmen des Zustandes des CNY70 soll unabh. vom Programm erfolgen. Ich hatte gedacht, wenn der Sensor ein high zurueckgibt, dass dann ein Interrupt ausgeloest wird.
Ist dies ratsam? Gibt es andere Moeglichkeit, dass man keine Aenderung verpasst?

2. Zur Steuerung meiner mod. Servos, kann ich das PWM Signal dirket von Timer0 und Timer1 abnehmen? In dem Bascom Beispiel der Hilfe wird der Pin B.0 (bei einem AtMega16) benutzt. Loest dabei der Timer0 aus und setzt den Pin B.0 high? Ist es nicht besser, die Taktflanke direkt vom Timer0 zu nehmen?

3. Kann ich den CNY70 (genauer gesagt, den Photo-Transistor) direkt zwischen Masse und dem Eingangspin des AVR legen?
Oder da noch weitere Beschaltung noetig?
In der letzten Ct schien mir der Sensor dirket angeschlossen, aber auf einigen Internetseiten, wird das Signal nochmal verstaerkt.

Vielen Dank fuer Eure Antworten.

Ciao,
Hannes

Ratber
16.01.2006, 23:20
Zu 1.

Es gibt nur 2 Möglichkeiten die Änderung mitzubekommen.

Einmal per Int. oder man fragt regelmäßig ab.
In ersterem Fall gibts ne erzwungene Benachrichtigung.
Zweiter Fall hat ne Verzögerung in abhängigkeit vom Abfragezyklus.
Was de nimmst muste selber wissen.


Zu 2.


Es gibt auch hier mehrere Möglichkeiten.

Soft oder Hard-PWM.
Hängt mehr davopn ab was du noch frei hast.


Zu 3.


Nein ,so ohne alles würde ich es nicht machen denn das ist ziemlich wackelig.

Die Transe sollte mit einem Widerstand einen Spannungsteiler bilden dann haste auch klare Pegel und kannst es auch einstellen.

Die Diode bekommt natürlich nen Vorwiderstand gemäß ihrer Spezifikation.

neurix
16.01.2006, 23:32
Einmal per Int. oder man fragt regelmäßig ab.
In ersterem Fall gibts ne erzwungene Benachrichtigung.


Wie wuerde das genau aussehen? Wie kann ich dabei einen Timer nutzen?



Soft oder Hard-PWM.
Hängt mehr davopn ab was du noch frei hast.

Habe noch alles frei. Ich bin gerade dabei das Board zu planen.
Was meinst Du genau mit Hard oder Soft PWM? PWM ist schon klar...
Ist die Ausgabe ueber einen Timer ist Hard-PWM-Methode?

Ratber
17.01.2006, 00:03
st die Ausgabe ueber einen Timer ist Hard-PWM-Methode?


Ja ,denn der Timer steuert die Ausgabe.

Die andere Möglichkeit ist das per Software zu machen aber das kostet Rechenzeit.



Wie wuerde das genau aussehen? Wie kann ich dabei einen Timer nutzen?

Das ist mit einigen Sätzen nicht erklärt.

Als Int. nimmste einen Externen also einen Pin der einen Interupt auslösen kann. (zb. Int0)

Ändert sich der Pegel dort in der Form die du vorgegeben hats dann springt das Programm in die passende Unterroutine.

neurix
17.01.2006, 11:47
Kann ich dann bei einem AtMega16
OC1A fuer Servo1
OC1B fuer Servo2
und
INT1zum Ausloesen der Abfrage des Sensor1
INT2 zum Ausloesen der Abfrage des Sensor1
verwenden?

Macht es Sinn?

Vielen Dank fuer eine Antwort.

Ratber
17.01.2006, 17:51
Ja ,kannste so machen.

Du weißt wie ein Servo angesteuert wird.(Alle 20ms ein Impuls von 1-2ms)
Der Rest ist nur ne Fleissaufgabe