Forum: Mikrocontroller und Digitale Elektronik freq. Ausgabe Bascom


von AVR Neuling (Gast)


Lesenswert?

Hallo zusammen,
ich möchte gerne mit Bascom zwei frequenzen gleichzeitig ausgeben.
Ob an einem oder an zwei Pins ist egal. Die Freq liegen im Bereich von
600 - 1400 Hz.
DTMF Out geht nicht da ich die Freq. selbst festlegen muss.

eine freq. mit sound befehl ist ja kein Prob aber zweio?

hat jemand einen Lösungsansatz?

Vielen vielen Dank

Jürgen

von Gerhard (Gast)


Lesenswert?

Hi ,

Welcher AVR ?
sind nur die Frequenzen zu ändern,
od. das Puls-Pausen Verhältnis auch (PWM).
Ansonsten einfach 2 Timer verwenden.


Gruss Gerhard

von AVR Neuling (Gast)


Lesenswert?

Hallo,
also das wär ein 90S8515.
Es geht nur darum zwei frequnezen zu erzeugen (also die DTMF Funktion
nur mit anderen Freq.) Das. P-P Verh. ist egal.

Wie kann man das mit Timern machen? Hab das bis jetzt nur mit dem
Soundbefehl getan. Evtl. ein kleines Beispiel?

Oder kannh man die DTMF funktion ändern?

Danke schonmal.
Jürgen

von Gerhard (Gast)


Lesenswert?

Hi,
habs mal schnell an m8 probiert
Die Werte musst du dir noch anpassen

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

Dim Wert1 As Byte
Dim Wert2 As Byte
Wert1 = 20
Wert2 = 100

Config Portb = Output
Portb = 255

Config Timer0 = Timer , Prescale = 64
Config Timer2 = Timer , Prescale = 64

On Timer0 Timer1_isr
On Timer2 Timer2_isr

Enable Timer0
Enable Timer2
Enable Interrupts

Do
Loop
End

Timer0_isr:
    Portb.0 = Not Pinb.0
    Timer0 = 255 - Wert1
Return
Timer2_isr:
    Portb.1 = Not Pinb.1
    Timer0 = 255 - Wert2
Return


Gruss Gerhard

von AVR Neuling (Gast)


Lesenswert?

Vielen Dank schonmal.
Kanns leider erst heut abend ausprobieren...

Noch eine "letzte" Frage eines Neulings:
- Wie kann ich die Werte für Wert1&2 um auf m,eine gew. Freq. zu kommen
berechnenn ??

Vielen Dannk
Gruß
Jürgen

von Gerhard (Gast)


Lesenswert?

Hi ,

AVR Takt (Quarz) ist bei mir 8000000 (8Mhz)
diese dividierst du durch den Wert bei Prescale
Bei mir 64  (Kann man auf 1, 8, 64, 256,1024 setzen)
Das heisst es dauert 64 Takte dass der Timer Wert um eins erhöht wird
Sind wir schon mal bei 125 khz.
Schau mal in die Bascomhilfe !

Mit "Timer0 = 255 - Wert1" gibst du dem Timer einen Startwert,
bei dem er zu zählen beginnt.
je grösser Wert1 ist (dieser wird ja von 255 abgezogen) um so länger
dauert es bis die der Timer überläuft.
Dieser läuft bei 255 über d.h. die Timer ISR wird ausgeführt.
und der Pin umgeschaltet.
Bei Wert 100 wird der Pin dann also 1/8000000 x 64 x 100 = 0.0008 s
umgeschaltet.

Bin mir jetzt nicht sicher ob der 8515 einen Timer2 besitzt.
Wenn nicht dann Timer1 verwenden, dieser ist aber 16Bit breit,
der zählt also bis 65536 !!!

Gruss Gerhard

von AVR Neuling (Gast)


Lesenswert?

 P E R F E K T 
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.