PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frequenz zum blinken bringen - Mega8



hackgreti
12.02.2007, 09:48
Hallo!

Ich steuere meinen Roboter mit einem Infrarotsender. (er fährt genau in die Richtung des Senders...)
Mit Bascom hab ich den Sender so programmiert das die Infrarotdioden eine bestimmte Frequenz bekommen: (das funktioniert)


$regfile = "m8def.dat"
$crystal = 16000000

Config Portb.1 = Output

Do
Portb.1 = 0
Waitus 13
Portb.1 = 1
Waitus 13
Loop


Aber wie kann ich die Dioden mit gleich bleibender Frequenz ein und ausschalten?? :-s

DANKE jetzt schon für jede Hilfe. \:D/

robo_wolf
12.02.2007, 19:00
probier es einfach mit zwei Taster:


$regfile = "m8def.dat"
$crystal = 16000000

Config Portb.1 = Output
Config Pinb.2 = Input 'Eingang für den Taster_An
Config Pinb.3 = Input 'Eingang für den Taster_Aus
Portb.2 = 1 'Pullup ein
Portb.3 = 1 'Pullup ein
Taster_An Alias Pinb.2
Taster_aus Alias Pinb.3


If Taster_An = 0 Then Gosub Diode_An
If Taster_Aus = 0 Then Gosub Diode_Aus

Diode_An:
Do
Portb.1 = 0
Waitus 13
Portb.1 = 1
Waitus 13
Loop


Diode_Aus:
Portb.1 = 0


Das wäre wohl die einfachste Möglichkeit.
Das Tastenprellen ist aber dabei nicht berücksichtigt.
Über einen Timer wäre das Ganze aber besser...

hackgreti
14.02.2007, 18:31
Problem gelöst!

Ich hab´s mit einem Timer gemacht, und es funktioniert. Die Infrarotdioden blinken jetzt alle 50ms ein/aus mit genau 38000 HZ.

Für die die sich die gleiche Frage stellen:


$regfile = "m8def.dat" 'Regfile: Mega8
$crystal = 16000000 '16MHz Quarz

Config Portb.1 = Output

Config Timer1 = Timer , Prescale = 1
Enable Timer1
On Timer1 Isr_von_timer1
Enable Interrupts
Timer1 = 65115

Do
Enable Timer1
Waitms 50
Disable Timer1
Waitms 50
Loop
End

Isr_von_timer1:
Timer1 = 65115
Toggle Portb.1
Return


https://www.roboternetz.de/wissen/index.php/Bascom_und_Timer

danke für die Hilfe