hi,
wie ist es möglich den Atmega zu flashen, obwohl am Bus weitere IC's
anhängen?
Wenn ich 2 Atmegas, die mit SPI verbunden sind, einen flashen will,
funktioniert es nicht.
Ich hab auch eine SD-Büchse am SPI Bus anhängen:
http://www.ebay.de/itm/321661440743?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Sogar wenn die Karte aus der Büchse raus ist, kann ich nicht flashen,
erst wenn die Stromzufufuhr unterbrochen ist.
Wie kann man das Problem lösen?
Danke
der thorben
der_thorben schrieb:> Sogar wenn die Karte aus der Büchse raus ist, kann ich nicht flashen,> erst wenn die Stromzufufuhr unterbrochen ist.
Du hast eine Adapterkarte in die Du eine SD-karte einstecken kannst.
Welche hast Du abgezogen ? Mit Deiner "Büchse" kann ich nichts
anfangen^^
>> Wie kann man das Problem lösen?
Schau mal auf Deine Adapterkarte. Da scheint ein Treiberbaustein drauf
zu sein.
Evtl. treibt der parallel zum ISP.
Lösung (nicht böse gemeint ;-): Wissen was man tut :p
Grüße
Andreas
ja, ich mein den Adapter. Erst wenn ich die Versorgung für diesen
unterbreche, kann ich flashen.
da ist auch ein Treiber drauf, finde es aber schon komisch, dass dieser
das Flashen verhindert.
Wie kann ich auch das Flashen auf einen Atmega durchführen, wenn ein
weiterer Atmega auf den Bus sich befindet?
ISP ist eigentlich nur ein Art SPI-Bus der in den Flash des AVR schreibt
und RESET als SlaveSelect hat.
Also behandle es wie ein dementsprechenden SPI-Bus.
Ist denn nach SPI Datenblatt alles mit Vorwiderständen versehen? Hier
gibts einen Thread der auch noch aktiv ist.. die Forumssuche grüsst..
bzw könntest du die beiden Atmegas mit einem gegenseitigem Pinout auf
Reset schlafen legen, rein theoretisch..
Beitrag "Programmer und NRF24L01 am SPI - geht nicht?"
der_thorben schrieb:> wie ist es möglich den Atmega zu flashen, obwohl am Bus weitere IC's> anhängen?
Ganz einfach: Indem man alle diese Busteilnehmer in den inaktiven
Zustand zwingt, in dem sie sich hohohmig vom Bus entkoppeln. Einfach
dadurch, daß man dafür sorgt, daß effektiv keiner ein aktives CS für
sich sieht. Das zwingt jeden SPI-Slave dazu, den SPI-Bus in Ruhe zu
lassen.
> Wenn ich 2 Atmegas, die mit SPI verbunden sind, einen flashen will,> funktioniert es nicht.
Das ist ein ganz anderes Problem, nicht SPI, sondern ISP. Trotz ähnlich
klingender Akronyme (und häufiger Pin-Einheit) ist das etwas völlig
anderes.
Aber auch hier kommt es schlicht darauf an, daß nur einer der Controller
"angesprochen" wird. Das ist allerdings nicht so einfach zu erreichen
und erfordert in jedem Fall zusätzliche Hardware und eine
Steuermöglichkeit, über die der zu programmierende Controller selektiert
werden kann. Der Hardware-Aufwand kann bei entsprechend "kooperativer"
Programmierung der Controller aber recht gering gehalten werden. Im
Prinzip muß die Selektion über das Reset-Signal erfolgen. Nur der zu
programmierende Controller darf das wirklich als Reset kriegen, alle
anderen müssen das Signal an einem anderen Pin kriegen und zum Anlaß
nehmen, ihre "SPI-Füße" komplett einziehen.
c-hater schrieb:> Ganz einfach: Indem man alle diese Busteilnehmer in den inaktiven> Zustand zwingt, in dem sie sich hohohmig vom Bus entkoppeln. Einfach> dadurch, daß man dafür sorgt, daß effektiv keiner ein aktives CS für> sich sieht. Das zwingt jeden SPI-Slave dazu, den SPI-Bus in Ruhe zu> lassen.
Richtig.
Aber Achtung! Eine SD-Karte (ob Micro oder normal) befindet sich nach
Beginn der Stromzufuhr zunächst im SD-Bus-Modus, und in diesem Modus hat
die SD-Karte keine CS-Leitung! Bei eingesteckter SD-Karte am SPI-Bus
wird dadurch mit ziemlicher Wahrscheinlichkeit die ISP-Programmierung
gestört (und wer weiss, wie die SD-Karte die ISP-Befehle interpretiert).
LG, Sebastian
Also, ich mache das meistens so:
Entweder kommen nur hochohmige Eingaänge anderer Schaltungsteile an die
ISP-Pins, bei denen durch das Programmier-Gewackel nichts Böses
passiert. Wenn da aber Ausgänge anderer Komponenten mitspielen (Wie z.B.
ein anderer AVR) muß man die inaktiv (High-Z) schalten können,
Schaltsignal ist der Reset, Reset Low -> Externe Logik inaktiv. Notfalls
hilft da ein 74HC126, wenn die externen Komponenten das nicht selbst
können. Die Einfach-Lösung mit Jumpern, die man zum Flashen abziehen
muß, vermeide ich, weil man das, beim Tüfteln, oft vergisst. Man kann
natürlich die externe Logik auch mit einem Stecker, der in die
ISP-Buchse gesteckt wird, anschließen, dann vergisst man es garantiert
nicht, ihn zum Flashen abzuziehen.
Mit freundlichen Grüßen - Martin
> den Reset des anderen AVRs auf die GND gelegten> freien 10pol ISP legen
Deutsche Sprache - schwere Sprache.
Falls du damit sagen wolltest, dann man den Reset Pin des anderen
Mikrocontroller auf GND legen soll, dann ist dies genau der falsche Weg.
Denn dadurch wird das ISP Interface aktiviert!
Wenn beide Mikrocontroller einen Reset bekommen, aktivieren beide ihren
ISP Port. Beide würden also (wenn es die gleichen Chips sind) die
gleiche Firmware erhalten. Wenn es nicht die gleichen Chips sind, wird
die Kommunikation fehlschlagen (wegen Kurzschluss auf MISO).
Deutsch lesen, schweres Lesen.. meinte ich nicht.
Der nicht "zu programmierende" Atmega hätte Schlafpause durch Dauerreset
über GND solang der ISP steckt.
Bei dem 10 Pin Connector sind doch programmerseitig 4Pins Gnd?
Beim 6pin kann man 2 dioden über kreuz von den 2 ISP ports gegen GND
zum jeweiligen Reset schalten damit nur einer Schlafen geht bei
Versorgung durch einen der ISP ?
Was ist, wenn ich es wie im Datenblatt Seite 3 mache, dass ich den isp
anschluss direkt am Atmega anschließe und anschließend 1k Widerstände in
Serie an MISO, MOSI, CLK geschaltet sind. Würde es das Problem lösen?
Probier das doch einfach auf dem Steckbrett aus.
Das mit dem Dauerreset war doch nicht ganz richtig, da hab ich den
Program Halt mit dem ISP Program Mode verwechselt.
der_thorben schrieb:> wie ist es möglich den Atmega zu flashen, obwohl am Bus weitere IC's> anhängen?
alles was nicht zum flashen am SPI Bus hängt über 470 Ohm bis 1k
anschliessen
zum flashen direkt an den SPI, durch die R stören die angeschlossenen
Teilnehmer nicht.
OK, mache ich und teile das dann noch mit.
Trotzdem noch eine Frage, was ich auch noch testen werde.
Ich habe gehört, dass wenn weitere Geräte am SPI Bus anhängen, man
Probleme mit der SD-Karte bekommt und man dann Software SPI für die
anderen Geräte verwenden soll. Stimmt das?
Noch eine interessante Beschreibung aus avr042_revc.pdf "Connecting SPI
Lines":
Multiple AVRs in a single application can share the same ISP interface
to make it possible to program all of the devices through a minimal
interface. However, the AVR devices will all respond to the ISP
instructions if special design considerations are not made. If it is
desired to have only one ISP interface on the target board, the ISP
programming can be designed so that only one of the AVR devices is
provided with a SPI clock at a time. All other SPI lines can then be
shared. In this way all AVRs can be located “behind” the same protection
resistors, since they all are held in RESET while the ISP reset line is
activated. The gating of the ISP clock can be accomplished e.g. using
jumpers. Alternatively, a solution is to have multiple ISP interfaces,
one for each device, all protected as shown in Figure 4-2 (Ist die
Grafik mit den Vorwiderständen)
EDIT: Demnach kannste einfach mit den Vorwiderständen an jedem AVR ein
6Pin Header machen und brauchst keine Extra spielereien.
> Ich habe gehört, dass wenn weitere Geräte am SPI Bus anhängen,> man Probleme mit der SD-Karte bekommt und man dann Software> SPI für die anderen Geräte verwenden soll. Stimmt das?
Das hängt von den anderen Komponenten und vor allem von der SD Karte ab.
Ich hatte dieses Problem gleich bei meiner ersten Schaltung mit SD
Karte.
In meinem Fall habe ich die SD Karte per Soft-SPI angesteuert und die
A/D Wandler über richtiges SPI, weil die SD Karte beliebig schnell
angesteuert werden durfte (auch mit unregelmäßigem Takt), die A/D
Wandler jedoch eine bestimmte Taktfrequenz benötigten.
Stefan Us schrieb:>> Ich habe gehört, dass wenn weitere Geräte am SPI Bus anhängen,>> man Probleme mit der SD-Karte bekommt und man dann Software>> SPI für die anderen Geräte verwenden soll. Stimmt das?>> Das hängt von den anderen Komponenten und vor allem von der SD Karte ab.> Ich hatte dieses Problem gleich bei meiner ersten Schaltung mit SD> Karte.
Ja und nein. Noch einmal: Alle SD-Karten müssen nach Beginn der
Stromzufuhr im SD-Bus-Modus sein, bei dem sich die Pads der SD-Karte
nicht SPI-konform verhalten, weil die SD-Karten-Spezifikation das so
vorschreibt: Siehe https://www.sdcard.org/downloads/pls/part1_410.pdf,
3.7.1: SD Bus Pin Assignments und Figure 4-1: SD Memory Card State
Diagram auf Seite 26.
Und wenn eine SD-Karte im SD-Bus-Modus eine ISP-Programmiersequenz
mithört, ist die Wahrscheinlichkeit recht hoch, das sie irgendeinen Teil
einer solchen Sequenz als SD-Bus-Befehl dekodiert und entsprechend
reagiert, und dabei die ISP-Programmiersequenz stört.
LG, Sebastian
Joachim B. schrieb:> alles was nicht zum flashen am SPI Bus hängt über 470 Ohm bis 1k> anschliessender_thorben schrieb:> habs getestet und klappt, wenn die 1k widerstände in reihe sind
danke für die Rückmeldung, ich habe immer 470 Ohm genommen und damit
keinerlei Probleme, schön das es auch mit 1k klappt.
der_thorben schrieb:> Ich habe gehört, dass wenn weitere Geräte am SPI Bus anhängen, man> Probleme mit der SD-Karte bekommt
da fällt mir nur ein Analogschalter 74HC, CD oder HEF 4053 der mit einem
pulldown auf ISP gehalten wird, wenn der µC einen Port hochsetzt werden
erst andere ISP Nutzer angeschaltet.