Hallo, habe die AVR-Ctrl aufgebaut und auch die Heizungssteuerung erfolgreich per ISP eingespielt. Einer der beiden Sensoren funktioniert nicht (mehr?), sondern bleibt immer auf einem Wert stehen, der sich mit jedem Reset ändert. Sensortausch über Kreuz hat auch nix gebracht. Die geteilte Spannung vom 1,5K Widerstand und dem KTY-91/110 liegt am MEGA an. Hat evtl. die Software ein Problem, oder kann auch einer der beiden ADC Eingänge evtl. durch statusche Aufladung hinüber sein ? Danke für eure Hilfe
Also wenn was hinüber ist ist es wohl der ADC, den gibt's nur einmal, also dürfte kein AD-Wert mehr einzulesen sein. Was mich bei der sauteuren MEGA32-Version (wohl die von 'CON..'?) erstaunt ist, dass ein C-Interpreter auf einem µC implementiert ist, der sowieso in C programmiert werden kann ??!! Kauf' Dir lieber 'nen ATmega32, den Quarz kriegste auch selber dran und sparst dabei noch 35 !
Ok, selberlesen macht schlau. Es gibt nur einen ADC, der auf 8 Leiungen (PA0-PA7) geschaltet werden kann. PA1 nimmt keine Werte mehr ein bzw. nimmt keine Änderungen an. Reset ohne Sensoren: Anzeige zeigt ?? Reset mit "warmen" Sensor: Anzeige für Ta konstant bei 35 Grad Reset mit "kaltem" Sensor: Anzeige für Ta konstant bei 30 Grad Tk läßt sich durch Handerwärmung von 28 auf 37 Grad bringen: Ta bleibt auf Wert stehen. Gruß Jens
Also scheint der ADC zu arbeiten. Müsste sich demzufolge um ein Hardwareproblem zu handeln. Ist die Eigangsspannung am entsprechenden Pin OK? Ich kenne die Applikation nicht, aber der AD-Multiplexer spricht bei offenem Eingang leicht über, also wäre es auch möglich dass ein falscher Eingang belegt oder programmiert wurde.
Hallo Hubert, Sensortausch bringt nix. Beide Sensoren liefern jeweils ca. 2 Volt an den PA Pins, und ändern die Spannung bei Erwärmung auch. Die erste ADC Wandlung klappt für den Außenfühler. ( Beide KTY sind mit ca. 20 cm Draht an der AVR angeschlossen) Dannach kommt immer der gleiche, erste Wert. Gruß Jens
Bei den gegebenen Symptomen sieht es so aus, als ob PollingMinute eine Veränderung der Außentemperatur "verhindert". PollingMinute wird durch Interrupt Service Routine verändert. Fazit: Controller macht anscheinend keinen Timer-Interrupt mehr. ------------------------------------------------------------------------ --------------- void GetTemperatur(unsigned char Start) { signed int tmp_int; tmp_int = read_adc(1); if(Start) AussenTemperatur = tmp_int; if(PollingMinute) { if (AussenTemperatur > tmp_int) AussenTemperatur--; else if (AussenTemperatur < tmp_int) AussenTemperatur++; PollingMinute = 0; } tmp_int = read_adc(2); if (KesselTemperatur > tmp_int) KesselTemperatur--; else if (KesselTemperatur < tmp_int) KesselTemperatur++; if(Start) KesselTemperatur = tmp_int; }
Hi! Das sieht eher nach einem Softwarefehler aus, denn nach Reset wird er scheinbar gelesen. Vermutlich wird dann im Laufenden Prog. der Mux nicht richtig umgeschaltet oder zugeordnet.-> Im Prog. Fehlerstelle suchen. Kannst ja auch ein Minimalprogr. schreiben welches nur PA1 wandelt und irgendwo anzeigt. Viel Erfolg, Uwe
Hi, auch wenn es schon ewig her ist. ich hatte heute ein sehr ähnliches Problem. Im Register des ADC lag stets der selbe wert vor, obwohl er im Freerunning war. Ich hatte auf die höchsten zwei bit verzichtet und nur ADCL ausgesen. Nachdem ich mir lange den Kopf zerbrochen hatte, stieß ich auf den Hinweiß, dass die Register erst wieder aktualisiert werden, wenn ADCH ausglesen wurde. Vielleicht hilfts ja.
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.