- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: Mal wieder I2C / TWI

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108

    Mal wieder I2C / TWI

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Es tut mir leid, ich kann euch nicht verschonen und muss das Thema "I2C unter C" zum wahrscheinlich 43.456-ten mal aufwühlen...



    Ich bin Umsteiger von Bascom nach C, die grundsätzlichen Dinge sind mir also alle schon klar, ich kann auch C am PC Programmieren, nur die AVR-spezifischen Eigenheiten muss ich erst noch erlernen.


    Meine Frage ist nun wie ich in mein Projekt I2C implementieren kann. Master-Read / Master-Write reicht fürs erste. Ich habe schon lange Zeit damit verbracht durch diverse (auch dieses) Foren zu stöbern aber mir scheint, dass hier jeder eine andere Lib benutzt??

    Ich hoffe ihr könnt mir weiterhelfen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.05.2005
    Ort
    Rott am Inn
    Alter
    36
    Beiträge
    373
    Hi,
    such mal bei google nach Peter Fleury, der hat eine sehr gute I2C lib geschrieben. Diese gibts auf seiner Website auch kostenlos zum downloaden.
    mfg franz

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo quad,

    auch unter http://support.microchip.com ist einiges zum Thema zu finden beim Suchbegriff 'i2c'.
    --> ACHTUNG, geht nur im Internetexplorer

    Die Startseite ist etwas 'merkwürdig'.
    Links den Button 'Search' unter Knowledbase drücken, und dann rechts den Button 'Log On'. Der Rest ist selbsterklärend.

    Gruß Sternthaler

    [EDIT] Vergesst die Seite, ich habe gerade mal noch einen Blick drauf geworfen. Die I2C-Lib kann ich nicht mehr zu finden.
    Lieber Asuro programieren als arbeiten gehen.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108
    Vielen Dank!

    Die Lib von Pete Fleury ist wirklich gut.
    Und eine für die UART hab ich damit auch schonmal

    Wisst ihr vielleicht noch etwas für SPI? Ich glaub dann hab ich die ganze Peripherie zusammen \/

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    spi ist glaub cih identisch mit uart, warten bis puffer frei, byte reinschieben, warten bis puffer frei .... usw.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108
    Wie SPI funktioniert weis ich, aber ich bräuchte dazu noch eine Lib oder sowas. Auch hier bin ich auf meiner Suche auf viele unterschiedliche (oft nicht zufriedenstellende) Codeteile gestoßen.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    -.- wozu denn ne lib bitte <_< (alleine schon fürs UART ne lib *grusel*)

    while(!ready to send) ;
    dataregister = meinbyte;

    oder

    while(!byte received);
    meinbyte = dataregister;

    FERTIG!

    deine aussage du wärst auf verschiedene codeteile gestossen ... GLAUB ich dir einfach mal nicht .... nimm dir BITTE das datenblatt und lies es da steht alles drin, sauber erklärt SOGAR MIT BEISPIELEN!!!

    UART arbeitet genauso, bis auf die initialisierung die man in einem 4 zeiler erledigen kann,

    while(!ready to send) ;
    dataregister = meinbyte;

    oder

    while(!byte received);
    meinbyte = dataregister;


    ausserdem gibt es noch für UART interrupts, damit erleichtert ma sich ungemein das verteilen der prozessorlast und die habe ich bisher in keiner UART lib gesehen (find ich eigentlich schade)

    I2C sehe ich ein, da ist senden und empfangen schon etwas komplizierter

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo Ceos,

    ja, irgendwie hast dur Recht, dass die Interrupts in der Lib etwas vernachläßigt werden.
    Aber ich denke, dass dies vor allem für Anfänger auch ganz richtig ist. Es wird doch recht komplex (siehe mal hier bei der Timerinitialisierung), wenn das Zusammanspiel der möglichen Interrupts und die Initialisierung, im Asuro genutzt werden soll.
    - Timer organisiert
    - ADC liefert Werte und muss sich z.B. um die ODO-Tiks kümmern
    - Batterie will auch ab und zu gemessen werden
    - Tasten mal so zwischendurch
    - Und dann noch der UART

    In meiner Lösung zum Nikolausmalen vom 19.03.2006 kann man die Verschachtelung (Timer) mal ein bisschen nachvollziehen. (Hier fehlt sogar noch der interruptbetriebene Rx-Teil zum UART.)

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    ok hmmm recht haste mit ner asuro lib als basis geht das natürlich nicht, aber soweit ich lesen kann, interpretiere ich mal, das er ausschliesslich nen atmega hat und vll. n steckbrett und keinen asuro ...

    das initialisieren ist das EINZIGSTE was an UART und spi kompliziert ist ... und im datenblatt könnte das auch wesentlich einfacher erklärt werden ... aber der rest sit doch wahrlich trivial wenn man mal etwas liest ... aber gerade das vermischen von mehreren libs birgt große risiken ... was wenn 2 libs rein zufällig irgendwo auf die gleichen register zugreifen (ja recht haste, das interruptregister könnte n knackpunkt werden)

    ich möchte mich auch nochmal für meinen obigen post entschuldigen,
    aber wo er geschrieben hat er habe gesucht und nichts zufriedenstellendes gefunden, kochte es in mir hoch, das war glatt gelogen

    wenn er nach codebeispielen sucht um es zu lernen hätte er sicher nciht nach seite 1 aufgegeben und sowas behauptet ... wenn er nach ner lib sucht soll er es sagen und nciht sowas behaupten, das ist ungefähr so wie die aussage

    "ich hab hier ne aufgabe 5+5 = ? hab im netz nach beispielen gesucht, hab sowas gefunden wie 1+1 = 2 und 4+4 = 8 auch 6+6 = 12 aber leider ncihts zufriedenstellendes!"

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hi Ceos,

    ja, ja, das suchen, lesen, usw.
    Google hin oder her. Bei einer Trefferqoute von 35000 hat man nicht so den richtigen Draht alle Beiträge zu lesen. Was bleibt übrig? Man überfliegt die ersten 10 - 20 Ergebnisse und ist leicht angenervt vom Schrott im I-Nicht-Nett. Richtiges Suchen ist da eine Kunst. (Ich habe da leider auch häufig meine Probleme.)
    Aber es bleibt dann ja zum Glück die Möglichkeit das Rad selber noch mal zu erfinden, vor allem wenn das Prinzip klar ist.
    Im Übrigen: 5+5 ~ 11. Nur für den Fall, das das mal gesucht wird

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

Berechtigungen

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

Solar Speicher und Akkus Tests