- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: RNBFRA-CO als I2C Slave

  1. #11
    Erfahrener Benutzer Roboter Experte Avatar von marvin42x
    Registriert seit
    02.08.2005
    Ort
    Berlin
    Alter
    75
    Beiträge
    703
    Anzeige

    Powerstation Test
    *Hellhörig werd* 2 RNBFRA?
    Sprung in die Kiste 2.RNBFRA rausgezerrt und auf den Tisch gelegt.
    Wie würde man das Thema denn angehen?
    Nur mal so als Überlegung.
    Auf dem 2.RNBFRA der Mega32 als Multimaster auf welchem Bus?

    Neugierige Gruß
    Die ersten zehn Millionen Jahre waren die schlimmsten. Und die zweiten Zehn Millionen Jahre, die waren auch die schlimmsten.url

  2. #12
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Morjen !
    Die zwei RNBFRA würden über das I2C Kabel einfach verbunden werden, dann sind die beiden Busse einer. Master sind dann 2 x ATMEGA und (2x 2313, wenn's gut genug klappt, oder die 2313 sind eben auch 2 Slaves)

    Problem: die PCF-Expander auf den Boards brauchen unterschiedliche Adressen, logo. oder man wechselt auf die andere Serie
    https://www.roboternetz.de/wissen/in...%C3%9Cbersicht

    Die Atmegas (oder einer) sind das Tor zur RS232 Welt. (RN-Comm)

    Das ist dann ein WWW

    (Werkstatt-wide-web)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Servos ansteuern

    Das ...
    Problem: die PCF-Expander auf den Boards brauchen unterschiedliche Adressen
    ... habe ich so gelöst, wie PicNick gesagt hat:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=19498

    Mit den wählbaren Adressen für den Co wäre das schon fein, aber ich will nicht wirklich beide Cos mit Servos behängen.
    Ein anderes Prob: Auf meiner 2. RNBFRA sitzt kein AT90S2313, sondern ein ATtiny2313 und der spuckt Galle, wenn er die Servos steuern soll.
    Ist das Prog reif für beide?
    Sonst: Tests klappen wunderbar, ich bin begeistert.

    P.S.:
    Ich hab keine Pins auf dem 2313, die man jumpern könnte.
    Wie wär's mit PD4? Allerdings muss man dann unten rumlöten.

    Gruß Dirk

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2006
    Beiträge
    5
    Hübsches Programm, das hatte ich schon lange erhofft, prima Arbeit. Könntest du vielleicht das Servoprogramm noch für den AT90S2313 kompilieren? Dann sollte das auch auf meinem RNBRFA 1.22 laufen...

    Vielen Dank.

  5. #15
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    At90S2313 / Attiny2313
    Ich glaub', der Tiny ist Pinkompatibel, ist ja auch der Nachfolger. Muß mir mal die Datasheets anschauen, ob's da was hat. Wahrscheinlich muß ich nur auf "Tiny" kompilieren.
    Adresse: Ich glaub, für's erste mach ich das einfach mit einem Befehl "adresse setzen" und merken im EERAM. Löten is weniger gut, glaub ich. Wenn man die vergebene adresse doch vergessen hat, braucht man nur nachbrennen.
    Frank meint übrigens, ich kann die Adresse "68" verwenden (Als default)
    Die 60-6E Serie is ja nur vom RN-Miniservo benutzt (62)

    Wäre fein, wenn sich ausser Servos nun noch mehr sinnvolle Beschäftigungen für den Co-Prozessor finden ließen. Ich hab den Verdacht, dzt. steckt der auf vielen RNBFRA's einfach nur drin und macht nix (eigene Erfahrung).

    Ich schau mir das mit den Tiny mal an, kann ja kein Problem sein.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    RNSI2C-Test

    @PicNick:

    so, jetzt habe ich RNSI2C lange in verschiedenen Varianten auf meiner RNBFRA getestet. Meine Servos zeigen schon erste Abnutzungen (vielleicht sollte ich ab jetzt welche mit Metallgetriebe kaufen!):

    Ergebnis:
    1. Läuft sehr stabil ohne Probleme.
    2. Auffallend ist, dass "Sendeprobleme" bzw. -wiederholungen praktisch nur bei Servo 1 vorkommen und fast nie bei anderen Svnr. [EDIT: Peinlich! Das war ja wohl schon von Vortestern bekannt, sehe ich gerade!]
    3. Auch durch zwischenzeitliche LCD-Ausgaben läßt sich RNS nicht beunruhigen.

    Fragen:
    1. Da ich ja 2 RNBFRAs habe -> Könntest du evtl. (Zumutung!) eine Version mit anderer Adresse zur Verfügung stellen? Gibt es da schon eine rn-Festlegung für die Adressen? Du hattest glaube ich 'mal 68 und 6A für den 2313 und 6C, 6E für den M32 geschrieben, oder?

    2. Wäre es alternativ denkbar, die Adresse des 2313 auch via CMD zu ändern?

    Dirk

  7. #17
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    So, Männer, das ist einmal recht gut getestet. Anbei das ganze Set.
    RNSTEST.BAS Testprogramm für den Atmega32 (oder was anderes)
    RNSI2C.BAS Servoprogramm für den at90S2313
    mit anderer "def" vielleicht für den TIny2313 probieren?
    MYI2c.BAS I2C includefile dazu
    MYI2C.LIB I2C Slave-Library dazu (in das Bascom lib-verzeichnis)

    ServoAddr = &H68

    Kann geändert werden: EEPROM lesen, erstes Byte auf die gewünschte adresse setzen, wieder zurückschreiben
    Geht auch mit Command-4 / addr

    Wenn mehrere Servos gleichzeitig gestellt werden sollen, isses besser kein I2CSTOP dazwischen, sondern gleich wieder I2CSTART
    Angehängte Dateien Angehängte Dateien
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Danke

    Hallo PicNick,

    super, einfach klasse! Jetzt ist die RNBFRA auch softwaremäßig komplett!

    Jetzt geht das Testen wieder los. Ob ich wohl Rabatt kriege, wenn ich vom großen C 100 Servos kaufe?
    Mein M32 auf RNBFRA 1 wird die beiden 2313 mit Servopositionen vollstopfen, der andere M32 funkt dann mit ein paar Zugriffen auf die PCFs dazwischen. Bin 'mal gespannt.

    Bis die Servos dann fertig mit der Welt sind (ich denke da an 5 Testreihen a je 20 Servos über 5 Jahre ), habe ich vielleicht ein bißchen von dem verstanden, was Du (und natürlich Frank) da umgesetzt hast!

    Vielen Dank!

    Dirk

  9. #19
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Hallo, Dirk ?
    Ob ich wohl Rabatt kriege, wenn ich vom großen C 100 Servos kaufe?
    Ganz bestimmt, zumindest ein paar Werbekugelschreiber oder Feuerzeuge

    Das Kreuz und quer mit zwei ATmega32, drei PCF und einem 2313 geht tadellos, ich bin ja grad am Testen.
    Wie erwähnt, geht ja jetzt ums Routen, PC(TCP/IP)<->RS232 und dann auf I2C.

    Wenn irgendwas schräg' ist oder nicht funzt, bitte melden !
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #20
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Fragen über Fragen

    @PicNick

    auch wenn's nervt, ich versuche gerade, i2cslave zu verstehen. Für meinen 2. 2313 (der 1. hat mit den Servos zu tun!) habe ich mir ausgedacht, dass er für die IR-Kommunikation (und evtl. noch für die DCF-Decodierung) geradestehen soll. Da kommt mir so ein Sklave ganz recht.
    Da habe ich mir dein i2cslave.zip vorgenommen und irgendwie haben sich 2 Fragen aufgedrängt:
    1. Wo in der "I2C-Laberschleife" (etwas respektlos für die ganze I2C-Kommunikation) kann ich mich mit weiteren Aufgaben in Ruhe beschäftigen?
    Im Code für den Sklaven ...
    Code:
       Do
             If Twi_flag <> 4 Then                    ' wenn STOP war, auf START warten
                                                       ' wenn Rep-Start war, natürlich nicht
        '-------------------------------------------------------
                Loadadr Twi_flag , Z                  ' Controll-Structor
                Gosub Twi_wait_start                  ' da bleiben wir kleben
        '-------------------------------------------------------
             End If
             If Twi_flag = 4 Then                     ' START oder REP-START ?
                   Loadadr Twi_flag , Z
                   Gosub Twi_get_addr                 ' I2C Adresse prüfen
                   If Twi_flag = 2 Then               ' I2C WRITE (receive)
    
                      Gosub Twi_slave_tx_ack          ' gut, ein ACK
                      Loadadr Twi_flag , Z
                      Gosub Twi_slave_rx_data         ' daten empfangen bis Stop
                                                      ' oder Rep-Start
                                                      ' (wir acken dzt. alles)
                     '----------------------------------------
    ==> DA1
                     ' Wenn er mit den Daten was machen will, sollte er es jetzt tun
                     ' ------
                     ' eventuell andere Daten zu abholen herrichten
                     '   Twi_read = Varptr( was_anderes );
                     '----------------------------------------
    
                   Elseif Twi_flag = 3 Then           ' I2C READ (send)
    
                      Gosub Twi_slave_tx_ack          ' gut, auch ein ACK
                      Loadadr Twi_flag , Z
                      Gosub Twi_slave_tx_byte         ' Master holt sich daten
                                                ' soviele, bis er NACK sagt
                                                ' wir haben dzt. kein Limit
                   Else
                      Gosub Twi_release               ' was-weiss-ich (Bus freigeben)
    ==> DA2
                End If
             End If
             If Twi_flag <> 4 Then                    ' Wenn kein REP-Start war, sollte
    ==> DA3
                                                       ' der Bus jetzt kurz frei sein.
    
                                                       '2313 sendet jetzt selbst was
    
                                                       ' Bascom ist für Multimaster
                                                       ' aber nicht geeignet, da kann
                                                       ' dzt. noch Konflikte geben
                Waitms 10                             ' kure Pause, wer weiss schon
                I2cstart                              ' dzt, normales Bascom Soft I2C
                I2cwbyte Out_adr                      ' LED geblinke
                I2cwbyte M32_byte(1)                  ' das erste Byte des Buffers
                I2cstop
             End If
       Loop
    End
    ... gibt es da ja 3 aussichtsreiche Stellen (DA1, DA2, DA3).
    Bei DA1 sollte ich neue Daten fürs Lesen/Schreiben vorbereiten, soviel ist klar. Wieviel Zeit habe ich dazu?
    Bei DA2: Was kann ich da tun und wie lange? (Wenn ich z.B. DCF decodieren will, dauert das ziemlich lange.)
    Bei DA3: Der Bus ist frei, also könnte ich hier senden, was kann ich da noch machen?

    2. Noch 'ne Laien-Frage:
    Warum braucht's hier eine MyTWI.lib?
    RNSI2C funktioniert doch im Prinzip genau so, braucht aber die MyI2c.lib von dir. Bei beiden Anwendungen wird der 2313 zum Sklaven, der kein HW-TWI kann. Also laienhaft betrachtet dieselbe Aufgabe! Warum die 2 Libs? (Wahrscheinlich eine doofe Frage, aber ich versuch's zu verstehen!).
    (Natürlich habe ich den I2cSlave schon mit deiner MyI2c.lib aus RNSI2C kompiliert, was ebenfalls natürlich nicht geklappt hat!)

    Gruß Dirk

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen