AVR und SPI + I2C

Gast #216648
Hallo,

ich plane ein Projekt mit einem ATmega32, mein erstes Projekt mit einem
AVR. Ich studiere gerade das Datenblatt und habe festgestellt, daß I2C
und SPI unterschiedliche Pins benutzen. Da ich mit dem AVR einen IC
über SPI steuern möchte und gleichzeitig ein EEPROM (i2c) verwenden
möchte stelle ich mir nun die Frage, ob man beides parallel laufen
lassen kann? Derzeit habe ich nichts gegenteiliges im Datenblatt
gefunden. Doch kenne ich es von den PICs, daß dies nicht möglich ist.

Vielleicht kann mir das jemand von den AVR Profis beantworten ;)

Danke im Vorraus,
Netbandit
Gast
Und schon taucht die nächste Frage auf: ISP :-)

Das Prinzip ist mir ja vom PIC bekannt, doch werden die PINs fürs SPI
(GND,VCC,SCK,MOSI,MISO,RESET) ja auch in der Schaltung verwendet. Daher
ist es bei bestimmten Pins eben notwendig beim Programmieren, den rest
der Schaltung abzukoppeln. Ich habe dazu ein AMP Note von Atmel
gefunden (
http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf ) bei dem
die SCK,MOSI,MISO Pins mit 4,7KOhm Widerständen vom Rest der Schaltung
abgekoppelt werden. Reicht das tatsächlich aus? Und behindert das nicht
das SPI Modul bei der normalen Arbeit?

Reset muß ja nicht abgekoppelt werden, aber bei VCC sehe ich noch nicht
richtig durch... speist der Standart AVR ISP Programmer zum
Programmieren keine Spannung ein, sondern versorgt sich durch die
Spannung, welche die Schaltung selbst versorgt? In diesem Falle muß VCC
ja nicht abgekoppelt werden.

In diesem Falle schalte ich meine Schaltung einfach ein, stecke den
Programmer ran und starte mit AVR Studeo einfach das Programmieren und
nachdem er fertig programmiert ist geht der RESET Pin wieder auf 1 und
das Programm beginnt... sehe ich das richtig?
Gast
Ich denke die Note ist dabei doch sehr ausdrücklich. Die meisten
Programmer haben tristate outputs, d.h. wenn nicht programmiert wird
hängen die in der Luft und stören deine schaltun nicht. Andersrum
können die devices deine Schaltung nicht stören, da die 4k7 Widerstände
bloß 1mA durchlassen und somit die Leitung nicht auf ihren wert ziehen
können, sollte dieser vom programmer auf einem anderen pegel gehalten
werden. Und zu spinnen sollten irgendwelche slaves auch nicht anfangen,
da die bei spi erst über cs aktiviert werden müssen. Also u.U halt einen
 Pulldown/up je nach logik des cs pins an den pin ran, damit er
deaktiviert ist und gut ist. Und ja du kannst spi und i2c gleichzeitig
verwenden. Lässt sich meines wissens beides über interrupts regeln.
mfg Flo
Gast
Hi Flo,

ja an das mit dem /CS habe ich ja gar nicht gedacht, dann ist es ja
einleuchtend :)

Die Datenbätter von Atmel sind in der Tat gut gehalten, doch da mein
englisch nicht so perfekt ist wollte ich mich eben nochmal absichern.
Duch meine PIC Erfahrungen bin ich es halt gewohnt, daß I2C und SPI
durch die gleiche µC Hardware realisiert wird, daher diese vielleicht
etwas dummen Fragen.

Danke für deine Antwort
Netbandit

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.