Moin, ich versuch gerade, mit meinem neuen Photowiderstand das Licht zu messen und erst mal die Staerke auszugeben... dazu moechte ich den internen ADC des atmega644 verwenden. Habe also an PA0 VCC ueber den Widerstand angeschlossen und noch ein LCD an Port D gehaengt, um die Daten anzuzeigen. Im Anhang ist mein Code, der ADC Teil wurde groesstenteils aus dem AVR-GCC Tutorial geklaut. Funktioniert aber leider nicht, der ausgelesene Wert ist immer 0. Weiss einer, wo mein Fehler liegt? Gruss, Apo
Apo wrote:
> Weiss einer, wo mein Fehler liegt?
Wenn an dem Analog-Eingang nur der Fotowiderstand hängt, dann weiß
ich, wo der Fehler liegt. Du musst einen Spannungsteiler mit dem
Fotowiderstand bauen oder den Fotowiderstand mit einem konstanten Strom
versorgen und die Spannung über dem Fotowiderstand messen...
BTW: Ich glaube, Du hast auch falsche Vorstellungen davon, wie lange der ADC für eine Wandlung (bzw. in Deinem Fall für 4 Wandlungen) braucht... Bei den Einstellungen dauert eine Wandlung schon gut 100µs, der Timer-Interrupt kommt bei der Konfiguration aber alle 160µs...
Hm, wie bau ich so 'nen Spannungsteiler? http://de.wikipedia.org/wiki/Bild:Spannungsteiler.svg Muss ich da PA0 zwischen R1 und R2 haengen?
Apo wrote:
> Muss ich da PA0 zwischen R1 und R2 haengen?
Zum Beispiel. Und dran denken, dass bei der Methode die Ausnutzung des
Referenzspannungsbereiches bei Verwendung von VCC ziemlich suboptimal
ist.
Apo wrote:
> Der Interrupt sollte alle 0.2s kommen...
OK, mit der Einstellung wie im Programm
1 | #define HZ 5
|
2 | #define COMP 8000000/256/HZ
|
und nem Prescaler von 256 (den ich vorher übersehen hatte) kommt ca. alle 40 ms ein Interrupt
Das macht eben 41,12ms zwischen zwei Interrupts... Allerdings könnte es Probleme geben mit der "8000000". Schreib lieber "8000000UL", dann merkt der Compiler auch definitiv, dass er das nicht in 16-Bit-int rechnen darf...
8000000/256/5 = 6250 Timer1 hat also bei 6250 sein Compare Match. 6250*256 (Prescaler) = 1,6M 8MHz/1.6MHz = 5Hz Zufrieden? PA0 haengt jetzt zwischen dem Photoresi und 30kOhm. Mit dem Multimeter laesst sich der Spannungsunterschied locker messen, der MC laesst sich aber immer noch nicht beeindrucken...
Apo wrote: > 8000000/256/5 = 6250 > > Timer1 hat also bei 6250 sein Compare Match. 6250*256 (Prescaler) = 1,6M > 8MHz/1.6MHz = 5Hz > Zufrieden? Hast zwar recht, ich hab da nicht richtig hingeschaut, aber den Ton kannste Dir sparen! Viel Spaß noch!
Brauchst nicht gleich eingeschnappt zu sein, das war kein Stueck boese gemeint... aber von mir aus, irgendwie werd ich's schon schaffen. Danke fuer den Tipp mit dem Spannungsteiler.
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.