Config SDA, Config SCL verwenden?

  • Frohe Ostern

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3.143
58
48
Hennigsdorf
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

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)