Forum: Compiler & IDEs Martinshorn über Port B5 Mega 128


von Matthias w (Gast)


Lesenswert?

Hallo

kann mir einer veraten wie man ein Martinshorn nachahmt über PWM 
Timer????


Danke

von STK500-Besitzer (Gast)


Lesenswert?

Man nehme einen Timer und lase ihn mit einer bestimmten Frequenz einen 
Ausgang togglen (machen einige Timer ohne grossen Softwareaufwand).
Dann zählt man die Timerdurchläufe und schaltet nach einer bestimmten 
Anzahl von Durchläufen die Frequenz um, indem man den Reolad-bzw. 
OC-Wert neu setzt.
Wenn man das hübscher haben will, nimmt man noch einen weiteren Timer, 
der in bestimmten Intervallen die Frequenz umschaltet.

von Andreas H. (asmhesse)


Lesenswert?

Hi,

vielleicht hilft Dir das hier:

http://www.nordwest.net/mikromodell/tinyfree.html

[EDIT]
Habe leider auf die Schnelle nicht richtig geschaut.
Auf der Seite gibt es nur die HEX-Files.

Gruss
Andreas

von Matthias w (Gast)


Lesenswert?

JA diesen Link habe ich auch gefunden.


Nur leider ohne Code

Danke

von Andreas H. (asmhesse)


Lesenswert?

Hi,

ich hab mal gerade das alte Buch über den NE555 herausgekramt. Da gabs 
so ein Elektronisches "Zweiklang Horn".
Das schaltet einfach im 2 Hz Rhythmus zwischen 2 Frequenzen um.

Also muss man im AVR lediglich zwei PWM-Werte für die Frequenzen nehmen 
und dann in einer bestimmten Zeit diese Werte umschalten (wie oben 
bereits von  STK500-Besitzer beschrieben).

Wenn man das hat, kann man dann an das Fein Tuning gehen.

Ich habe mal als Testprogramm für das Pollinboard den folgenden Code 
geschrieben:
1
if (timeout > 100)
2
{
3
  cli();
4
  timeout = 0;
5
  sei();
6
  LED_PORT ^= (1<<LED_RED1);
7
  if (status & (1<<SFL_BUZZER_ON))
8
  {
9
     if (OCR2 == 80)
10
    {
11
        OCR2 = 0xA0;
12
    }
13
    else
14
    {
15
       OCR2  = 0x50;
16
    }
17
  }  
18
}// if (timeout > 100)

Dabei wird der Timeout durch den sowieso vorhanden allgemeinen Timer 
erzeugt.
Der PWM Timer ist dann separat.

Gruss
Andreas

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.