-
        

Ergebnis 1 bis 8 von 8

Thema: [gelöst]Wie sind die 6 LEDs mit dem PORTB verbunden?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    11

    [gelöst]Wie sind die 6 LEDs mit dem PORTB verbunden?

    Anzeige

    Hi,

    ja also habe mich gleich ins zeug gelegt und mit Assembler angefangen. Ist wirklich besser!

    Habe aber schon die ersten Fragen. So wie ich wusste, dass oder denke, dass die LEDs am PORTB sind. Scheint so weit auch zu stimmen. Lade ich aus einem Register mit dem Wert 0b11 ins PORTB gehen die letzten zwei LEDs an. Interessant nur, hänge ich noch mehr einsen dran, gehen trotzdem nicht mehr LEDs an. Habe schon gedacht, dass nur zwei Bit pro OUT command eingeladen werden. Aber der Simulator von AVR Studio zeigt was anderes an.

    Was ist der Hintergrund? Sind die LEDs komplex gekreutzt angeschlossen? Oder sieht die Praxis noch mal anders aus als der Simulator?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Ein Blick in die Schaltpläne des RP6 hilft.
    Da erkennst Du, dass nur 3 LEDs am PortB angeschlossen sind. SL5 und SL6 an PB1 und PB0 kannst Du ja auch problemlos nutzen. SL4 ist zwar auch an PortB (PB7) angeschlossen, kann aber nur genutzt werden, wenn das ISP-Interface nicht benutzt wird.
    Die restlichen LEDs hängen an PC4-6.

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Ich würde sagen du solltest einen Blick in den Schaltplan werfen.
    Auf meinem hängen die Leds auf PB0, PB1, PB7, PC4-5.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Hallo,

    Mikrocontroller haben fast immer diverse Hardwaremodule fix auf bestimmte Pins gelegt (I2C, UART, PWMs, ADCs, usw) und das natürlich über alle Ports verteilt und somit ist keiner der Ports komplett frei für 6 Status LEDs.

    Die LEDs sind völlig unkritische Komponenten und können daher einfach an den Pins angeschlossen werden die übrig bleiben.

    Einzelne LEDs setzen ist also kein Problem - um alle gemeinsam zu setzen musst Du Dir eine passende Funktion schreiben.
    (s. RP6RobotBaseLib.c Zeile 104 bis 141 - sieht komplizierter aus als es ist )

    Beim RP6 können die LED Ports auch noch als Eingänge verwendet werden. An SL3 und SL6 hängen zusätzlich z.B. die Bumper des RP6 mit dran. Um die auszuwerten muss man einfach nur kurz die Portrichtung umschalten (das geht so schnell das man das natürlich nicht sehen kann).

    -----
    Noch ein paar allgemeine Hinweise:
    -----

    Du kannst natürlich die RP6Lib teilweise als Vorlage verwenden und davon das was Du brauchst in Assembler umsetzen. Ein paar Sachen darin sind nicht ganz so trivial wie LEDs setzen - z.B. die ACS Ansteuerung.


    Die Pinbelegung und die standard Pinrichtungen und Pegel findest Du z.B. in rp6lib/rp6base/RP6RobotBase.h


    Das solltest Du auch so übernehmen.
    Also was Eingang/Ausgang ist und was im Ausgangszustand auf low/high steht. Im Programm selbst muss man das dann teilweise dynamisch wieder ändern damit es funktioniert.


    Vorsicht bitte insbesondere beim IRCOMM Pin (da hängen über ein MOSFET die beiden nach oben gerichteten IR Sendedioden dran)!
    Den Pin dauerhaft auf low Pegel schalten (DDRD Pin7 = 0 und PORTD Pin7 = 0 ) bevor Du Dir nicht im Umgang mit den Timern sicher bist. Wenn Du keine Infrarot Kommunikation zwischen zwei RP6 Bots realisieren möchtest - lass den Pin am besten erstmal ganz in Ruhe
    Die IR LED darf mit hohem Strom gepulst werden um die Reichweite zu erhöhen aber eben nicht dauerhaft damit belastet werden. 5kHz Modulationsfrequenz sollten es minimal schon sein, Sollfrequenz ist 36kHz.

    Wie man das implementieren kann siehst Du in der RP6RobotBaseLib.c ab Zeile 1060
    (ISR (TIMER2_COMP_vect) ),
    da ist auch gleich die Ansteuerung der ACS IR LEDs mit dabei, die sind aber unkritisch da hier nur sehr geringe Ströme geschaltet werden.


    Wichtig ist noch die Timer Initialisierung für die Motoransteuerung.

    Am besten die Registereinstellungen aus
    void initRobotBase(void) (Zeile 1757)
    übernehmen damit alles passend ist.


    MfG,
    SlyD

    PS:
    Bitte keine Crosspostings (http://www.arexx.com/forum/viewtopic.php?t=881 ) mehr,
    das gilt allgemein in jedem Forum als schlechter Stil.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    11
    Zitat Zitat von askazo
    Ein Blick in die Schaltpläne des RP6 hilft.
    Da erkennst Du, dass nur 3 LEDs am PortB angeschlossen sind. SL5 und SL6 an PB1 und PB0 kannst Du ja auch problemlos nutzen. SL4 ist zwar auch an PortB (PB7) angeschlossen, kann aber nur genutzt werden, wenn das ISP-Interface nicht benutzt wird.
    Die restlichen LEDs hängen an PC4-6.

    Gruß,
    askazo
    Danke! Ich konnte dem Schaltplänen sofort die nötigen Daten entnehmen! Geht ja schnell hier! Super! Jetzt leuchten bei mir alle 6 LEDs!
    Nice, Assember is's funny!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    01.07.2008
    Beiträge
    11
    Zitat Zitat von SlyD
    Hallo,

    Mikrocontroller haben fast immer diverse Hardwaremodule fix auf bestimmte Pins gelegt (I2C, UART, PWMs, ADCs, usw) und das natürlich über alle Ports verteilt und somit ist keiner der Ports komplett frei für 6 Status LEDs.

    Die LEDs sind völlig unkritische Komponenten und können daher einfach an den Pins angeschlossen werden die übrig bleiben.

    Einzelne LEDs setzen ist also kein Problem - um alle gemeinsam zu setzen musst Du Dir eine passende Funktion schreiben.
    (s. RP6RobotBaseLib.c Zeile 104 bis 141 - sieht komplizierter aus als es ist )

    Beim RP6 können die LED Ports auch noch als Eingänge verwendet werden. An SL3 und SL6 hängen zusätzlich z.B. die Bumper des RP6 mit dran. Um die auszuwerten muss man einfach nur kurz die Portrichtung umschalten (das geht so schnell das man das natürlich nicht sehen kann).

    -----
    Noch ein paar allgemeine Hinweise:
    -----

    Du kannst natürlich die RP6Lib teilweise als Vorlage verwenden und davon das was Du brauchst in Assembler umsetzen. Ein paar Sachen darin sind nicht ganz so trivial wie LEDs setzen - z.B. die ACS Ansteuerung.


    Die Pinbelegung und die standard Pinrichtungen und Pegel findest Du z.B. in rp6lib/rp6base/RP6RobotBase.h


    Das solltest Du auch so übernehmen.
    Also was Eingang/Ausgang ist und was im Ausgangszustand auf low/high steht. Im Programm selbst muss man das dann teilweise dynamisch wieder ändern damit es funktioniert.


    Vorsicht bitte insbesondere beim IRCOMM Pin (da hängen über ein MOSFET die beiden nach oben gerichteten IR Sendedioden dran)!
    Den Pin dauerhaft auf low Pegel schalten (DDRD Pin7 = 0 und PORTD Pin7 = 0 ) bevor Du Dir nicht im Umgang mit den Timern sicher bist. Wenn Du keine Infrarot Kommunikation zwischen zwei RP6 Bots realisieren möchtest - lass den Pin am besten erstmal ganz in Ruhe
    Die IR LED darf mit hohem Strom gepulst werden um die Reichweite zu erhöhen aber eben nicht dauerhaft damit belastet werden. 5kHz Modulationsfrequenz sollten es minimal schon sein, Sollfrequenz ist 36kHz.

    Wie man das implementieren kann siehst Du in der RP6RobotBaseLib.c ab Zeile 1060
    (ISR (TIMER2_COMP_vect) ),
    da ist auch gleich die Ansteuerung der ACS IR LEDs mit dabei, die sind aber unkritisch da hier nur sehr geringe Ströme geschaltet werden.


    Wichtig ist noch die Timer Initialisierung für die Motoransteuerung.

    Am besten die Registereinstellungen aus
    void initRobotBase(void) (Zeile 1757)
    übernehmen damit alles passend ist.


    MfG,
    SlyD

    PS:
    Bitte keine Crosspostings (http://www.arexx.com/forum/zeigebeitrag.php?t=881 ) mehr,
    das gilt allgemein in jedem Forum als schlechter Stil.
    uuuuaarrgg du bist ja schreibwütig - das ist schon zu viel des guten, brauche nur Fakten, wie Paragraphen

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Hehe sorry kann recht schnell tippen da passieren solche Romane dann schonmal

    Die Hinweise da waren ja auch nicht nur auf die LEDs bezogen sondern allgemein wenn man ohne die RP6Library arbeitet.

    MfG,
    SlyD

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Zitat Zitat von LiGERWooD
    Danke! Ich konnte dem Schaltplänen sofort die nötigen Daten entnehmen! Geht ja schnell hier! Super! Jetzt leuchten bei mir alle 6 LEDs!
    Bitte, nichts zu danken.

    Nice, Assember is's funny!
    Naja, das sieht wohl jeder anders...
    Ich für meinen Teil bleib bei C....

    Gruß,
    askazo

Berechtigungen

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