PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AD Wandler "von Hand" einschalten



sia_asuro_08
20.05.2008, 12:32
Hallo zusammen,

wir programmieren unseren ASURO für ein Schulprojekt. Dafür haben wir uns nun auch den Ultraschallsensor und das Buch "Mehr Spass mit ASURO Band 1" zugelgt.

Wenn wir den Ultraschallsenso einbauen läuft das auch ohne Probleme.

Nun zu unserem Problem:

In unserem Projekt wollen wir zuerst den Ultraschallsensor benutzen und danach die Kollisiontstaster. Also müssen wir den AD Wandler zuerst ausschalten, damit der Ultraschallsensor funktioniert.

Dies ist im Buch ja mit ADCSRA = 0x00 beschrieben. Damit ich danach aber die Kollisionstaster wieder verwenden kann muss der AD Wandler ja wieder eingeschaltet werden.

Welchen Wert muss ich dazu benutzen? Mit 0x01 klappts nicht hab ich schon probiert. Bzw. muss ich noch mehr Werte wieder zurückändern bevor ich die Taster wieder verwenden kann?

MFG

radbruch
20.05.2008, 12:49
Hallo

In asuro.c wird der ADC so initialisiert (enable und perscaler):

// A/D Conversion
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); // clk/64

Im Zweifel würde es wohl reichen erneut Init() aufzurufen.

Gruß

mic

sia_asuro_08
20.05.2008, 14:13
Danke für die schnelle Antwort.

Es scheint zu funktionieren, allerdings hab ich nun ein anderes Problem.

Wenn ich meinen Selbstgeschriebenen Programmcode compilieren möchte, bekomme ich die Fehlermeldung das count72kHz dicht deklariert ist.

Aber diese Variable bekommt er ja eigentlich aus der Asuro Lib.

Das müsste doch mit der Standard Lib funktionieren oder? Es ist ja auch in der asuro.c definiert da hab ich schon nachgeschaut.
Ich verstehs jetzt nicht wirklich warum er nicht auf die Bibliothek zugreift damit er weiß wo das Teil herkommt.

MFG

radbruch
20.05.2008, 14:55
Hallo

Um auf Variablen aus der Lib im Hauptprogramm zugreifen zu können muss man sie im Hauptprogramm nochmals als "extern" deklarieren:

extern volatile unsigned char count72kHz;

btw: Die Variable count72kHz heißt in den neueren Libraries mit 36kHz-Timer count36kHz. (Wer hätte das gedacht *grins*)

Gruß

mic

sia_asuro_08
20.05.2008, 15:00
es ist schon die 72kHz hab ja extra in der Lib nachgeschaut. ;)

allerdings versteh ich es nicht warum er dann die ganzen anderen Sachen findet aber eine Variable nicht.

Wenn ich eine Funktion benutze die in der Lib benutzt wird schaut er ja auch in der Lib nach wenn sie im Programmcode nicht deklariert wurde.

Warum klappt das dann mit den Variablen nicht?

MFG

Edit: Wenn ich ihm sage das er "extern" nach der Variable suchen soll, woher weiß er dann wo er suchen soll.. irgendwie bezweifel ich, dass er macht was er soll.

also wenn ich es so versuche klappt es schonmal nicht, allerdings kann ich nicht behaupten das ich weiß woran der fehler liegt. ^^

Es kann durchaus auch an meiner Programmierung liegen...