Am Programm brauchst du IMHO nix zu ändern, du musst jedoch die Übersetzungs-Optionen auf deinen Controller (ATmegaanpassen, konkret die avr-gcc-Option -mmcu=atmega8 setzen
Hallo ich wollte mich mal mit AD Wandler beschäftigen und habe mir dazu ein Beispielprogramm aus dem Roboternetz Wissen gezogen. Nun möchte ich es auf meinem ARV Spielen. Leider habe ich nur einen ATMEGA 8 und das Programm ist für den ATMEGA 16 Programmiert.
Wie kann man das Programm abändern, so dass es auch auf meinem ATMEGA 8 läuft??
Vielen DANK!!!!!
+ Code-Tag (PicNick)Code:#include <avr/io.h> #include <inttypes.h> uint16_t readADC(uint8_t channel) { uint8_t i; uint16_t result = 0; // Den ADC aktivieren und Teilungsfaktor auf 64 stellen ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // Kanal des Multiplexers waehlen ADMUX = channel; // Interne Referenzspannung verwenden (also 2,56 V) ADMUX |= (1<<REFS1) | (1<<REFS0); // Den ADC initialisieren und einen sog. Dummyreadout machen ADCSRA |= (1<<ADSC); while(ADCSRA & (1<<ADSC)); // Jetzt 3x die analoge Spannung and Kanal channel auslesen // und dann Durchschnittswert ausrechnen. for(i=0; i<3; i++) { // Eine Wandlung ADCSRA |= (1<<ADSC); // Auf Ergebnis warten... while(ADCSRA & (1<<ADSC)); result += ADCW; } // ADC wieder deaktivieren ADCSRA &= ~(1<<ADEN); result /= 3; return result; } int main(void) { uint16_t result = readADC(0); //Auslesen der analogen Spannungen an Pin 0, // also ADC0. In result steht das Ergebnis. result = result + 1; return 0; }
Am Programm brauchst du IMHO nix zu ändern, du musst jedoch die Übersetzungs-Optionen auf deinen Controller (ATmegaanpassen, konkret die avr-gcc-Option -mmcu=atmega8 setzen
Disclaimer: none. Sue me.
Was ist IMHO?
Ich verwende AVR-Studio 4 und habe die übersetztungsoption auf den ATMEGA 8 151 umgestellt, aber dann bringt er mir beim kompilern (heißt das glaube ich) folgende Fehlermeldungen:
Build started 11.7.2006 at 18:30:37
avr-gcc.exe -mmcu=atmega8515 -Wall -gdwarf-2 -O0 -fsigned-char -MD -MP -MT AD_Wandler.o -MF dep/AD_Wandler.o.d -c ../AD_Wandler.c
../AD_Wandler.c: In function `readADC':
../AD_Wandler.c:9: error: `ADCSRA' undeclared (first use in this function)
../AD_Wandler.c:9: error: (Each undeclared identifier is reported only once
../AD_Wandler.c:9: error: for each function it appears in.)
../AD_Wandler.c:9: error: `ADEN' undeclared (first use in this function)
../AD_Wandler.c:9: error: `ADPS2' undeclared (first use in this function)
../AD_Wandler.c:9: error: `ADPS1' undeclared (first use in this function)
../AD_Wandler.c:12: error: `ADMUX' undeclared (first use in this function)
../AD_Wandler.c:14: error: `REFS1' undeclared (first use in this function)
../AD_Wandler.c:14: error: `REFS0' undeclared (first use in this function)
../AD_Wandler.c:17: error: `ADSC' undeclared (first use in this function)
../AD_Wandler.c:28: error: `ADCW' undeclared (first use in this function)
make: *** [AD_Wandler.o] Error 1
Build failed with 11 errors and 0 warnings...
Wenn ich das auf ATMEGA 16 stell, dann gehts aber leider hab ich kein ATMEGA 16.
Danke
Kollege :
1 IMHO heißt, "Meiner Meinung nach"
2 ATmega 8 ist NICHT GLEICH ATmega8151
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Sorry ich bin noch anfänger.
Ich hab einen AT MEGA 8 151 und das hab ich eingestellt, und dann bringt der mir die oben genannten Fehlermeldungen beim kompillern.
Kannst du mir da weiterhelfen?
Bitte
Ich meine AT MEGA 8 515
Der Atmeg8515 hat zwar einen Analog-Comperator, aber keinen AD-Wandler, d.h. das Beispiel wird nicht gehen.
Der Compiler meckert, weil es da eben diese Schalter nicht gibt
Ich hoff', du hast da nicht jetzt Geld in den Sand gesetzt ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Danke für die Antwort!
Ne ich hab kein Geld in den Sand gesteckt!
Ich wollte mich nur mal allgemein mit AVRs beschäftigen. Ich bin erst 16 und mich begeistert Robotik! Ich hab nen CC RP5 Roboter.
ich hab so gar schon Spannungen mit den AVRs getaktet und ein Lauflicht programmiert, da wo ein Punkt hin und her läuft und einen Schatten, der immer dünkler wird hinterlässt.
Ich hab noch andere AVRs aber halt net den MEGA 16 ich werde es jetzt mal mit ein par anderen ausprobieren.
Weist du ne internetseite, wo es alle ARVs im überblick giebt?
Also ne Liste und Pinbelegungspläne?
Danke
Na, dann bin ich froh !
Schau, wir haben da auch eine Wiki , da werden sie geholfen !
https://www.roboternetz.de/wissen/index.php/AVR
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
einen guten Überblick gibts auch auf folgender Seite von atmel: http://www.atmel.com/dyn/products/pa...&Direction=ASC
nach gerade genannter Tabelle hat der ATMega8515 nicht mal einen Analog-ComparatorDer Atmeg8515 hat zwar einen Analog-Comperator
Lesezeichen