PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger: Problem mit Beispielprogramm



jojo.glaser
11.07.2006, 15:58
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!!!!!



#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;
}

+ Code-Tag (PicNick)

SprinterSB
11.07.2006, 16:18
Am Programm brauchst du IMHO nix zu ändern, du musst jedoch die Übersetzungs-Optionen auf deinen Controller (ATmega8) anpassen, konkret die avr-gcc-Option -mmcu=atmega8 setzen

jojo.glaser
11.07.2006, 18:33
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

PicNick
11.07.2006, 19:04
Kollege :
1 IMHO heißt, "Meiner Meinung nach"
2 ATmega 8 ist NICHT GLEICH ATmega8151

jojo.glaser
11.07.2006, 19:14
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

jojo.glaser
11.07.2006, 19:15
Ich meine AT MEGA 8 515

PicNick
11.07.2006, 19:24
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 ?

jojo.glaser
11.07.2006, 19:40
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

PicNick
11.07.2006, 20:14
Na, dann bin ich froh !

Schau, wir haben da auch eine WIki , da werden sie geholfen !

https://www.roboternetz.de/wissen/index.php/AVR

Pascal
12.07.2006, 08:41
einen guten Überblick gibts auch auf folgender Seite von atmel: http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC



Der Atmeg8515 hat zwar einen Analog-Comperator

nach gerade genannter Tabelle hat der ATMega8515 nicht mal einen Analog-Comparator

PicNick
12.07.2006, 09:46
..ATMega8515 nicht mal einen Analog-Comparator..

Meine Weisheit stammt aus dem Datasheet. Kann nix zu sagen.