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

Thema: ADC0 und ADC1 PullUp einschalten

  1. #1
    Unregistriert
    Gast

    ADC0 und ADC1 PullUp einschalten

    Anzeige

    Praxistest und DIY Projekte
    Ich möchte in meinem Programm ADC0 und ADC1 als Eingang setzten und dazu auch noch den Internen PullUp Widerstand Aktivieren.

    Um diese als eingang zu verwenden nutzt man DDRA &= ~ADC0 bzw.DDRA &= ~ADC1 ist das richtig?
    Und um den Widerstand zu nutzen PORTA |= ADC0 bzw. PORTA |= ADC1 - Richtig?

    Nun die fragen wo muss das im Programm stehen? Wenn ich das einfach in die main Funktion einfüge kommt ein Fehler bei make.

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ddra &=~(1<<pa0)
    porta |=(1<<pa0)
    Gehört natürlich groß geschrieben, wird aber automatisch klein, weiss jetzt nicht warum.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Unregistriert
    Gast
    Wird das einfach in die Hauptfunktion geschrieben?
    Und ist das jetzt für ADC0 oder ADC1?
    Danke

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Das was du als ADC0 und ADC1 bezeichnest sind ja Sonderfunktionen von PA0 und PA1.
    Ich habe jetzt keinen Code vom RP6, aber am Anfang von main kann es nicht falsch sein.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.687
    .. ADC0 und ADC1 bezeichnest sind ja Sonderfunktionen von PA0 und PA1 ..
    Kleine Ergänzung, nur der Vollständigkeit halber: ... Sonderfunktionen beim mega32 bzw. pinkompatiblen Typen dieser Familie ... Das ist der Controller, der am RP6 verwendet wird.
    Bei anderen AVR-Typenreihen kann der Analog-Digital-Converter auch anderswo, z.B. auf Port C sein, Beispiel mega328, dann wäre die Zuweisung entsprechend zu modifizieren. Genaues steht immer im Datenblatt, üblicherweise im Kapitel bzw. Abschnitt Pin Descriptions.
    Ciao sagt der JoeamBerg

  6. #6
    Unregistriert
    Gast
    So ich habe jetzt mal das Prgramm mit
    DDRA |= ADC0; // Pin als Ausgang
    PORTA |= ADC0; // Ausgang auf 1
    PORTA &= ~ADC0; // Ausgang auf 0
    DDRA &= ~ADC0; // Eingang
    PORTA |= ADC0; // Pullup an
    PORTA &= ~ADC0; // Pullup aus
    geschrieben, das habe ich im Internet so gefunden. Mit DDRA &=~(1<<pa0) PORTA |=(1<<pa0) funktioniert es nicht, da kommt ein Fehler bei make.

    Mein Programm sieht jetzt so aus:


    #include "RP6RobotBaseLib.h"

    int main(void)
    {

    DDRA &= ~ADC0; // Eingang
    PORTA |= ADC0; // Pullup an
    DDRA &= ~ADC1; // Eingang
    PORTA |= ADC1; // Pullup an

    initRobotBase();
    startStopwatch1();


    while(true)
    {
    if(getStopwatch1() > 300)
    {
    writeString_P("\nADC Akku: ");
    writeInteger(adcBat, DEC);
    writeString_P("\nADC ADC0 ");
    writeInteger(adc0, DEC);
    writeString_P("\nADC ADC1: ");
    writeInteger(adc1, DEC);
    writeChar('\n');
    setStopwatch1(0);
    }
    task_ADC();
    }
    return 0;
    }


    Nun habe ich Schalter an ADC0 und ADC1 Angeschlossen (zwischen GND und ADC1 bzw. ADC0).
    Wenn beide Schalter offen sind bekomme ich im Terminal jeweils einen Wert von ca. 350 Angezeigt - Ist das normal?
    Wenn ich jetzt den Schalter an ADC1 Schließe geht ADC1 auf 0 und ADC0 bleibt bei 350.
    Wenn ich dann den ADC0 Schalter Schließe geht ADC0 auf 0 aber ADC1 geht ebenfalls auf 0. Das ist nicht normal oder?

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Hab mal die RP6 Libs durchgeschaut. Der ADC ist auf 0 und 1 immer noch aktiv.
    Da müsstest du in der RP6RobotBase.h und in der RP6RobotBaseLib.c einiges ändern und löschen, damit du diese beiden Eingänge als digitale Eingänge verwenden kannst.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Unregistriert
    Gast
    Ok, aber selbst wenn ich diese als Analog Eingänge verwende zeigt ADC1 genau den selben wert wie ADC0 an, obwohl an ADC1 gar nichts angeschlossen ist. Woran liegt das?

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Offene Eingänge zeigen Unsinn an, leg den Eingang auf GND.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. Schalter an ADC0/ ADC1
    Von Stephan90 im Forum Robby RP6
    Antworten: 20
    Letzter Beitrag: 28.07.2013, 22:02
  2. adc0, adc1, scl
    Von Morpheus1997 im Forum Robby RP6
    Antworten: 3
    Letzter Beitrag: 22.07.2011, 11:31
  3. Poti an ADC0/ADC1
    Von neo3000 im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 24.10.2010, 02:09
  4. A/D Wandler freerun ADC0 und ADC1 ohne Interrupt
    Von guenter1604 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 14.12.2009, 13:01
  5. Strommessung (Differenz) über ADC0 und ADC1
    Von RHS im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 19.02.2007, 19:55

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

LiFePO4 Speicher Test