- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: I²C Bus bei AVR's benutzen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.08.2004
    Beiträge
    169

    I²C Bus bei AVR's benutzen

    Anzeige

    Praxistest und DIY Projekte
    Hallo erstmal,
    Für all diejenigen, die noch keine absolute Anfängerfrage von mir lesen mussten : Ich bin noch ziehmlich neu hier! (Ich wollte das nur mal wieder vorher sagen...)

    Also, so ein paar Sachen habe ich ja jetzt schon mehr oder weniger verstanden: LCD ansteuern, Motoren per AVR steuern...

    Doch da Semesterferien sind, und ich im Moment viel Freizeit habe bin ich über diesen Artikel gestolpert, welcher mich auf folgende Idee brachte: "Ich nehme alle Sachen die ich mal gebaut habe und verbinde sie!" (Nein, ich verfolge kein bestimmtes Ziel, ich versuche nur ein paar grundlegende Dinge zu verstehen.) Leider ist der Artikel nicht sonderlich hilfreich wenn es darum geht mehrere AVR's miteinander zu verbinden.
    Ich habe mir dass in etwa so vorgestellt: Ein AVR steuert das LCD ein anderer wertet die Sensordaten aus und ein dritter steuert die Motoren. (naja es würden wohl auch 2 reichen).
    Mein Problem besteht nun darin:

    • Wie verbinde ich die AVR's miteinander (Schaltplan)?
      Wie würde ein Bascom-Beispiel-Code aussehen?(Hier steht leider nicht besonders viel.)
      Welche AVR's sind besonders geeignet? (zur Zeit verwende ich nur AT90S4433's und ATMega
      und kann ich alle an den gleichen Quarzoszillator anschließen?


    Danke schonmal
    Gruß Florian

    PS: Ich bin immer an Informationen interessiert.

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    18.09.2004
    Ort
    Waldsee
    Alter
    39
    Beiträge
    44
    Also dann mal los.

    Wie verbinde ich die AVR's miteinander (Schaltplan)?
    Du musst eigentlich nur die Busleitungen der TWI Intrfaces miteiander verbinden (sda und scl) die Pullup Widerstände kannst du dir sparen, du kannst die Internen Pullups des AVR verwenden.

    Wie würde ein Bascom-Beispiel-Code aussehen?(Hier steht leider nicht besonders viel.)
    Schau mal in der Bascom Hilfe nach da steht alles genau beschrieben.

    Welche AVR's sind besonders geeignet? (zur Zeit verwende ich nur AT90S4433's und ATMega
    Alle die ein TWI Interface haben. Du kannst das Interface natürlich auch Softwareseitig emulieren. Würde ich aber nicht empfehlen, das kostet nur Rechenzeit und Programmspeicher.

    und kann ich alle an den gleichen Quarzoszillator anschließen?
    Nein kannst du nicht. Jeder AVR einen oszi. Wenn du willst kannst du auch den Internen Oszillator den Manche AVR's haben benutzen. Allerdings ist er
    1. sehr empfindlich was Temperatuschwankungen angeht.
    und
    2. Bei weitem nicht so genau wie ein externer Quarzoszi (mit dem eine Genauigkeit von locker 100ppm möglich sind).

    Weiterhin muss dir klar sein das eine Leseoperation nur vom Busmaster angefordert werden kann.
    Das kann bei einigen Anwendungen zum Problem werden.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zitat Zitat von Hannebambel
    Also dann mal los.
    und kann ich alle an den gleichen Quarzoszillator anschließen?
    Nein kannst du nicht. Jeder AVR einen oszi.
    Doch, das geht. Du kannst einen Oszillator für alls AVRs benutzen.
    Verwechsle aber nicht das englische 'quartz oscillator' (meint externen Quarz) mit 'external Clock', die du dir über einen Quarz-Oszillator besorgen kannst (so ein Ding mit 4 Pins im DIL-Gehäuse aus Metall).
    Die Fuses der AVR's mussen allerdings stimmen.

    Du kannst auch einen AVR mir einem Quarz oder Keramik-Schwinger betreiben und von dessen Takt für die anderen AVRs abzweigen:

    Takt-Master:
    Keramik oder Quarz, Einstellung auf 'noisy environment', damit wird die Treiberstufe stärker geschaltet und kann weitere AVRs versorgen. Takt-Ausgang ist XTAL2.

    Takt-Slaves:
    Einstellung auf 'external clock', Takt-Eingang ist XTAL1, XTAL2 bleibt offen.

    Die Takt-Leitungen sollten nicht zu lange sein; wenn's also mehrer Meter zwischen den AVR's sind, jedem einen Quarz oder Taktgeber spendieren.
    Disclaimer: none. Sue me.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    18.09.2004
    Ort
    Waldsee
    Alter
    39
    Beiträge
    44
    Wieder etwas dazugelernt =D> \/

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.08.2004
    Beiträge
    169
    Hm einiges ist mir leider immernoch unklar:
    Du musst eigentlich nur die Busleitungen der TWI Intrfaces miteiander verbinden (sda und scl) die Pullup Widerstände kannst du dir sparen, du kannst die Internen Pullups des AVR verwenden.
    Also, mir ist nicht ganz klar was sda und scl an meinem AVR sein soll, oder kann ich das selbst definieren?

    Schau mal in der Bascom Hilfe nach da steht alles genau beschrieben.
    Nunja, der Code an sich sieht nicht sonderlich kompliziert aus, allerdings wurden dort PB5 und PB7 verwendet: Aber der AT90S4433 hat keinen PB7 und ich stehe auch vor dem Problem ob ich jeden beliebigen Port als sda und scl definieren kann oder ob das nur bei 2 bestimmten geht.

    Alle die ein TWI Interface haben. Du kannst das Interface natürlich auch Softwareseitig emulieren. Würde ich aber nicht empfehlen, das kostet nur Rechenzeit und Programmspeicher.
    Also, das habe ich nun überhaupt nicht verstanden.



    Weiterhin muss dir klar sein das eine Leseoperation nur vom Busmaster angefordert werden kann.
    Das kann bei einigen Anwendungen zum Problem werden.
    Ich verstehe das so, dass der Master die Motoren steuern und auch die Ausgabe zum LCD übernehmen muss, da er nur "lesen" kann. Die Sensoren könnte ich jedoch an einem Slave betreiben, welcher die Ergebnisse dann zum Master sendet, oder sehe ich das falsch?

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    TWI steht für Two Wire Interface, weil Phillips den Name I2C reserviert hat.

    Wo SCL und SDA beim Mega8 liegen, siehst du bei den Port-Funktionen bzw 'Aternate Port Functions' oder 'Pin Configurations'
    SCL = PC5 = Pin 28
    SDA = PC4 = Pin 27

    Wenn du das TWI-Interface (also die AVR-Hardware-Unterstützung für I²C) verwendest, dann ist die Lage der Ports fest. Direkt auf die Ports zugreifen brauchst du nicht, das tut die TWI-Hardware für dich.
    Disclaimer: none. Sue me.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    18.09.2004
    Ort
    Waldsee
    Alter
    39
    Beiträge
    44
    Nein der Master kann auch schreiben. Wen jetzt z.b. der Slave einen Kollisionssensor hat. Kann er dem Master nicht sagen Achtung da kommt was. Er mus warten bis er vom Master angesprochen wird und kann dann erst antworten (wie in der Schule).
    Es gibt jedoch die Möglichkeit das der Slave noch eine Leitung zu einem Interrupt eingang am Master hat.
    Mit dieser Leitung kann der Slave sich sozusagen Melden. In der dadurch aufgerufenen Interruptrutine kann der Master dann den Slave ansprechen.

    Sorry,
    bin nicht so gut im erklären.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    29.12.2004
    Ort
    Bayern
    Alter
    45
    Beiträge
    90
    Hi,

    @Hannebambel:
    das mit dem Int. ist möglich, aber überflüssig. avr's lassen sich auch im multi-master-betrieb vernetzen. es sendet dann jeder master genau dann, wenn er "was wichtiges" hat. ist bei avrs mit hardware twi ohne große probleme möglich...
    wenn es "sehr wichtig ist" und alle wissen sollten, dass die welt gleich untergeht, dann ist sogar ein general-call möglich, der an alle angeschlossenen teilnehmer geht...

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    18.09.2004
    Ort
    Waldsee
    Alter
    39
    Beiträge
    44
    Ich habe den Multimaster Betrieb noch nicht geteste habe nur gehört das es ein erheblicher Mehraufwand ist.
    Da ein eigenes Protokoll dazu geschrieben werden muss um zu verhindern das 2 Master versuchen daten über den Bus zu senden.
    Hättest du ein par Codebeispiele für mich (uns)?

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.08.2004
    Beiträge
    169
    Zitat Zitat von SprinterSB
    SCL = PC5 = Pin 28
    SDA = PC4 = Pin 27
    Sehe ich das richtig: Ich muss nur alle PC5 und PC4 miteinander verbinden, der Rest läuft über die Software?

    Gruß Florian
    ---

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test