Also wenn Volt < 1 ist soll er die Zeit von Msleep ändern und wenn Volt < 2 ist wieder ändern usw. oder geht das auch stufenlos?
Also wenn Volt < 1 ist soll er die Zeit von Msleep ändern und wenn Volt < 2 ist wieder ändern usw. oder geht das auch stufenlos?
Geändert von AsuroPhilip (12.03.2011 um 19:51 Uhr)
Hi Philip,
du willst also den PC4 auslesen. Dazu muss man AVCC an VCC anschließen (über widerstand/Spule) und an AREF über einen Kondensator an Masse anschließen (vgl. Asuro-Schaltplan).
Der Code dazu: (aus AsuroLib, angepasst):
Beim PC4 liefert die Funktion einen Wert zwischen 0 und 255.Code:unsigned int ReadPC4() { ADMUX = (1 << REFS0) | (_BV(MUX2)); // Referenz mit externer Kapazitaet und Mux auf PC4 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten ; ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen return ADC; // Ergebnis als 16-Bit-Wert }
Das kann man dann zur Zeitsteuerung nutzen:
Eine Verzögerung zwischen 200 und 2750 ms.Code:Msleep(ReadPC4()*10+200);
Gruß
ASUR0
Hi danke für deine antwort hat mir seeeeeeehr weitergeholfen!!
Geht denn auch eine Verzögerung zwischen 10 und 200 ?
Habe ein 2,5K Poti an PC4:
Mitte an PC4
Potianfang an gnd
Potiende an vcc
PS: Kann ich mir zur Kontrolle den msleep wert im hyperterminal anzeigen lassen?
Geändert von AsuroPhilip (12.03.2011 um 22:44 Uhr)
Hast du die AsuroLib? Dadrin gibt es eine Funktion, um Zahlen an HT zu übertragen.
Man kann z.B. mit
eine Verzögerung zwischen 10 und 265 ms erhalten.Code:Msleep(ReadPC4()+10);
Gruß ASUR0
Lesezeichen