- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Welches Register muss ich auf welchen Wert setzen?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385

    Welches Register muss ich auf welchen Wert setzen?

    Anzeige

    Praxistest und DIY Projekte
    Hi,
    ich hab gerade die Doku des rnbfra 1.1 und die vom atmega32 vor mir liegen. Ich will herausfinden, was ich machen muss, damit eines der 4 LEDs auf dem Board leuchtet. Ich bin allerdings leicht ratlos. Man müsste dazu doch herausfinden, wie die LEDs an den atmega32 angeschlossen sind und dann welches Register für diesen Anschluss verantwortlich ist. Stelle ich mir das so richtig vor?
    Das Problem ist eben, dass ich keine Informationen darüber habe / finde wo die angeschlossen sind.
    Wäre nett, wenn mir da jemand helfen kann, dann schaff ich das in Zukunft vielleicht / hoffentlich alleine.

    mfg
    jagdfalke

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    36
    Beiträge
    826
    Also ich hab das Board zwar nicht, aber ich geh doch mal stark davon aus, dass es dazu einen Schaltplan gibt. Du musst einfach schauen an welchem Port und welchem Pin die LED angeschloßen ist und das kannst du dann ansprechen.
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Wenn Du keinen Schaltplan finden solltest, kannst Du auch relativ leicht ausprobieren, auf welchem Port die LEDs sind.

    Einfach ein kleines Programm schreiben:

    Code:
    #include <avr/io.h>
    
    int main(void)
    {
    //erst mal alle PORTS als Ausgänge definieren
    DDRA = 0xFF;
    DDRB = 0xFF;
    DDRC = 0xFF;
    DDRD = 0xFF;
    
    //jetzt bei einem einzelnen Port alle Ausgänge auf 1 schalten
    //alle anderen bleiben aus
    PORTA = 0xFF;
    PORTB = 0x00;
    PORTC = 0x00;
    PORTD = 0x00;
    
    while(1)
    {
    }
    
    }
    Jetzt mußt Du einfach 4 Mal das programm in den AVR laden. nach jedem mal setzt Du ein anderes PORT-Register auf 0xFF. Wenn die LEDs leuchten, hast Du das richtige Register erwischt.

    Es kann natürlich auch sein, dass die LEDs mit Low-Pegel eingeschaltet werden. Dann musst Du einfach darauf achten, wann die LEDs ausgehen...

    Um Vernünftig mit dem Board zu arbeiten, ist allerdings eine Schaltplan beinahe lebenswichtig....

    askazo

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    So einfach isses nicht, der Schaltplan ist doch einigermassen komplex.
    Am besten gehst du mit den Beispielprogrammen vor. Da werden die einzelnen Komponenten in Betrieb genommen und da kann man am effektivsten erkennen, an welchen Strippen man jeweils ziehen muß
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Warum ist's nicht so einfach? So komplex kann der Schaltplan nicht sein, dass man die LEDs darauf nicht bis zum Port zurückverfolgen könnte...

    Wenn's Beispielprogramme für das Board gibt - umso besser. Damit kann man am einfachsten rausfinden, was wo ist.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Also das Testprogramm hat keinen Einfluss auf die LEDs. Die haben die ganze Zeit geleuchtet, egal was ich gemacht habe.
    Hier ist ein Beispielprogramm in Bascom aus dem ich habe nix rauslesen kann:
    Code:
    '###################################################
    'Testprogramm 1
    'fr
    'RoboterNetz Standard-Roboter Board RBNFRA 1.1
    '
    'Aufgabe:
    'Ausgabe ber PowerPort per I2C testen indem
    'die vier Leds im lauflichtartig leuchten
    '
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de
    '###################################################
    
    
    Const Writepowerport_adr = &H72                             'I2C Adr PCF 2
    Const Readpowerport_adr = &H73                              'I2C Adr PCF 2
    
    Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574
    
    
    Dim I As Byte
    
    $crystal = 8000000                                          'Quarzfrequenz
    Config Scl = Portc.0                                        'Ports fuer IIC-Bus
    Config Sda = Portc.1
    
    I2cinit
    
    I = 0
    I2cdaten = 1
    Do
       I2cdaten = I2cdaten * 2
       If I2cdaten > 16 Then I2cdaten = 1
    
       I2cstart
       I2cwbyte Writepowerport_adr                              'Schreibbefehl an PCF schicken
       I2cwbyte I2cdaten                                        'Datenbyte an PCF
       I2cstop
       Incr I
       Waitms 100
    Loop
    
    
    
    
    End
    Mit diesem Schaltplan komm ich irgendwie nicht klar. Ich finde nicht mal den Hauptprozessor

    Noch ne Frage zum Code:
    Du sagst "alle Ports aus Ausgänge definieren" und schreibst z.B."DDRA = 0xFF;". Dann sollen wieder einzelne Ports auf 1 geschaltet werden. Dieses Mal ist ein Port aber "PORTA". Wie kommt man denn von "DDRA" auf "PORTA" ??? Du schreibst halt beide Male "Port", des iritiert mich irgendwie.

    mfg
    jagdfalke

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Hm, wenn Du mir mal den Schaltplan zukommen lassen könntest, könnte ich vielleicht weiterhelfen. Im Bascom-Beispiel werden die LEDs per I2C-Bus angesprochen, aber das ist eigentlich schon wieder einen Schritt zu weit für den Anfang.

    Zu den Registern: Zu jedem Port gehören 3 8-Bit-Register. Jedes Bit steht für einen Pin des Ports.

    DDR: (Data Direction Register) Hier bestimmst Du, ob ein Pin als Eingang oder als Ausgang konfiguriert wird. Setzt Du ein Bit auf 1, ist der zugehörige Pin als Ausgang konfiguriert. Setzt Du ihn auf 0, ist's ein Eingang.

    PORT: Dieses Register hat nur Auswirkungen auf die als Ausgang konfigurierten Pins. Schreibst Du eine 1 in ein Bit, führt der dazugehörige Ausgang logisch 1 (5V). Schreibst Du eine 0 rein, hat er logisch 0 (0V).

    PIN: (Port In) Dieses Register dient zum Einlesen der als Eingang konfigurierten Pins. Legst Du 5V an einen Eingang, steht in dem zum Eingang gehörenden Bit eine 1. Legst Du 0V an, steht eine 0 drin.

    askazo

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Ahja, so langsam kommt etwas Klarheit in die Sache rein.

    Der Schaltplan ist als Attachment angehängt.

    mfg
    jagdfalke
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken schaltplanv_rnbfra1.gif  

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    49
    Beiträge
    1.146
    Hm, die LEDs können auf dem Bord tatsächlich nur über I2C-Bus angesteuert werden. Da ich mit I2C noch nicht gearbeitet habe, kann ich Dir da aus dem Stehgreif leider auch nicht weiterhelfen. Aber es gibt sicher genug Leute hier, die sich damit auskennen.

    PS: Der Hauptprozessor ist auf dem Schaltplan gleich unter dem Coprozessor...

    askazo

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.02.2005
    Beiträge
    385
    Danke für deine Mühe askazo. Dann warte ich mal auf andere Beiträge darüber.

    Aber wenn I2C am Anfang zu schwer ist, mit was soll ich denn dann mal anfangen? Ich mein LEDs sind ja jetzt nicht gerade sehr anspruchsvoll. Auf welche Pins wirkt sich denn dein Code von oben überhaupt aus?

    zum Schaltplan:
    Yeah, ich hab den Controller jetzt auch gefunden
    Schau dir mal PD0 und PD1 an. Da steht dich RX und TX daneben. Haben die nix mit UART zu tun? Oder hat UDR aus deinem Code garnix damit zu tun?

    mfg
    jagdfalke

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests