Config SDA, Config SCL verwenden?

Dieses Thema im Forum "Programmierung und Bascom IDE" wurde erstellt von LotadaC, 19. Januar 2019.

  1. LotadaC

    LotadaC Sehr aktives Mitglied

    Registriert seit:
    22. Januar 2009
    Beiträge:
    3.056
    Zustimmungen:
    55
    Punkte für Erfolge:
    48
    Sprachen:
    BascomAVR, Assembler
    Hallo, sorry wegen der Überschrift - aber ich weiß echt nicht, wie ich's kurz formulieren soll...

    In den Compiler-Settings lassen sich ja Controllerbeine für drei Kommunikationsschnittstellen vorgeben (Defaults), und zwar für 1wire, den SPI-Bus und I²C.
    Meine Frage bezieht sich auf den I²C.
    Man kann also dort Defaults für SDA und SCL treffen.

    Diese Voreinstellung kann im Programm durch "Config SDA= xxx.y" bzw "Config SCL=aaa.b" überschrieben werden.
    Meine Vermutung war jetzt, daß dadurch "irgendwo" entsprechende Compiler-Konstanten generiert werden auf die "irgendwie" zugegriffen werden kann. Wo und Wie?

    Ich bin dem Hinweis auf "I2CINIT" gefolgt, und dort der i2c.lib .
    In dieser Bibliothek werden diverse Compilerkonstanten verwendet:
    • _sdaPORT
    • _sdaDDR
    • _sdaPIN
    • _sclPORT
    • _sclDDR
    • _sclPIN
    • _SCL
    • _SDA
    (Die ersten sind die Register, die letzten die Bits)
    Aber unklar ist, wo diese Konstanten angelegt werden.
    Jedenfalls läßt sich folgendes Programm korrekt simulieren:


    CodeBox BascomAVR
    $regfile = "attiny4313.dat"
    $crystal = 8000000
    
    Config Sda = Portb.5
    I2cinit
    
    sbi _sdaport, _sda
    
    End                                                         'end program
    
    SBI setzt dann wie erwartet B5.
    Diese i2c-lib muß nicht per direktive eingebunden werden, die _i2cinit auch nicht deklariert werden.

    Daraufhin habe ich eine eigene "Bibliothek" mit folgendem Inhalt "geschrieben" (bzw aus der i2c-lib folgendes "kopiert"):

    CodeBox BascomAVR
    [_I2C]
    _I2C:
    _i2c_init:
    Ret
    [end]
    Also nur zwei Label und ein Return.
    Und mein Programm dann geändert:


    CodeBox BascomAVR
    $regfile = "attiny4313.dat"
    $crystal = 8000000
    
    $lib "meinelib.lib"
    
    Config Sda = Portb.5
    I2cinit
    
    sbi _sdaport, _sda
    
    End                                                         'end program
    
    Auch hier sind die Konstanten verwendbar, es wird auch nur die leere Subroutine (statt der Routinen der vorherigen Bibliothek) erzeugt.

    Irgendjemand 'ne Erklärung?

    Grundsätzlich könnte man so also 'ne eigene Bibliothek erstellen, die zB das USI (siehe mein anderer Thread) nutzt, sich aber unter Bascom mit den konventionellen TWI-Instruktionen initialisieren, und weitgehend auch verwenden läßt (die i2c.lib scheint nur Master-Instruktionen zu besitzen)

    LotadaC
     
  • Über uns

    Unsere immer weiter wachsende Community beschäftigt sich mit Themenbereichen rund um Mikrocontroller- und Kleinstrechnersysteme. Neben den Themen Design von Schaltungen, Layout und Software, beschäftigen wir uns auch mit der herkömmlichen Elektrotechnik.

    Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  • Coffee Time

    Unser makerconnect-Team arbeitet hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und unser eigener makerconnekt-Server regelmäßig gewartet wird. Wir nehmen das Thema Datensicherung und Datenschutz sehr ernst und sind hier sehr aktiv, auch sorgen wir uns darum, dass alles Drumherum stimmt!

    Dir gefällt das Forum und die Arbeit unseres Teams und du möchtest es unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft, unser Team freut sich auch über eine Spende für die Kaffeekasse :-)
    Vielen Dank!
    Dein makerconnect-Team

    Spende uns! (Paypal)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren und die Seite optimal für dich anzupassen. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden