-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Verstehe das mit dem I2C nicht

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2004
    Ort
    Hamburg
    Alter
    31
    Beiträge
    106

    Verstehe das mit dem I2C nicht

    Anzeige

    Hi,

    ich benutzte einen Mega8 an dem ein LCD display hängt und licht Sensoren + CNY 70 für linien verfolgung und einem Mega16 jetzt möchte ich z.b. das
    der Mega16 dem Mega8 eine Zahl schickt z.b. 266 und der die dann auf dem LCD ausgibt leider habe ich keine ahnung was ich hardware mäßig aber auch software mäßig machen muss damit das funktioniert. Hoffe ihr könnt mir da helfen ich werde versuchen wenn mein Internet zu hause wieder funzt mal meinen bisherigen code zu posten aber der hat damit eigentlich noch nichts zutun.


    Mfg Maik

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    HI

    Der I²C kann keine Zahlen größer 256(=1 Byte) senden.
    Du könntest aber die Zahl 266 in einzelzahlen zerlegen 2 - 6 - 6
    diese dann in strings "2", "6", "6" diese dan in ASCII-Zahlen,
    50, 54, 54, und diese dann an deinen Slave senden.
    Der hat dann sogar weniger Arbeit, und muss die Zahlen nur noch in
    "266" zurückverwandeln, und du sparst die die Umwandlung vin Byte -> String.

    Auf dem LCD ausgeben, fertig.

    Liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  3. #3
    Gast
    Hast du vllt mal einen Code Schnipsel oder sowas ?? wie funzt das mit dem ausseinander nehmen ?`? und wieder zusammen setzen ? schaltung ???

    mfg Maik

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    Hi

    Nein, Snippets habe ich leider keine.

    Das Auseinandernehmen sollte unter Bascom und den richtigen Funktionen kein Problem sein...
    Da muss man etwas experimentieren...

    Liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.05.2004
    Ort
    Bergstraße
    Beiträge
    245
    Die Frage ist mal wieder: welche Programmiersprache ?
    In C bastele ich gerade an einem ähnliche Problem ( und hab natürlich Probleme ..)
    ciao .. bernd

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.05.2004
    Ort
    Bergstraße
    Beiträge
    245
    Zitat Zitat von bhm
    Die Frage ist mal wieder: welche Programmiersprache ?
    nehme die Frage zurück, hab den Betreff nicht richtig gelesen!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2004
    Alter
    32
    Beiträge
    14
    Du könntest auch einfach statt 3 Bytes in nem String auch 2 Bytes seperat senden und die dann per Shift left/right das Word wieder zusammensetzen.

    Schade das Bascom eine ziemlich billige Sprache ist, ansonsten wäre das ne Sache von wenigen Zeilen, ich schätze ma mit Bascom wirste anständig rumhantieren müssen.

    Ansonsten hardware und softwaremäßig steht so gut wie alles in der Bascom Hilfe drinne unter I2C bzw. TWI. Da solltest eigentlich genug dazu finden.

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    28
    Beiträge
    1.461
    HI

    @thebe:
    Warum 2 Bytes separat senden? So nach dem Motto 200 + 66 = 266?
    Was macht er dann, wenn er 1025 versenden will?
    Wenn er es gleich als Text versendet, hat er ausserdem im Empfänger, der das ja eh alles auf's LCD schieben (und deshalb in einen String umwandeln) muss micht mehr so große Probleme.
    /@

    Wenn du mit len() die Länge deines Strings(Zahl) feststellst, kannst du auch herausfinden, wie lange deine Übertragung sein muss.
    Wenn du die 3 Bytes in einer Sendung verschickst, dann dauert das ausserdem nur halb so lang, wie wenn du 3 Bytes einzeln(mit Addresse) verschickst.

    Das SIND in Bascom wenige Zeilen.
    Bascom unterstützt viele der BASIC-Stringfunktionen.


    Ich habe ein I²C-LCD, das ich hardwaremäßig ansteure(steuerzeichen usw). Das dauert einige ms bis es voll ist. solange braucht es Rechenzeit, und blockiert den I²C.
    Deshalb würde ich hier eh zu UART raten, da kann man schneller ganze Strings übertragen, und die Auswertung in Bascom dauert nicht halb so lange.


    Liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    30.12.2004
    Alter
    32
    Beiträge
    14
    tobimc, einfach Hexadezimal denken!

    1025 sind 0x0401, jeweils 2 Stellen sind 1 Byte.
    Erstmal die 0x04 senden und dann die 0x01. Wenn die 0x04 übertragen wurde schreibt man die in ein Word, shifted das um 8 bit nach links (sprich 0x0400 haben wa dann) und dann addiert man die 0x01 noch drauf.
    Endresultat: 0x0401 / 1025

    Kann man natürlich genauso mit Integer machen nur das man die Dinger mehrmals zerteilen/wieder aufsplitten muss.

    Vorteil: bis zu 65535 kommt man mit 2 Bytes aus, bis 2147483647 kann man auch nur 4 Bytes senden. Wo man sonst 11 (10 Zeichen plus 1 Byte Länge) senden muss, sinds nur 4 die man in ner FOR Schleife wieder zusammen fassen kann (pi mal Daumen 5 Zeilen)

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    ganz einfach, machste eine software-serielleschnittstelle mit Bascom und sendest die daten als string und mit den befehl val kannste den dann in eine zahl umwandeln. oder machste prinbin und inputbin falls du gerne mit bytes arbeiten möchtest. ich glaube der user thebe ist noch ein greenhorn in sachen bascom.
    mfg pebisoft

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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