Forum: Mikrocontroller und Digitale Elektronik Atmega 8535 - ADW-Werte vergleichen


von Lars W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe Probleme mit meinem C-Programm.
Ich möchte das zwei analoge Signale ziwschen 0V und 5V am AD-Wandler 
sowohl an Kanal_0 als auch an Kanal_1 anliegen und diese dann mit 
einander verglichen werden.
Das größere Ergebnis soll im Hauptprogramm dann an Ports ausgegeben 
werden.

Das Gerät dient im Endeffekt als Lautstärkeüberwachung.
Es soll ab einer bestimmten Lautstärke an einem der beiden Mikrofone 
eine Rote Ampel angesteuer werden. Dann soll ein Zähler gestartet werden 
der sich um eins verringert wenn die Lautstärke wieder absinkt und 
wieder auf den Anfangswert setzt wenn die Lautstärke über einem 
bestimmten Wert ist.
Somit soll die Ampel bei Lärm immer min Minuten leuchten.

Mir ist bewusst das die Werte der Wartezeit und die dB Werte noch nicht 
stimmen aber die werde ich auch erst einstellen wenn das Programm sonst 
soweit richtig arbeitet.

Ich würde mich freuen wenn ihr mir weiter helfen könntet indem ihr mir 
sagt ob ich den AD-Wandler richtig initialisiert habe und ob das 
Programm zur Erfassung der ADW-Werte bzw der Vergleich der beiden 
ADW-Kanäle richtig ist.
Tut mir leid wenn ich viele Fehler drin hab, aber ich bin echt noch 
Anfänger und steh gerade sogar bei sowas einfachem wie dem Variablen 
Vergleich auf dem Schlauch.

Ich bedanke mich schonmal bei euch.

von Karl H. (kbuchegg)


Lesenswert?

Lars W. schrieb:

> Ich würde mich freuen wenn ihr mir weiter helfen könntet indem ihr mir
> sagt ob ich den AD-Wandler richtig initialisiert habe und ob das
> Programm zur Erfassung der ADW-Werte bzw der Vergleich der beiden
> ADW-Kanäle richtig ist.


Es ist ganz einfach:
Schliess anstelle der Mikrofone (und der Schaltung die du noch brauchst 
um die Mikrofonspannung zu glätten) einfach jeweils ein Poti als 
Spannungsteiler an den ADC Eingang an, pimpe dein Programm, so dass du 
dir irgendwo irgendwie die Zahlen ansehen kannst, die du vom ADC 
bekommst dann #weißt# du, ob du alles richtig gemacht hast. Und das ist 
1000-mal besser, als wenn wir dir hier sagen was falsch ist.

> Tut mir leid wenn ich viele Fehler drin hab, aber ich bin echt noch
> Anfänger und steh gerade sogar bei sowas einfachem wie dem Variablen
> Vergleich auf dem Schlauch.

Dann solltest du dich vielleicht erst mal mit den Grundlagen 
beschäftigen.
Von nichts kommt nichts. Das gilt nirgends so sehr wie in der 
Programmierung. Und gerade weil du Anfänger bist ist es extrem unklug, 
wenn du das ganze Programm in einem Rutsch runterschreibst. Denn du 
stehst dann mit einem Programm da, das nicht funktioniert und hast nicht 
den blassesten Schimmer, wo du mit Fehlersuche anfangen sollst.
Die Lösung lautet: schrittweise arbeiten!
Teile dein Komplettproblem in Teilschritte auf. Und zwar so, dass du 
jeden Teilschritt für sich testen kannst (und ja, da kann es durchaus 
auch mal sein, dass man Code schreibt, der im Endeffekt dann wieder weg 
kommt) und die einzelnen Teilschritte aufeinander aufbauen.


PS: was versprichst du dir von der Verwendung des ADLAR Bits?

von Patrick B. (p51d)


Lesenswert?

1) den Code kannst du auch als Text einfügen, das macht es unheimlich 
viel einfacher dir zu helfen...
2) Wird das Signal von den Mikrofonen verstärk und gefiltert? Weil ein 
normales Mikrofon hat Pegel von ein paar mV...
3) ADC-Tutorial lesen, da stehen Beispiele, wie man unterschiedliche 
Kanäle messen kann. (ADCEN muss nicht jeweils neu gesetzt werden...)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.