mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik signal generator


Autor: Peter "d." (piotred)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo leute,

ich bin neu hier und wußte nicht, ins welche forum ich meinen beitrag 
schreiben sollte..

s geht um folgendes:

ich soll per software-programmierung einen signal generator 
programmieren. dabei gibt s mehrere anforderungen:

1. verschiedene signalverläufe (also zeitmäßig)
2. eine zeitspanne soll variabel einstellbar sein
3. muß über den rx-ausgang ausgegeben werden

um nochmal alles genauer zu erläutern:

ich habe einen 4bit schalter mit dem ich 16zustände generieren könnte. 
den schalter also einlesen, welche stellung er hat und dann sozusagen 
die bestimmten signalverläufe ausgeben, nachdem ein anderer druck-knopf 
(dahinter muss noch eine entsprell funktion hinterlegt werden) 
aussenden.

wie kann ich dieses nun programmieren?

ich weiß, ich brauche drei funktionen:

1.schalter einlesen und überprüfen
2.signal auf ausgang legen
3.abfragen, ob der drucktaster gedruckt wurde und dann entprellzeit 
beachten

nochmal zu den zeitverläufen:

sollte der drucktaster betätigt werden, muss erst 8ms ein LOW-Signal und 
anschließend min 8ms HIGH-Signal..dieses ist variabel und somit hinter 
dem SWITCH-Schalter abgelegt.

ein beispiel: ist der switchschalter auf 0000, dann liefert er mir die 
zeit 8ms(LOW) und dann 8ms(HIGH). ist er auf 0001, dann 8ms (LOW) und 
16ms(HIGH). 0010 = 8ms+24ms usw.

ich hoffe, einer von euch kann mir helfen..

Autor: Hans (noch einer) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wie kann ich dieses nun programmieren?

Die Frage ist ein bisschen zu allgemein gehalten. Google nach "direct 
digital synthesis" und ansonsten, diskutiere die Details doch erst 
einmal mit deinem Professor/Lehrer statt uns deine Hausaufgaben machen 
zu lassen.

Autor: Maxim S. (maxim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoffentlich programmierst du in Assembler, denn das würde die 
Zeitberechnung erleichtern.

Ich würde das so umsetzen:

Du Programmierst zwei Schleifen (Unterprogramme):
a) Signal auf HIGH und 8ms warten
b) Signal auf LOW und 8ms warten

Nun wird in einer Hauptschleife der Taster abgefragt. Ist er gedrückt, 
so wird der aktuelle Zustand des 4-Bit-Schalters eingelesen und in einen 
temporären Register (bspw. R17) kopiert. Dann wird zuerst das 
Unterprogramm b) aufgerufen. Ist es abgearbeitet, wird das Unterprogramm 
a) in einer Schleife aufgerufen. Dabei dekrementiert der uC das 
temporäre Register R17 nach jedem durchlauf um ein 1 und überspringt die 
Schleife, sobald der Wert 255 (0 minus 1) beträgt, vorausgesetzt, du 
verwendest einen 8-Bitter.

Autor: piotred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, eigentlich programmiere ich in c..dies sieht dann ja anders 
aus..würde ich sagen..

Autor: Maxim W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann besteht die Schwierigkeit darin, die Zeit von 8ms abzuwarten. Es 
gibt aber die möglichkeit mit dem Befehl "volatile" Assembler-Code in C 
einzufügen. Mehr kann ich dir dazu leider nicht sagen. Jetzt sind die 
C-ler gefragt.

Autor: Peter "d." (piotred)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, ich habe mir schon überlegt, dass ich eine schleife mache, die 
meinetwegen meine funktionen alle 2ms aufruft..dies ist schon 
vorgegeben..dann muss ich halt die funktionen schreiben..

den schalter kann ich ja mit hilfe von if-else abfragen oder gibts da 
etwas einfacheres??

und dann in den verschiedenen abzweigungen meine andere funktion 
abfragen..bitte hilfe..

Autor: piotred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hierbei handelt s sich um einen 8kHz quarz..

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.