-
        
+ Antworten
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: Tonerzeugung / Frequenzerzeugung

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624

    Tonerzeugung / Frequenzerzeugung

    Hi! :o)
    Ich bin gerade dabei einen Soundgenerator für meinen AT Mega8 zu programmieren.
    Ich habe jetzt schon mit Delay-Schleifen und Timern Töne erzeugt.
    Das funktioniert auch gut, aber es beansprucht den AVR zu sehr, ich möchte nebenbei noch LED's ansteuern und noch andere Sachen machen.
    Ich habe mal gehört, dass man mit PWM auch Töne an z.B. PB1/OC1A ausgeben kann, geht das wirklich, PWM ist doch eher um "Analog-Signale" (stimmt ja nicht direkt) ausgeben zu können?
    Wie funktioniert PWM?
    Ich habe mich schon auf www.mc-project.de und im datasheet informiert, aber hab noch nicht herausgefunden, wie's geht!
    Ich benutze Asm und ich finde keine Beispiele, oder kennt jemand welche für PWM?
    Kann man mit PWM überhaupt Frequenzen von ungefähr 61,74Hz bis 4,18601 kHz erzeugen?
    PWM (hardwaremäßig) läuft doch im Hintergrund, oder?

    Danke für Eure Hilfe! :o)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    14.12.2003
    Alter
    26
    Beiträge
    1.187
    Möchtest du mehrehre Töne z.B. ne melodie) oder nur nen Signalton abspielen? Bei einem Könnte mann's mit nem 555 machen, bei mehreren vielleicht auch noch über nen Wiederstandsnetzwerk für den R zwischen pin8 und 7 (nartürlich dann nicht an 8 sondern an den digiport hängen).

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Hi Matthias! :o)
    Ich möchte den Ton ja extra mit dem AVR erzeugen, Spielerei! ;o)
    Der soll z.B. HappyBirthday spielen! *ja, lach ruhig*
    Der soll wenn möglich alle Töne von 'H über Kammerton a' bis hin zu c''''' können!
    Mit Timern gehts auf alle Fälle!

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Wäre es eigentlich einfacher mit OC2 zu arbeiten?

  5. #5
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Tja, in Bascom gibts dafür Sound Befehl Aber Assembler-Fan´s mögen es ja etwas aufwendiger
    Aber du müsstest doch nur eine Routine schreiben die den Timer entsprechend auf die 2xTonfrequenz stellt. Im Timer Interrupt kannst du dann Piezo-Toggeln (erzeugt Tonfrequenz). Nach kurze Wartezeit schaltest du Timer wieder aus. Und schon könnte nächste Note gespielt werden. Mehr macht der Sound Befehl auch nicht.

    Du könntest Piezo auch an den Pwm anschließen. Du müsstest dann die PWM Frequenz pro Ton umprogrammieren.

    Gruß Frank

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Hi Frank!
    Ich bin ein bekennender ASM-Fan! ;o)
    Ja, so habe ich das bisher gemacht, aber was heißt Toggeln? *g*
    Ich dachte, dass es vielleicht mit PWM besser/schneller/unkomplizierter ginge!?
    Naja, mache ich's halt weiter mit den Timern! :o)
    Aber ich muss eh demnächst einen Motor mit PWM takten, wie geht das also?

    Danke für eure Hilfe! :o)

  7. #7
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    "Toggle" ist ein befehl von Bascom und de rmacht nichts weiter als Zustand eines Portes umkehren. "Toggeln" sollte also umschalten heißen
    Glaub nicht das Sound ansonsten mit PWM einfacher geht. Man kann sich nur die Interrupt-Routine sparen, weil bei pwm ja automatisch bei einem bestimmten Wert der Port "getoggelt" wird Ansonsten ist es das gleiche in grün.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.11.2003
    Ort
    Freiburg im Breisgau
    Alter
    28
    Beiträge
    2.624
    Hi Frank! *gähn , müde sei , Schulzeit*
    Jetzt hab ich's verstanden, also invertieren auf Deutsch gesagt, oder ist das überhaupt Deutsch, wahrscheinlich Latein von invertere!? *lol*
    Trotzdem, wie kann man PWM generieren?
    Ich sehe mir heute (ist ja schon nach 0.00 Uhr) nochmal das datasheet an und probier n bischen rum!
    Mal sehn, ob ich's verstehe, ansonsten melde ich mich nochmal! :o)

    Danke für eure Hilfe und gute Nacht! :o)

  9. #9
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Hi,
    ich nehm da gern die High Level Bascom Befehle, die werden dir da in Assembler wenig nützen. Man kann es in Bascom zwar auch mit den Registern programmieren, aber warum soll man sich die Mühe machen.
    Du musst dir also wohl oder Übel die Register vom 16 Bit Timer anschaun. Ist aber recht einfach, müssten sich auch irgendwo ASM Beispiele finden.
    Ja schon wieder spät geworden

  10. #10
    Gast
    Hallo Florian, habe es zwar auf meiner Seite nur in C demonstriert, aber die von dir benötigten Frequenzen kann man ohne Probleme erzeugen. Wie die Initialisierung auszusehen hast, kannst du bei den Projekten (z.B. Ultraschall) sehen. Mit dem Timer1 sollte die Lösung kein Problem sein. Die C-Befehle in Assembler umzuändern dürfte für dich auch keine Hürde sein.
    Falls du konkrete Fragen zur Erzeugung bestimmter Frequenzen hast, so kann ich dir gerne aushelfen.

    Gruß, Alex

+ Antworten
Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •