-         

Ergebnis 1 bis 3 von 3

Thema: RN-Control 1.4 PortA == Eingang??? (AVR Studio, C)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.07.2012
    Beiträge
    24

    RN-Control 1.4 PortA == Eingang??? (AVR Studio, C)

    Anzeige

    Hallo!
    Ich möchte gerne einen digitalen Sensor (der bei einem Abstand von 0-15cm ca. 0,3V und bei einem Abstand von 15-30cm ca. 0,6V ausgibt),
    an den PortA(PA0) anklemmen.
    Allerdings konnte ich davor auch eine LED zum leuchten bringen mit der Anweisung:
    setportaon(0);

    OBWOHL am Anfang von main() : DDRA |= 0x00; //00000000 -> alle Analogports als Eingänge steht.
    ->wo ich den Sinn dann schon nicht mehr verstehe... Port A ist scheinbar komplett ein Eingang, wie konnte die LED leuchten?
    (setzt etwa setportaon(0) automatisch die Bits auf "1"?)


    Habe halt Angst das ich den Sensor nun kaputt mach, wenn ich ihn an PA0 steck.

    Also meine Fragen:
    (1) Wie kann ich ein Port (z.B. PA0) als Eingang deklarieren?
    (2) Wie müsste anschliessend das Schlüsselwort lauten, um festzustellen ob an PA0 mehr als 0,3V anliegen?



    PS:
    Der Sensor ist ein GP2D150A

    Vielen Dank!

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    PORTA ist erst mal ein ganz normaler digitaler I/O. Mit DDRA |= 0x00; sind alle Pin digitale Eingänge.
    Erst wenn du den ADC an einem Pin von PortA aktivierst wird er zum analogen Eingang.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    08.07.2012
    Beiträge
    24
    Okay danke, scheint wohl komplizierter zu werden als ich angenommen hatte ^^

    Ich werd jetzt einfach mal das Beispielprogramm von "rn-wissen" testen:
    (in der Hoffnung das PIN 0 auch PINA.0 ist

    #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
    // Interne Referenzspannung verwenden (also 2,56 V)
    ADMUX = channel | (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.
    return 0;
    }

Ähnliche Themen

  1. problem mit rn control PORTA
    Von florian1991 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 19
    Letzter Beitrag: 22.01.2009, 22:38
  2. RN-Control mit AVR-Studio programmieren
    Von matzy im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 02.04.2007, 09:52
  3. M161/M162 Problem mit Eingang PortA.1
    Von wolfgang köck im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 10.02.2006, 07:52
  4. Antworten: 1
    Letzter Beitrag: 25.01.2006, 21:27
  5. rn-control mit avr-studio
    Von masterchiefsupervisor im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 3
    Letzter Beitrag: 07.12.2005, 15:47

Berechtigungen

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