- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Fragen zu I2C in Bascom

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.02.2008
    Ort
    Weil der Stadt
    Alter
    30
    Beiträge
    50

    Fragen zu I2C in Bascom

    Anzeige

    E-Bike
    Hallo,

    ich bin Anfänger in Bascom und habe mich deshalb als erstes durch die RN-Wissen-Hilfe gefressen. Dabei sind mir einige Dinge aufgefallen, die mir unklar sind.

    1. Im Vergleich von "Software I2C" mit "Hardware TWI" ist mir aufgefallen, dass, wenn man "Hardware TWI" wählt, die Clock-Frequenz durch "Config Twi = xxxxxx" aussucht, jedoch dies bei der Nutzung von "Software I2C" nicht geschieht. Wie wird das dort gemacht? Verwendet Bascom da Clock-Stretching oder ist es der Standardwert 100kHz? Wenn ja wie kann man den ändern?

    2. Ich wüsste gerne einen Schätzwert für die Zeit, die für das Senden und Empfangen von jeweils einem Byte, bei Standard-Clock-Frequenz von 100kHz benötigt wird. Bisher benutze ich das Handyboard und dafür werden ungefähr 40ms benötigt. Unter anderem, weil das so lange ist, möchte ich zu AVRs wechseln.

    3. Generell zu Bascom, ich habe gelesen, dass man nur eine Rechenoperation pro Zeile ausrechnen kann. Geht soetwas wirklich nicht:
    "a = b^2 + 2 * 4" ?

    Viele Grüße
    Cornelius

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.11.2008
    Ort
    Kapfenberg
    Beiträge
    628

    Re: Fragen zu I2C in Bascom

    Hallo!

    Zitat Zitat von NeroII
    3. Generell zu Bascom, ich habe gelesen, dass man nur eine Rechenoperation pro Zeile ausrechnen kann. Geht soetwas wirklich nicht:
    "a = b^2 + 2 * 4" ?
    Ich kann dir nur zu dieser Frage eine Antwort geben, da ich mit I2C noch nichts zu tun gehabt habe.

    Leider gehen solche Rechenoperationen, wie du sie gepostet hast, wirklich nicht. Es ist lediglich eine Operation pro Zeile erlaubt.

    Code:
    a = b * b
    a = b + 8
    Ich habe "2*4" bereits multipliziert, besser wäre es, für den fixen Wert von 8 eine Konstante zu benutzen.

    Grüße
    Thomas

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Die Zeitdauer kannst du dir ja berechnen. Du hast ja die Clock-Frequenz und damit auch, wie viele Bits pro Sekunde gesendet werden.
    Adress-Byte + Datenbyte + 2x ACK/NAK + Start + Stop = 20 Bit.
    Ich komm da auf 0,2ms bei 100kHz.
    #ifndef MfG
    #define MfG

  4. #4
    Pardon, sind es nicht 29 bits?

    ein Paket-Rahmen:
    Start(1) + Slave_add(7) + R/W(1) + A(1) + Data( + A(1) + DATA( + NACK(1) + Stop (1)

    dann je nach Datenrate: 100 kBit/s < 400 kBit/s < 3,5 MBit/s
    Sprich theoretische Dauer eines Zyklus für ein Datenbyte:

    Standard-mode: 29/100000 = 0,290 ms
    Fast-mode: 29/400000 = 0,0725 ms
    High-Speed-mode: 29/3400000 = 0,008529 ms

    Weiss eigentlich jemand wo der High-speed-mode eingesetzt wird?

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Der High Speed - Mode ist abhängig von der Hardware, diese bestimmt die Geschwindigkeit der Schnittstelle.
    Bei kurzer Betrachtung zum Datasheet eines ATmega 644p kann ich lesen, dass das TWI-Hardwarenterface nur mit max. 400kHz läuft.
    Wie es mit einer soft-i2c Version ausschaut weiß ich leider nicht.

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ad Frage 1)
    bei der Hardware I2C schreibt man die Speed in ein IO-register (TWI), bei der Soft-I2C definiert man ein Symbol, dass das Bascom in die Wait-Schleifen einarbeitet. Das geht naturgemäss nicht so 1:1 (kHz->param) , daher die einstelligen Config-werte bei Software-TWI
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

12V Akku bauen