Hallo alle zusammen! Ich steh hier wie der Ochs vor'm Berg und komm nicht weiter. Ich hab ein ATMega8 Experimentierboard (von Roland Walter, wem's was sagt) und daran angeschlossen ein Spannungsteiler, der wiederum am ADC-Kanal 0 (sprich Port C Pin 0) hängt (4,7 zu 8,1kOhm -> kommen laut Multimeter ca. 1,8V raus). Nun hab ich in Bascom versucht das ganze zu Programmieren. Ich kann auch den ADC abfragen, jedoch nur mit 8 Bit! Ich dachte zu erst es liegt an diesem "ADC Left Adjust Result"-Bit im ADMUX Register (dann kommen nur 8 Bit am ADCH raus). Also erstmal auf 0 gesetzt...bring aber nix! Dann erstmal gemerkt das ich auf das ADCSRA Register zugreifen will, Bascom kennt das aber anscheinend unter dem Namen ADCSR. Geändert, aber wieder nur 8 Bit! Ich setzte meine Register wie folgt: Ddrc = &B00000000 Admux = &B11000000 Adcsr = &B10001111 On Adc Onadc Sreg.7 = 1 Meines erachtens heißt das folgendes: PortC auf Eingang Admux: 2,56V interne Referenz, KEIN Left Adjust, Bit 4 gibt's nicht (also 0), AD-Input 0 gewählt Adcsr: AD an, aber nicht starten, Free Run aus, Interrupt Flag auf 0, Interrupt an, Prescaler auf 128 (ergibt mit 3,6864MHz ca. 28,8kHz) was aber nix bringt! Egal welcher Prescaler, immer das selbe Ergebnis! Später lese ich dann erst ADCL dann ADCH. Das ganze mit Makeint(ADCL, ADCH) zusammenführen. Ich weiß grad echt nimmer weiter! Bitte Bitte helft mir heul MfG Basti
Nach meinen Erinnerungen kann dir Bascom das ganze Setzen und Auslesen der Register abnehmen. Der ATMEGA8 hat definitiv einen 10Bit Wandler! PS: Ich hab auch nich eine veraltete Version des ATEMEGA8 Datenblatts in dem einem glaubhauft gemacht werden sollte dass zwei der 6 A/D Eingänge nur 8Bit Auflösung hätten.
Ja das mit den zwei 8 Bit Kanälen stimmt, ist nur so weil da auch die Hardware I²C-Ports mit drauf sind! Ich weiß das Bascom das auch machen kann, allerdings braucht mir das zuviel speicher (und man lernt nix, ausser "Config ADC=XYZ")!
Hallo, Pobiere doch erst mal ob die lernt nix Methode mit (Config ADC=XYZ") funktioniert und du so die 10 Bit erhältst . Wenn das geht, dann Versuchs über die Register, aber dann auch komplett und nicht halbe / halbe (On Adc) oder sonnt bitte etwas mehr Programmausschnitt. Wie ist die Variable dimensioniert die dein Makeint(ADCL, ADCH) aufnimmt ? Mein mega8 hat auch mit bascom 10 Bit Gruß HH
Noch was wenn du wissen willst, welche Registernamen Bascom hören will dann schau in der m8def.dat nach
Also ich hab jetzt auch mal mit der "Nix-lern-Methode" probiert, und siehe da: Er liefert mir 10Bit! Allerdings läuft das ganze ein wenig merkwürdig: Egal welchen ADC-Kanal und welche Referenz ich wähle...es kommt immer ein Wert zwischen 350 und 500 raus! Am Kanal 0 liegen ~1,8V, raus kommen tut aber (umgerechnet) 1,25V! Am Kanal 1 liegen ca. 3,9V, kommt aber auch so um die 1,5V raus. Bei den restlichen (nicht angeschlossenen) kommt der Wert 372 raus. Ich glaub fast das liegt am Mega selbst! Der is bestimmt schon 400-500 Programmiert worden (aber er sollte ja mindestens 1.000 oder 10.000? Programmierungen aushalten)! Mein Quelltext mit der Bascom Methode habt ihr hier: $regfile = "m8def.dat" $crystal = 3686400 $baud = 9600 Dim E As Word Config Adc = Single , Prescaler = Auto , Reference = Avcc Do Start Adc E = Getadc(1) Stop Adc Print E Wait 2 Loop End Ist recht einfach aufgebaut, aber mehr braucht's grad auch nicht. Soll ich auch den gesamten Text der anderen Quelldatei (Register von Hand setzen) posten? MfG Basti
Hallo, das es am mega8 hängt kann ich mir nicht denken , auch nicht wenn er noch sooft programmiert wurde . Ist dein Avr richtig beschaltet an AVCC ,AREF ?, wo kommt die Spannung am Messeingang her, ist das saubere DC ? Dann solltest du erst mal Config Adc = Single , Prescaler = Auto , Reference = INTERNAL verwenden und auch mehrere Werte einlesen und nicht den ADC gleich wieder Stoppen
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.