-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: i2c to rs232 BASCOM

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370

    i2c to rs232 BASCOM

    Hi,

    hat jemand ne idee wie ich mit nem mega128 die daten die ein I2C sender sendet (kein empfänger dran) loggen bzw auf RS232 rausgeben kann? es sind ca 20 byte/sec also nix dolles. Ich benutze Bascom und die I2C routinen scheinen nicht richtig compilert zu werden..

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2004
    Alter
    32
    Beiträge
    255
    Hm - wenn du uns ein paar mehr Infos gibst, kann dir bestimmt geholfen werden.

    Ich arbeite nicht mit Bascom, aber was heißt - scheinen nicht richtig kompiliertr zu werden?
    Kommt eine Fehlermeldung (wenn ja, welche?)? Funktioniert die Software im Chip nicht? Bekommst du keine Reaktion über I2C? Welcher I2C Sender ist das? Sprichstu du ihn richtig an?

    Die Umsetzung und die Ausgabe auf eines der UARTs sollte absolut kein Problem sein.

    Dein Post ist im falschen Forum. Der wäre im Bascom Forum besser aufgehoben. Da würden dann die Bascom Experten antworten. Vielleicht verschiebt Frank den Thread ja ...

    Viele Grüße
    Flíte

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    mmhh ja also fehlermeldung beim compilern.... ähm habe es mit einer angepassten routine von der hilfe versucht die ein byte ließt... aber die scheint mit dem mega128 nicht zu laufen. es muss doch in Bascom einen weg geben die I2C schnittstelle anzusprechen, dafür ist sie ja da...

    also ich habe ein gerät das sendet permanent daten über eine i2c,
    1) egal ob was dranhängt oder nicht.
    2) die kommunikation geht nur von a nach b
    3) Ack/Nack wird nicht durchgeführt
    4) Timeout/Fehlerkorrektur wird nicht gemacht
    5) gesendet werden ca 20 byte/sekunde

    ganz dummes daten raussenden also. nur 2 probleme: ich bin relativ frisch was µCom angeht und mit I2C hatte ich noch nicht allzuviel zu tun.
    meinst du ich soll nochmal einen post im Bascom forum machen?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2004
    Alter
    32
    Beiträge
    255
    Hm - also sehe ich das richtig, dass das andere Gerät als I2C Master agiert (also den Takt bestimmt). In wieweit man die Funktionen I2C von Bascom auch als Slave einsetzen kann weiß ich leider nicht.

    Aber der Mega128 hat soweit ich weiß ein Hardware TWI (=I2C) Interface, dass man als Slave einstellen kann. Damit geht das auf jeden Fall.

    Anschließend musst du nur die eingelesenen Daten im Ram zwischenspreichen (nicht unbedingt notwendig) und anschließend über die serielle Schnittstelle ausgeben.

    Vielleicht schreibst du mal Frank eine PM, ob er den Thread verschieben kann? Einen neuen Thread würde ich nicht unbedingt machen. Die meisten hier schauen sich sowieso die neuen Nachrichte alle an.

    Vielleicht aknnst du mal dein bisheriges Programm posten und die Fehlermeldungen des Compilers dazu ...

    Viele Grüße
    Flite

  5. #5
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    sebastian.heyn: So ganz versteht ich auch noch nicht was du machen willst. Willst du Dtaen mit deinem mega128 empfangen oder senden. Was geht denn nicht? VIelleicht kannst du mal Codezeilen posten.

    Das Bascom recht einfache Befehle zum senden von Bytes über I2C hat, das hast du siche schon gesehn. Die funktionieren normalerweise auch fein.
    Das empfangen von Bytes ist schon schwieriger, wie Flite schon sagt, da muss dein Programm als Slave arbeiten. Das wird von der aktuellen Version nicht unterstützt, erst von der neuen version welche eigentlich die Wochen rauskommen sollte (derzeit gibts nur Beta-Version).

    Ich hab den Thread mal verschoben!

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hi guten morgen.
    Also ich habe im normalfall ein Gerät welches kontinuierlich daten sendet (egal ob ein empfänger dran ist oder ned) der empfänger hat die adresse 70h. nun will ich aber diese daten auf nem rechner anschauen bzw auswerten.... (evtl werden sie vorher vom µ noch in nutzbare info umgewandelt)
    mein code compilert mittlerweile ohne fehler aber der mega128 schmeisst hinten was raus, was so nicht stimmen kann.
    Das Gerät welches ich immer als sender bezeichne gibt den takt an. (also wird der mega128 der slave sein)

    $regfile = "m128def.dat"
    $crystal = 8000000
    $baud = 57600

    Config Porta = Input
    Config Sda = Portd.5 'A22 ws
    Config Scl = Portd.3 'a20 gr

    Print "Start!"
    I2cinit
    Do
    Dim X As Byte
    Dim Slave As Byte
    X = 0
    Slave = &H70
    I2creceive Slave , X
    Print Hex(x) ; ",";
    Loop


    @frank: Danke fürs verschieben

  7. #7
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    So funktioniert das nicht! Der i2creceive Befehl dient zwar zum Abrufen von Daten eines Masters, aber der Master muss in diesem Fall inaktiv sein, also auf den Abrufbefehl warten. Erst wenn der Receive-Befehl kommt gibt der Master die Daten zurück.

    Wie gesagt um Daten von einem ständig sendenden Master zu empfangen muß das Programm als Slave programmiert werden. Es wird dann ein Interrupt ausgeführt der die Daten zurück gibt. Aber dies ist bislang in den wenigsten Programmiersprachen impementiert (wenn überhaupt). Du kannst mit Bascom die Daten nicht überwachen. Außer du kaufst dir eine Zusatzlibary oder wartest auf die neue Version.
    Oder du schreibst dir selbst paßenden Code der die Portleitungen interpretiert.

    Eine andere Möglichkeit wäre den I2C Bus direkt an die RS232 vom PC anzuschließen. Wenn die Übertragungsgeschwindigkeit nich so hoch ist, ist das auch ne praktische Sache. Ich hab dafür eine kleine Adapter-Schaltung als Bausatz zusammengestellt, aber hab es noch nicht angeboten da ich noch nicht dazu gekommen bin die Software dafür zu schreiben. Wenn das jemand selbst kann und Intresse hat, kann er mir ne PM schicken.

    Gruß Frank

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    meint ihr das der mega128 schnell genug ist das man mit Bascom evtl eine eigene I2C implementation programmert bekommt?

  9. #9
    Gast
    eins vorweg, ich kenne mich mit Bascom nicht aus, hab aber mal gelesen, dass man da sehr einfach Assembler-Code einbinden kann
    das Datenblatt zum ATMEGA128 enthält eine sehr gute Übersicht zum TWI-Modul, mit Beispiel-Code für C und Assembler(allerdings für den ATMEGA als Master)
    wie man den ATMEGA als Slave verwendet, steht zwar nicht explizit als Code drin(wenn ich micht jetzt nicht täusche), aber den Code kann man sich durch die Beschreibungen selbst zusammensetzen(unter C war das echt nicht viel)
    kann man sich unter Bascom auch die Interruptroutinen selbst schreiben? wenn ja, kann man den ATMEGA relativ einfach (unter BASCOM) als TWI-Slave verwenden

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    29
    Beiträge
    674
    blödes einloggen...der Post war von mir...

    wie schon gesagt, du musst I²C nicht selbst implementieren, der ATMEGA128 dürfte das ganze in Hardware(TWI genannt) besitzen

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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