Hallo und das endlose lästige problem mit der AD wandlung geht weiter … Ich habe mich momentan damit abgefunden, dass ich die Interne Referenz nicht abgeschaltet bekomme. Dennoch passieren sehr merkwürdige dinge. Die Referenz ist ja 2,56V daher dachte ich, dass ich bei 2,56V den gewandelten wert von 1024 erhalte, tatsächlich bekomme ich ihn bei 5V. Das nächste Problem ist das wandeln der werte an sich, wenn ich nur 1x wandel passiert gar nix. Wenn ich in einer schleife wandel und ca. 20x dann hab danach den richtigen wert. Bei mir liegt am entwicklerboard an Vcc, Avcc und Aref 5V an. Auf meinem Steckboard hab ich Aref offengelassen. (es natürlich aber auch anders probiert) Ich gebe mal ein Beispiel: //kein brauchbarer Wert: begin a := Read_Adc(5); //reads from pinc5 end; //richtiger Wert: lauf := 0; begin repeat a := Read_Adc(5); //reads from pinc5 lauf := lauf+1; until lauf = 20; end. Die Funktion kann wie folgt manuel editiert werden. Übernehme ich sie so 1:1 erhalte ich aber nur wert von 255 bei 5V. Warum weis ich nicht. Ein ändern der werte von ADMUX und ADCSRA liefern gar keine brauchbaren ergebnisse mehr. function Read_ADC(n:byte):integer; begin ADMUX := n; ADMUX := ADMUX or $60; //binär 1100000 ADCSRA := ADCSRA or $C7; //binär 11000111 while ADCSRA.6 <> 0 do begin end; result := ADCH; end;
Jan F. wrote: > Hallo > und das endlose lästige problem mit der AD wandlung geht weiter … Und wo hat es angefangen? Vielleicht mal einen Link auf den (vermutlich vorhandenen) alten Thread? > Ich habe mich momentan damit abgefunden, dass ich die Interne Referenz > nicht abgeschaltet bekomme. Womit versuchst Du denn, die abzuschalten? > Die Referenz ist ja 2,56V daher dachte ich, dass ich bei 2,56V den > gewandelten wert von 1024 erhalte, tatsächlich bekomme ich ihn bei 5V. 1024 kannst Du überhaupt nicht bekommen, höchstens 1023!
Beitrag "Aref Extern Aktivieren Atmega8" ich habe meine schaltung jetzt so gebaut, das ich mit opamps die spannung anhebe, deswegen ist das nichtmehr notwendig. Ich habe versuche die referenz durch die bits REF1 und REFS0 im ADMUX register durch setzen auf 0 zu deaktivieren. sry mein fehler natürlich bekomme ich max 1023.
Jan F. wrote: > Ich gebe mal ein Beispiel: > > //kein brauchbarer Wert: > begin > a := Read_Adc(5); //reads from pinc5 > end; Soll das BASCOM sein? Sieht mir jetzt allerdings eher nach PASCAL aus, ist allerdings bei mir auch schon was länger her. Wie wäre es denn, mal zu erzählen, womit Du überhaupt arbeitest? > function Read_ADC(n:byte):integer; > begin > ADMUX := n; > ADMUX := ADMUX or $60; //binär 1100000 > ADCSRA := ADCSRA or $C7; //binär 11000111 Schon mal ins Datenblatt geschaut und versucht, nachzuvollziehen, was da überhaupt konfiguriert wird? > result := ADCH; ADCH hat 8 Bit. Da gehen nur Werte von 0 bis 255 rein. Also nochmal Datenblatt hernehmen, ADLAR löschen (weil es vermutlich gesetzt ist, sonst bekämst Du keine Werte bis 255) und beide Datenregister auslesen! > end; Genau!
> Soll das BASCOM sein? Sieht mir jetzt allerdings eher nach PASCAL aus, > ist allerdings bei mir auch schon was länger her. Wie wäre es denn, mal > zu erzählen, womit Du überhaupt arbeitest? du meinst das board oder? Ich benutze das EasyAVR5A von Mikroelektronika und den mikro Pascal compiler. > Schon mal ins Datenblatt geschaut und versucht, nachzuvollziehen, was da > überhaupt konfiguriert wird? Doch nur was du gerade ansprichst mit den 8 und 10bits ist mir nicht ganz klar gewesen. Die funktion ist von einem user geschrieben und nicht im handbuch referiert. Wenn ich die standardfunktion verwende Adc_Read(5) bekomme ich auch 1023. > ADCH hat 8 Bit. Da gehen nur Werte von 0 bis 255 rein. Also nochmal > Datenblatt hernehmen, ADLAR löschen (weil es vermutlich gesetzt ist, > sonst bekämst Du keine Werte bis 255) und beide Datenregister > auslesen! ah, ich muss also ADCL auch noch auslesen? ich dachte ADLAR ist nur für die ausrichtung wichtig nicht ob 8 oder 10bit.
Hallo, bei REFS0 u8nd REFS1 auf 0 ist die externe Referenzspannung aktiv. Bei Deinem Entwicklerboard wären das also die extern anliegenden +5V. Die Verbindung AREF - +5V würde ich da ohnehin auftrennen und nur einen 100n gegen GND an AREF anschließen. 5V als Referenz lassen sich mit REFS1 = 0 und REFS0 = 1 einstellen. Der Versuch, auf Deinem Board mit fest angeschlossenener AREF an +5V auf interne Referenz zu stellen, kann nicht klappen. Die eingestellte Referenzspannung liegt immer an AREF an, bei Einstellung auf AREF=2,56V und direkter Verbindung außen zu +5V gibt es eben einen Kurzschluß dazwischen, wo irgendwann einer nachgibt... Ansonsten bei Selbstbauten AREF über 100n an GND und die gewünschte Referenzspannung mit den REFS-Bits einstellen, entweder auf 2,56V oder auf AVCC. Steht auch alles nochmal im Datenblatt, Tabelle 74 bei mir. Gruß aus Berlin Michael
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.