mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik tabelle mega 88


Autor: Martin S. (martinsc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

habe in assembler ein programm für den mega88 geschrieben, dass mir 
verschiedene tonfrequenzen mißt. funktioniert alles problemlos.

nun möchte ich, dass jeder tonfrequenz eine aktion zugeordnet wird.
Sprich wenn ton 1 dedektiert wird soll aktion 1 ausgeführt werden usw.
nun weiss ich nicht genau wie ich dass realisiern soll. ich weiss, dass 
tabellen dafür sehr nützlich sind...

ich möchte auch einen gewissen übergang haben, also dass die aktion auch 
dann ausgelöst wird wenn die tonfrequenz z.B. +/- 5 Hz schwankt.
Muss ich dann z.B. bei 10 frequenzen über 100 werte mit der Hand in mein 
Programm schreiben, oder gibt es dafür eine bessere und weniger 
schreibintensive methode?
gibt es dafür beispiele?

Ich hoffe, ich habe mein problem verständlich genug ausgedrückt.
Vielen Dank, schon mal für euere hilfe!
gruß
martin

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Muss ich dann z.B. bei 10 frequenzen über 100 werte mit der Hand in mein
>Programm schreiben,

Wie kommst Du auf 100?  Du brauchst 20 Werte, nämlich jeweils der 
minimale und der maximale Wert für jede der 10 Frequenzen.

Autor: Martin S. (martinsc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich komme noch nicht klar damit, wie ich die jeweilige abzweigung dann 
realisiere.
wenn ich einen gemessenen wert habe, muss ich diesen mit den werten in 
meiner tabelle vergleichen und wenn eine übereinstimmung besteht, soll 
an eine bestimme stelle gesprungen werden. deshalb brauche ich doch 
jeden wert, oder? also wenn ich z. B. ein 200 Hz Signal habe, benötige 
ich doch die zahlen von 195Hz bis 205Hz. Ansonsten kann ich doch meinen 
Wert nicht vergleichen und somit z.B. eine branch anweisung verwenden.
verstehe ich da etwas nicht richtig?
danke, für deine antwort!

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>also wenn ich z. B. ein 200 Hz Signal habe, benötige
>ich doch die zahlen von 195Hz bis 205Hz.

Nein, um Himmels willen.  Du brauchst nur die beiden Werte 195 und 205. 
Die schreibst Du in Deine Tabelle (die am Schluss dann 20 Werte 
enthält).

Die "größer als"- und "kleiner als"-Prüfungen kannst Du einfach über die 
Befehle brge und brlt erledigen:
[fmin und fmax aus Tabelle laden]

cp   f, fmax 
brge FreqDoesntMatch
cp   f, fmin
brlt FreqDoesntMatch

[hier Code fuer "Frequenz passt" (fmin < f < fmax)]

FreqDoesntMatch:
...

Autor: Martin S. (martinsc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank dür deine hilfreiche antwort!
gruss
martin

Autor: Martin S. (martinsc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen!

nachdem ich hier ne super antwort bekommen habe, versuch ichs nochmal.

das beispiel im beitrag vorher leuchtet mir ein und ich verstehe es 
auch. nun möchte ich es auch mit 16bit zahlen versuchen.

ich habe also 10 bereiche mit jeweils einer oberen und unteren grenze.
zuerest habe ich bisher immer die jeweiligen High-Bytes miteinander 
verglichen, anschließend die High-Bytes der untern Grenze. Wie im 
Beispiel oben.

Nur habe ich jetzt ein Problem. wie mach ich es wenn jetzt das High-Byte 
der Unteren Grenze gleich dem High-Byte der nächsten Oberen Grenze ist. 
Ich kann ja nicht einfach dann die Low-Bytes miteinander vergleichen.
Irgendwie bekomm ich das nicht auf die Reihe.
Hoffe es fällt jemandem was gutes dazu ein!
Vielen Dank schon mal!
Viele Grüsse
Martin

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.