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?"
:
Bearbeitet durch User
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
Das wäre doch ne Idee.. den Reset des anderen AVRs auf die GND gelegten freien 10pol ISP legen, oder des GND des 6pol-ISP mit einer Diode dazwischen.
> 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.
:
Bearbeitet durch User
cool, cool, danke phillip. ich probiers trotzdem und meld mich :D
habs getestet und klappt, wenn die 1k widerstände in reihe sind
> 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
:
Bearbeitet durch User
Joachim B. schrieb: > alles was nicht zum flashen am SPI Bus hängt über 470 Ohm bis 1k > anschliessen der_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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.