Hallo Möchte ein Poti an einem Atmega 32 auslesen und benutze folgenden C Code. Poti ist am Eingang ADC0 angeschlossen, habe dort immer ein Fehler bei ADC0. Benötigt sbi noch eine zusätzlich Include Datei, weil ich noch ein weiteren Fehler habe,dass sbi undefiniert ist. //Diese Funktion aktiviert den ADC sbi(ADCSRA,ADEN);//ADC aktivieren und sbi(ADCSRA,ADPS1);//Teilungsfaktor auf 8 stellen: sbi(ADCSRA,ADPS0); uint16_t ADC_read(uint8_t ADC0){ //Diese Funktion misst eine Spannung an einem ADC-Kanal //und gibt den entsprechenden digitalen Wert 0 - 1023 (10 Bit) //zurück. //------------------------------------------------------------ ADMUX=ADC0; //Kanal des Multiplexers wählen: sbi(ADCSRA,ADSC);//Messung starten while(bit_is_set(ADCSRA,ADSC));// Auf Ergebnis warten: return ADCW;
Suche die Header Datei <deprecated.h> zum einfügen im AVR Studio, kann mir eventuell einer ein Link posten, oder eine andere Möglichkeit sagen wie ich am besten Analog Eingänge abfragen kann.
Peter Dannegger schrieb: > Laß den sbi-Unsinn. > In C benutzt man =, |=, &=. So ist es. Solche Makros neigen zu Fehlern, weil man oft vergisst was eigentlich gemacht wird bzw. was es genau bewirkt. Also => C Büchlein anschaffen Ingo
Einfach folgende Definitionen in deinen Quelltext kopieren. #define sbi(port, bit) (port) |= (1 << (bit)) #define cbi(port, bit) (port) &= ~(1 << (bit)) Besser wären allerdings andere Namen, um eine Verwechselung mit den gleichnamigen AVR-Assemblerbefehlen zu vermeiden. #define set_bit(port, bit) (port) |= (1 << (bit)) #define clear_bit(port, bit) (port) &= ~(1 << (bit)) Ob das nun die beste Abstraktion zum Setzen und Löschen von Bits ist, sei mal dahingestellt. Aber nach meiner Ansicht immerhin deutlich lesbarer als überall diese Bitschieberei in Kombination mit logischen Operationen. So ein Gemurkse schreit geradezu nach Syntactic Sugar.
Gibt es ein einfaches Beispiel um ein Analog Eingang einzulesen und in einer Variable zu speichern, da ich momentan irgendwie auf dem Holzweg bin. Vielen Dank
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.