Atmega644 und ADC

Gast #843377
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
Angehängte Dateien:
#843383
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...
#843388
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...
#843402
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...
Gast #843409
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...
#843414
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!
Gast #843417
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.