mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Altes Thema: PWM


Autor: Günter König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag Forum,

noch mal eine Frage zur PWM:
Es ist ja nicht schwer, eine Frequenz von ca. 950Hz zu erzeugen, die 
dann am OC1 Ausgang zur Verfügung steht. Der AVR (ein 2333 in diesem 
Fall) ist nun damit beschäftigt, diese Frequenz auszugeben.
Nur, wie verfahre ich aber wenn dieser Ton, der über einen 1KHz Tiefpass 
auf einen FM-Modulator gegeben wird, nur für ca. 0,5sec. anstehen soll?
Ich weiß, ist wahrscheinlich sehr simpel. Aber ich komm nicht drauf. 
Leide wahrscheinlich unter österlichen Spätschäden im Frühstadium......

Die ganze Sache dient als Rückmeldung für ausgelöste Schaltfunktionen 
und als Störungsmeldung, also eine Art "Roger-Piep".

Danke euch allen schon jetzt,
Günter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also wenn du das mit der Frequenz hinbekommst dann brauchst du ne 
Schleife um es nur ne bestimmte zeitlang einzuschalten.

Also schalte den Programmteil ein der dir die Frequenz erzeugt. Starte 
eine Schleife A(255mal verkleinern), wenn diese fertig ist geht es mit 
Schleife B(255mal) weiter die den Wert von Schleife A wieder auf 255 
setzt und Schleife A von neuem startet. 255 Befehle werden bei 8 MHZ in 
32 µSek ausgeführt aber Schleife a wird ja 255mal ausgeführt also 32µSek 
mal 255= ca. 8mSek also brauchst du noch mal ne Schleife C die Das ganze 
wieder 62 mal ablaufen läßt dann ist ne halbe Sekunde rum und du stellt 
den PWM-Mode wieder ab oder den Programmteil mit dem du die Frequenz 
erzeugts.

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann man das parallel machen

1 Ton an
2 (während immernoch der Ton erklinkt :-) Schleife ausführen
3 dann Ton ausschlaten ?

jo
Axel

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so wie ich das mitbekommen habe läuft PWM im Hintergrund du musst die 
Frequenz einstellen und starten danach kannst du im eigentlichen Prog 
andere Sachen machen.

Autor: Günter König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Thomas, Djambo Axel,

ich hatte mir das folgendermaßen vorgestellt:

ein Register wird gesetzt. Mit setzen des Registers wird a.) die 
Subroutine "Ton" angesprungen und b.) ein Portausgang wird  nach L 
gezogen. Nach Ablauf der Zeit wird das Register gelöscht und der Ton ist 
aus und der Portausgang ist wieder H.

Ich will noch mal probieren.......

Danke euch,
Günter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also das was du machen willst kannst du doch mit analogen Bausteinen 
machen, dazu brauchst du keinen AVR. Eine Monostabile Kippstufe und 
einen Summer. Funktioniert in etwas so ein Kondensator lädt sich auf und 
sobalt ne Taste gedrückt wird(oder anderes Ereigniss) steuert der 
Kondensator einen Transistor durch welcher den Summer mit Strom 
versorgt, der Kondensator ist irgendwann entladen und kann den 
Transistor nicht mehr durchsteuern, dieser schaltet den Sumer wieder ab, 
der Kondensator lädt sich wieder und wartet aufs nächste Ereignis. Geht 
mit viel weniger Programmierkenntnis.

Autor: Günter König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallelujah Thomas,
die Tonerzeugung ist nur ein Teil der Gesamtfunktion.....

Die Schaltung macht folgendes:
1.) Erkennen von 5-Tonfolge Signalen (kommt per Funk).
2.) Erkennen ob eine gültige Tonfolge vorhanden ist.
3.) Umwandeln der einzelnen Töne in HEX-Code.
4.) Abspeichern des Codes.
5.) Auswerten des empfangenen Codes.
6.) Ist der Code für diese Baugruppe relevant, Priorität erkennen.
7.) Auswerten der Priorität.
8.) Auslösen entsprechender Funktionen (Relais usw.).
9.) Ansteuern des Sendeteils der HF-Baugruppe (Sender tasten)

So, bis hierhin klappt alles. Was jetzt eben noch fehlt ist eben die 
Modulation des Senders. Dieses soll auch der AVR über die PWM - 
Erzeugung übernehmen.

Ich hoffe, es ist klar das hier kein Monoflop verwendet werden kann. Und 
noch was, dein Vorschlag ist sehr umständlich weil man doch mit einem 
getortem astabilen Multivibrator die Sache ganz elegant lösen kann. Es 
reicht ein Baustein (7400 oder 4011) aus.
Sicherlich kann ich diese Schaltung mit einem 7400 aufbauen aber das 
Layout der Platine steht und die ersten Platinen sind schon bestückt.

Trotzdem Danke auch noch,
Günter

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Günter

verstehe ich Dich richtig, dass Du nur einen Frequenzerzeuger für eine 
gewisse Zeit anschalten willst ?
ich dachte Du willst den Ton mit dem AVR erzeugen.

jo
dann sollte es doch wohl ganz easy gehen
"ein" - "delay" - "aus"
oder !?

jo
Axel

Autor: Günter König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Axel,
jawoll, du hast recht.
Gruß,
Günter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe nicht die Tonerzeugng gemeint dafür braucht man nen 
Multivibrator, habe die Verzögerung gemeint.

Du kannst aber auch dein Programm in der Schleife ausführen. Oder den 
Programmcounter als Schleifenzähler nehmen da der von alleine erhöht 
wird. Also Schleife erst an einen bestimmten Punkt des Programms 
abfragen.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich würde dazu den Timer benutzen. zb. Timerinterrupt aller 10ms oä.,
im Interr. ein Reg. runterzählen(bei Tonanforderung auf 50 laden), wenn
= 0 Ton aus. Das war es schon.
Gruß Uwe

Autor: Günter König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Uwe,
ich glaub, der Groschen ist gefallen.....
Das teste ich aus.

Gruß,
Günter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.