- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: AD Wandler "von Hand" einschalten

  1. #1

    AD Wandler "von Hand" einschalten

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    In asuro.c wird der ADC so initialisiert (enable und perscaler):
    Code:
    	// A/D Conversion
    	ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); // clk/64
    Im Zweifel würde es wohl reichen erneut Init() aufzurufen.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    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

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    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
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    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...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests