-
        

Ergebnis 1 bis 6 von 6

Thema: Taktfrequenz ereignisgesteuert ausgeben..

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2004
    Ort
    Thüringen
    Beiträge
    133

    Taktfrequenz ereignisgesteuert ausgeben..

    Anzeige

    Hallo Leute,

    brauche mal einen kleinen Anstoß.

    Ich erzeuge per Timer-Interrupt eine Rechteckfrequenz von ca. 1000 Hz.

    Diese möchte ich auf einen Ausgang legen, Das funktioniert gut.

    Allerdings soll diese Frequenz bei Anspringen eines Unterprogrammes (Bedingung erfüllt). für z.B. 200msek anliegen, dann ausgehen.

    Anwendung: Die 1000Hz (Ton) sollen bei bestimmten Bedingungen z.B. piep-piep oder piep-piep-piep machen.

    Ich kriegs aber nicht hin. Gibt es dafür eine (vielleicht ganz einfache) Lösung??

    Danke im Voraus.
    Tschau, ANdreas

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.02.2006
    Alter
    26
    Beiträge
    99
    Poste einmal dein Programm.

    Ich hab das gleiche einmal bei einem Infrarotsender benötigt, wo ich die richtige Frequenz gebraucht habe, und gleichzeitig sollte alles immer für 50ms ein und für 50ms aus sein. Das hat damals funktioniert.

    Ich hab nur nicht mehr meinen Code im Kopf oder auf der Platte.
    [schild=19 fontcolor=000000 shieldshadow=1]SKYPE[/schild]
    Der Rechtschreibfehler findet..... darf sie bei Ebay um je 1cent versteigern!
    Skypename: vsvismeista

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Hallo Andreas,

    wenn das initiale Piepsen den Start des eigentlichen Unterprogrammes aufhalten darf (d.h. das Unterprogramm auch mit ein paar Piepsern Verzögerung starten kann), würde ich den Interrupt des betreffenden Timers periodisch ein- und ausschalten. Ohne Interrupt kein Piepston:

    Code:
    Do
    disable timer1 'Ton aus
    ...
    ...
    GOSUB Subprogramm
    Loop
    
    
    Subprogramm:
    enable Timer1 'Ton startet
    waitms 200
    disable Timer1 'Ton stoppt nach 200ms
    (kann mehrfach wiederholt werden für mehrere Pieptöne...)
    ...
    ...
    Return
    Willst Du damit vielleicht CW-Zeichen ausgeben?

    Gruß,

    Daniel
    (DL6MCL)

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Sowas erschlägt man am besten in dem eigentlichem Timerinterrupt mit hilfe von zwei Variablen und zwar etwa so:

    Variablen :
    A = 200 (200 ms Tondauer und Pause)
    B = 6 (Anzahl der Pieper*2) also 3 Pieper werden ausgegeben

    In der ISR:
    Code:
    Wenn B = gerade Zahl (man kann hier Bit 0 auswerten)
       Toogle Pin (hier Dein Pieperpin)
    sonst Pin = 0
    
    A=A-1
    
    Wenn A = 0
       A=200
       B=B-1
       Wenn B = 0
          Timer aus
          Pin = 0
    Starten tust Du das in einer Unterfunktion, die sieht so aus:
    Code:
    A=200
    B = 6 (Für 3 Pieper)
    Timer start
    Sorry für diese Pseudocode, es sollte aber ziemlich leicht zu implementieren sein

    Gruß Sebastian

    P.S.
    Das ganze klappt wenn Du wirklich jede mS (1000Hz) einen Interrupt auslöst.
    Das ergibt aber eine Frequenz von 500 Hz...
    Wenn Du alle 500 µs einen Interrupt hast mußt Du A = 400 verwenden
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.10.2004
    Ort
    Thüringen
    Beiträge
    133
    Danke an Daniel, DL6MCL,

    so gehts perfekt. Ist übrigens, um CW-Zeichen zu erzeugen.

    Tschau, Andreas (DL1AKP)

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Ist übrigens, um CW-Zeichen zu erzeugen.
    Ja, ja - CW... ist auch nach 25 Jahren immer noch meine Lieblings-Betriebsart (auch wenn ich aus Zeitmangel nur alle Jubeljahre mal on the air bin).

    Was hast Du denn für ein interessantes Projekt in Arbeit, wenn ich mal ganz neugierig fragen darf?

    Daniel

Berechtigungen

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