- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: ADC0/1 Eingänge umändern

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2012
    Ort
    Hamburg
    Beiträge
    18
    Blog-Einträge
    2

    ADC0/1 Eingänge umändern

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Brauche auch Hilfe.

    Ich habe vor die Eingänge ADC0/1 als Ausgänge zu beschalten, um etwas anzusteuern. Eine Logik Schaltung.
    Was muss ich dort umschreiben? Weiß das jemand?

    Vielen Dank.

    Hier ist ein auszug aus der Base.h

    #define UBAT (1 << PINA7) // ADC7 (Input)
    #define MCURRENT_L (1 << PINA6) // ADC6 (Input)
    #define MCURRENT_R (1 << PINA5) // ADC5 (Input)
    #define E_INT1 (1 << PINA4) // INT1 (input per default... can be output)
    #define LS_L (1 << PINA3) // ADC3 (Input)
    #define LS_R (1 << PINA2) // ADC2 (Input)
    #define ADC1 (1 << PINA1) // ADC1 (Input)
    #define ADC0 (1 << PINA0) // ADC0 (Input)

    // Initial value of port and direction registers.
    #define INIT_DDRA 0b00000000
    #define INIT_PRTA 0b00000000

    // ---------------------------------------------------
    // PORTA A/D Convertor channels

    #define ADC_BAT 7
    #define ADC_MCURRENT_L 6
    #define ADC_MCURRENT_R 5
    #define ADC_LS_L 3
    #define ADC_LS_R 2
    #define ADC_ADC1 1
    #define ADC_ADC0 0

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Damit:

    #define ADC1 (1 << PINA1) // ADC1 (Input)
    #define ADC0 (1 << PINA0) // ADC0 (Input)

    wird gesagt das ADC0/1 dafür sorgt das eine 1 an die Stelle für PinA0 und A1 geschoben wird, damit der Pin als Eingang fungiert. Wenn du ihn als Ausgang haben möchtest muss an der Stelle eine 0 stehen.
    Das heißt du könntest es so schreiben:

    #define ADC0 (0 << PINA0)
    #define ADC1 (0 << PINA1)

    Das sollte so funktionieren.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Ich hätte Wenkstar ja erst mal durch die Beispiele gescheucht statt ihm ne fertige Lösung zu präsentieren... vorgekaut lernt er weniger. Aber da gibts ja noch nen 2ten Post zum gleichen Thema.. vielleicht nutze ich den dafür. *lach
    lg Rolf
    Sind Sie auch ambivalent?

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von RolfD Beitrag anzeigen
    Ich hätte Wenkstar ja erst mal durch die Beispiele gescheucht statt ihm ne fertige Lösung zu präsentieren... vorgekaut lernt er weniger. Aber da gibts ja noch nen 2ten Post zum gleichen Thema.. vielleicht nutze ich den dafür. *lach
    lg Rolf
    Auch wieder wahr
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Kampi Beitrag anzeigen
    #define ADC0 (0 << PINA0)
    #define ADC1 (0 << PINA1)
    Damit hebst Du die eindeutige Zuordnung eines Pins zu einer Definition auf. Du kannst eine 0 so oft schieben wie Du willst, das #define bleibt immer 0, Du hast damit also beide #defines auf 0 gesetzt.
    Macht keinen Sinn, denn ein Setzen der Pins als Eingang würde so gemacht:
    Code:
    DDRA &= ~(ADC1 | ADC2);
    Das geht nach Deinem Vorschlag nicht mehr.
    Hier wird entschieden, über portInit(), ob der Pin beim Start Ein- oder Ausgang ist und welchen Zustand er hat:
    Code:
    #define INIT_DDRA 0b00000000
    #define INIT_PRTA 0b00000000

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2012
    Ort
    Hamburg
    Beiträge
    18
    Blog-Einträge
    2
    Danke erstmal für die Kommentare.
    Besonders an Robotik Einstein, von den hat man mal eine gute Antwort bekommen.

    Ich wird das mal versuchen.

    Schönen 1 Mai noch

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    Damit hebst Du die eindeutige Zuordnung eines Pins zu einer Definition auf. Du kannst eine 0 so oft schieben wie Du willst, das #define bleibt immer 0, Du hast damit also beide #defines auf 0 gesetzt.
    Macht keinen Sinn, denn ein Setzen der Pins als Eingang würde so gemacht:
    Code:
    DDRA &= ~(ADC1 | ADC2);
    Das geht nach Deinem Vorschlag nicht mehr.
    Hier wird entschieden, über portInit(), ob der Pin beim Start Ein- oder Ausgang ist und welchen Zustand er hat:
    Code:
    #define INIT_DDRA 0b00000000
    #define INIT_PRTA 0b00000000
    Danke für die Korrektur
    Klinkt einleuchtend ^.^
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von MagicWSmoke Beitrag anzeigen
    ... Hier wird entschieden ... ob der Pin beim Start Ein- oder Ausgang ist und welchen Zustand er hat:
    Code:
    #define INIT_DDRA 0b00000000
    #define INIT_PRTA 0b00000000
    Das Datenrichtungsregister und die Portpins beim Start auf Null setzen? Das ist doch überflüssig. Im Nach-Reset-Zustand sind die Ports laut Datenblatt "tri-stated" , auch PUD ist auf Null, also sozuagen eine vollständige Nullnummer - ohne dass man (ich jedenfalls) irgendein Schnippelchen Code braucht. Welchen Grund haben dann diese zwei defines bzw. die Aussage " ... hier wird entschieden ... ob der Pin beim Start ..."?
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Das Datenrichtungsregister und die Portpins beim Start auf Null setzen?
    Die sind halt in der Standardkonfiguration auf 0, das bedeutet ja nicht, dass der Programmierer das so zu lassen hat.
    Das ist doch überflüssig. Im Nach-Reset-Zustand sind die Ports laut Datenblatt "tri-stated" , auch PUD ist auf Null, also sozuagen eine vollständige Nullnummer - ohne dass man (ich jedenfalls) irgendein Schnippelchen Code braucht.
    Ja, ist bekannt. Vor meiner Nachricht hatte ich mir die zugehörigen .c und .h des Projekts angesehen, hättest Du das auch, wäre Dir klar warum Dein Post daneben ging.
    Welchen Grund haben dann diese zwei defines bzw. die Aussage " ... hier wird entschieden ... ob der Pin beim Start ..."?
    Das sind Definitionen die vom Makro portInit() verwendet werden, um die Ports in den vom User gewünschten Anfangszustand zu versetzen.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    11.01.2012
    Ort
    Hamburg
    Beiträge
    18
    Blog-Einträge
    2
    Das hört sich ja alles gut an.

    Vielleicht könnte mir noch jemand sagen wie ich den Port ADC0 in der Programmierung eine 1 verpasse. Laut Euren Aussagen ist er auf 0 geschaltet.

    Das wäre noch sehr hiflreich.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Temperatur über ADC0?
    Von danimath im Forum Robby RP6
    Antworten: 8
    Letzter Beitrag: 01.10.2011, 09:03
  2. adc0, adc1, scl
    Von Morpheus1997 im Forum Robby RP6
    Antworten: 3
    Letzter Beitrag: 22.07.2011, 10:31
  3. Poti an ADC0/ADC1
    Von neo3000 im Forum Robby RP6
    Antworten: 4
    Letzter Beitrag: 24.10.2010, 01:09
  4. ADC0 am RP6
    Von .:Robin:. im Forum Robby RP6
    Antworten: 22
    Letzter Beitrag: 22.03.2009, 11:15

Berechtigungen

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

Labornetzteil AliExpress