-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: SCL Pin schalten

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    24
    Beiträge
    188

    SCL Pin schalten

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo erstmal.

    Falls ich ein neues Thema eröffnet habe und es schon eines gibt, entschuldige ich mich dafür, aber ich habe irgendwie bei meiner langen Suche nichts passendes gefunden.

    Man findet diverse Programme, Codes und sonst was um ein Servo (z.B.) über den SCL Pin zu steuern. Diese ganzen Dinge funktionieren auch perfekt, aber es müsste theoretisch doch möglich sein, den SCL genau so wie die LEDs auf der BasePlatine von LOW auf HIGH zu setzten.
    Bei den LEDs kann man ja auch setLed(0b...) verwenden. Es müsste doch so einen ähnlichen Befehl für den SCL Pin auch geben, genau so wie für INT1-3 ... auch wenn diese schon anders verwendet werden.

    Gibt es einen so einen Befehl überhaupt???

    Ich würde mich sehr über hilfreiche Antworten freuen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    30
    Beiträge
    220
    Hallo, ja den gibt es natürlich.

    DDRC |= SCL //SCL als Ausgang definieren

    PORTC |= SCL //SCL high

    PORTC &=~ SCL //SCL low




    mfg

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    ist die defintion von SCL irgendwo in der RP6 lib zu finden ?
    ich meine dass das so "einfach" nicht funktioniert!

    exakt müsste es heissen
    Code:
    DDRC |= (1<<PCn); //SCL als Ausgang definieren
    
    PORTC |= (1<<PCn); //SCL high
    
    PORTC &=~ (1<<PCn); //SCL low
    wobei das kleine n durch die pinnummer des SCL pin ersetzt werden muss ... ausserdem gibt das makro PCn (und SCL vermultich auch) nur die bitposition des pins im register wieder, daher muss man eine 1 um n bits nach links schieben um den entsprechenden pin auch anzusteuern ... sonst kommt da nur die binäre darstellung den zahl hinter SCL raus vermutlich

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    kann ich scl auch von der m32 aus auf high/low setzen, diese ist ja mit dem scl vom rp6 über den Xbus verbunden?
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Wenn mehrere Geräte am I2C Bus angeschlossen sind, sollte man diesen üblicherweise auch als I2C Bus verwenden und für nix anderes
    Wenn nur ein Mikrocontroller dranhängt ists natürlich egal und man kann mit den Pins machen was man will.


    Wenn mehrere Controller am Bus hängen, Du aber auf den Bus verzichten kannst, musst Du sicherstellen das der Pin niemals aktiv auf HIGH geschaltet wird.
    Das erledigt der Pullup Widerstand auf dem Mainboard.
    Alle am I2C Bus angeschlossenen Geräte schalten nur nach LOW.
    Um high pegel zu schalten muss der Pin als EINGANG konfiguriert werden (DDRC Register).


    MfG,
    SlyD

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    22
    Beiträge
    527
    gut zu wissen wenn mir mal ein einziger i/0 fehlt
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    moooohment, wenn auf dem board ein pull UP ist, muss man den pin auf ausgang schalten und kann dann auf LOW ziehen ... denn high ist er ja schon!

    oder meinst du jetzt statt das PORT register zu bedienen einfach das DDR register toggeln?

    also DDRC &= ~(1<<SCL); um den pin (im PORT register steht ne 0) auf high-z zu schalten und das signal vom pullup auf high bringen zu lassen

    und DDRC |= (1<<SCL); um den pin auf ausgang und gleichzeitig GND zu bringen (imt PORT steht ja noch 0)und damit das signal auf GND zu ziehen ?!

    so müste es gehen ... kenne mich mit dem RP6 schaltplan ja leider nicht aus ^^

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Das ist nichts RP6 spezifisches - so funktioniert nunmal den I2C Bus.
    Es wird nicht aktiv auf high getrieben - das erledigt nur der Pullup der Pin ist dann hochohmig.
    Das muss so sein damit mehrere Geräte (vor allem bei Multimaster) am Bus arbeiten können ohne Kurzschlüsse zu verursachen.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.383
    ja ok klingt logisch ich wollts nur nochmal in code festgehalten und bestätigt haben

    damit dann keiner den code ganz oben benutzt und sich damit sein I2C zerschiesst ^^

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    24
    Beiträge
    188
    Danke für euere schnellen Antworten.

    Wenn ich Ceos nun richtig verstanden habe dann müsste man den SCL so ansteuern können:

    14 Pins --> SCL am 10. Pin

    DDRC |= (1<<PC9); //SCL als Ausgang definieren

    PORTC |= (1<<PC9); //SCL high

    PORTC &=~ (1<<PC9); //SCL low

    Stimmt die Zahl nach PC oder ist damit etwas anderes gemein ... werde aus dem PCn nicht ganz schlau!

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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