mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI und ISP in einer Schaltung


Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen!
Ich habe hier das Problem, dass ich einen MCP2515 (CAN-Controller von
Microchip) per SPI an einen ATmega32 hängen möchte.
Gleichzeitig will ich den ATmega aber auch noch über die gleiche
Schnittstelle per STK500 programmieren (ISP halt).
Momentan steckt der MCP2515 in einem Steckbrett mit äusserer
Beschaltung (24MHz-Quarzoszillator).
Wenn ich den ATmega jetzt programmieren will geht das nicht, wenn ich
den MCP aber abklemme geht es. Kann das mit zu langen Leitungen
zusammenhängen (STK500-Problem)?
Wenn ich den ganzen Spaß jetzt auf eine Platine mache, wie muß ich dann
den MCP vom "Programmierstrang" lösen? Reicht es einen Pull-Up an
dessen CS-Leitung zu hängen? Wie ist das mit der Reset-Leitung, da ich
beide Controller über einen Reset-Controller betreiben wollte?

Vielen Dank im Vorraus

Gruß Rahul

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bei Atmel ist ein Appnote ... normalerweise schaltet man 1k
Widerstaende dazwischen.

Mfg
Dirk

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternativ den MCP2515 mit Jumper während des Programmierens abkoppeln.
Ist zwar nicht sehr elegant, funktioniert aber :)

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich verwende den ATmega16 mit dem MCP2515. Habe keine Widerstände im
SPI  Bus. Die braucht man eigentlich nur wenn noch ein Mikrocontroller
am Bus ist. Habe auch keine Probleme beim Flashen. Hält Du den
Can-Controller im Reset beim programmieren ? Wenn schließ einfach die
Resetleitung vom ISP mit an den Can-Controller. Gruss Daniel

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mahlzeit!
Dass das mit dem STK500 nicht funktioniert, liegt wohl an den langen
Leitungen auf dem STK und dann auch noch zum Zielsystem (MCP2515).
Ich bin gerade dabei eine Platine (mit OrCAD) zu entwerfen, ujnd werde
die Widerstände einfach mal vorsehen.

Gruß Rahul

Autor: Marco Genise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sorry wenn ich diesen alten Thread nochmal zum Leben erwecke, aber
heisst dass dann, dass man die 1k Widerstände auch in die SPI-Leitungen
schalten sollte  kann  muss, wenn man den Atmel als Master und sonst
nur Slave-Devices verwendet?
Schaltet man die 1k Widerstände in alle Leitung, also Data-In,
Data-Out, Clk & SS?

Grüße,

Marco.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die müssen einfach in alle Leitungen, die auch der ISP-Stecker belegt.
MOSI, MISO, SCK. Beim Reset bin ich mir jetzt nicht sicher. DAmüsste
ich nachgucken.

Autor: Marco Genise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab's in der Application Note 910 gefunden ... die müssen nur in die
Leitungen MOSI, MISO & SCK. #RESET kommt keine - die hat ja
letztendlich auch nichts mehr mit SPI zu tun.

Wie komme ich aber auf den Wert von 1k? In der AN steht nur, dass der
Wert abhängig von der Belegung des SPI gewählt werden muss.

Grüße,

Marco.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles Quatsch, Du must nur den /CS des MSP mit auf Deinen AVR klemmen,
damit dieser ausgewält werden kann und dann noch einen Pull-up (10k)
gegen VCC ran.

Während Reset sind die AVR-Ausgänge floatend und dann sorgt der Pull-up
dafür, daß der MSP still ist (disabled).


Peter

Autor: Marco Genise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

klingt schon logisch einen Pull-Up am CS zu verwenden um das Device zu
deaktivieren, aber das war eigentlich garnicht meine Frage.

Ich wollte ursprünglich wissen ob man die Widerstände auch in die
SPI-Leitungen schalten sollte, wenn man nur Slave-Devices am Atmel hat.
Daraufhin hat sich mit Hilfe der genannten AN rausgestellt, dass Atmel
die bei Verwendung eines ISP auch so empfiehlt / vorschlägt.

Meine Frage lautete nun letztendlich wie man die Größe des
zwischengeschaltenen Widerstandes am besten ermittelt?

Grüße,

Marco.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schutzwiderstände sind nur nötig, wenn beide Seiten unterschiedliche
Stromversorgung haben.


CMOS-ICs können nämlich einen parasitären Thyristoreffekt zeigen, wenn
an den IO-Pins Spannung liegt, bevor sie an VCC liegt.
Sie werden dann schweineheiß und können dauerhaft Schaden nehmen.

Ist auch eine beliebte Methode, um LCDs mit internem Controller
(HD44780) zu schlachten.


Die Widerstände begrenzen also den Strom unter den Zündwert des
parasitären Thyristors.


Peter

Autor: Jörn G. aus H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne Peter, die Rs in der App910 sind nicht wegen dieses Effektes dort
(sonst müssten sie ja in der Leitung zum STK500 drin sein).
Sie sind nötig, wenn das 2. SPI Device gegen den SPI Programmer gegenan
treiben könnte.

Ihre Dimensionierung? Wenn STK500 high "sagt" (+5V) und anderes
Device low, dann fliessen bei 1kOhm 5mA - da dürfte dann nicht kaputt
gehen, also schon keine ganz verkehrte Wahl. Vielleicht einfach mal
auspobieren von 470Ohm bis zu 47kOhm?

Das Problem mit den langen SPI-Kabeln und zusätzlich zu vielen
SPI-Devices am STK500-SPI-Bus (von denen meinetwegen auch nur der AVR
aktiv ist und der Rest per PullUp an CSn sauber deaktiviert wurde)
lässt sich dadurch aber nicht unbedingt lösen. Die STK500-Firmware, die
bei der 3-er Version vom AVR-Studio beilag war in der Hinsicht stabiler
(vermutlich weil langsamer).

jörn

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.