Einen schönen guten Abend miteinander! Mein Interesse für die µC wurde erst vor kurzem geweckt und ich befinde mich daher bei meinen ersten primitiven Versuchen. Wer es aufregend mag wird sich durch die folgenden Zeilen seiner wertvollen Zeit beraubt fühlen... Für denjenigen der jetzt noch dabei ist folgende Randinfos: Ich habe mir für die ersten Versuche das NET IO Board von Pollin mit dem ATMega32 beschafft und nutze einen ISP und AVR Studio4. Über die Lauflichter etc. bin ich erfolgreich hinaus. Nächster Schritt soll das temperaturabhängige ansteuern von 2 LEDs sein (grün=Temp OK; rot=Temp kritisch). Ich habe mir dazu einen Fühler über Spannungsteiler gebastelt und die Messleitung an einen ADC Port angeklemmt, als Vref wird intern 5V verwendet. Das Messsignal beträgt lt. Multimeter auch ca 2,5V. Um leichter festzustellen ob auch tatsächlich ein Ergebnis erzeugt wird habe ich zunächst eine Prüfung auf Null eingerichtet. Bislang verläuft diese auch immer positiv (also Ergebnis =0, obwohl 2,5V anliegen). Das ist schon zimlich frustrierend-.-' Kann mir jemand helfen den Fehler zu finden? Ich checks einfach nicht...
Der Test "ausgabe == 0" ist warscheinlich zu strikt, d.h. ausgabe ist wegen Rauschen und Messfehlern nie (oder nur extrem kurz) Null. Versuch einfach mal, ein bestimmtes Bit von Ausgaen zu testen, z.b. "if (ausgabe & 1)" oder "if (ausgabe & 16)" o.ä. Und warum left-Alignment der Werte?
Setz mal das ADMUX-Register explizit auf den Kanal vor der Wandlung.
Nabend nochmal, erstmal schönen Dank für eure Antworten. @Johann: Der Test läuft auf das (unwahrscheinliche) Ergebnis ausgabe=0, obwohl die ausgabe wegen rauschen etc fast nie 0 sein dürfte (abgesehn davon liegen wie gesagt 2,5V an), wird dennoch immer die LED für ausgabe=0 angesteuert. Folglich wird das Ergebnis immer als 0 erkannt, oder nicht? Linksbündig deswegen, weil ich die 2 kleinsten Bit "abschneiden" will, wegen Rauschen. Ich lese dann nur das High-Register ADCH aus und lasse als uint8_t den 8-Bit-Wert ausgeben. Bei einer 8-bit Auflösung sollte das Ergebnis doch etwa (2,5/5)*512 = 255 sein... @Martin: habe den Kanal jetzt VOR der Initialisierung im ADMUX gesetzt, leider ohne Veränderung...
Flocke schrieb: > @Martin: habe den Kanal jetzt VOR der Initialisierung im ADMUX gesetzt, > leider ohne Veränderung... Setz doch mal den Kanal vor dem LESEN.
Eine Fehlinterpretation der Ausgabe ist ausgeschlossen? Immerhin schaltest du die LED-Pins immer nur auf 1, aber nie wieder auf 0 zurück. (Und für die Grenze würde ich erst mal etwas anderes als 0 nehmen. Die Hälfte vom Messbereich wäre zb ein ganz guter Wert.) Welcher µC ist das eigentlich? Damit man mal kontrollieren kann, was du hier ADMUX = (1<<REFS0)|(1<<ADLAR); eigentlich wirklich als Referenzspannung eingestellt hast.
Karl Heinz Buchegger schrieb: > Immerhin schaltest du die LED-Pins immer nur auf 1, aber nie wieder auf 0 zurück. Macht er doch:
1 | if(ausgabe ==0) // wenn "ausgabe1" >= x, führe Aktion aus |
2 | {
|
3 | PORTA = (1<<PORTA7); //rote LED |
4 | }
|
5 | else // wenn "ausgabe1" < x, führe alternative Aktion aus |
6 | {
|
7 | PORTA = (1<<PORTA6); //grüne LED |
8 | }
|
Die jeweils andere LED wird ja immer ausgeschaltet (direkte Zuweisung, keine Veroderung)
Schönen Guten nochmal, erstmal vielen Dank für die Vorschläge die bislang kamen. Leider war ich in den vergangenen Tagen verhindert und konnte daher nicht wirklich auf die Antworten reagieren. Die Tips die bislang kamen habe ich versucht umzusetzen, (habe auch vielo anderes versucht...-.-') bislang jedoch ohne Erfolg. Bezüglich der Frage zum µC-Typ: es handelt sich um den ATMega32 und die der Auszug des entsprechenden Datenblattes REFS1 REFS0 Voltage Reference Selection 0 0 AREF, internal Vref turned off 0 1 AVCC with external capacitor at AREF pin 1 0 Reserved 1 1 Internal 2,56V Reference besagt letztendlich nur, dass mit ADCSRA |= (1<<REFS0); die interne Referenzspannung ausgewählt wurde. Das NET I/O Board hat hier noch einen Jumper für die Spannung, der mittlerweile alle Stellungen durchlaufen hat, aber zweckgemäß auf Vref int. steckt. Ich weiß langsam echt nicht mehr woran es liegen kann, habe auch schon diverse Leute gefragt... keiner weiß woran es liegt. Der µC ist auch in Ordnung, habe den Prozzi ausgetauscht und neu geflasht, gleiches Ergebnis. Anbei noch der aktuelle Softwarestand...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.