Hallo,
bevor ich anfange zu löten brauche ich eure Hilfe.
Ich möchte eine Schaltung mit einem Atmega32 (SMD) und einem Display
löten.
Da ich den Atmega danach nicht mehr aus der Schaltung bekomme um ihn
alleine zu programmieren möchte ich ISP benutzen und den dann per ISP
des STK-600 dierekt auf der Platine programmieren.
Das Display hat ein CS der high-Aktiv ist es liefert keinerlei Daten
(über MISO) zurück sondern kann nur empfangen.
Die Schaltung möchte ich wie in der angehängten Zeichnung aufbauen.
Meine Frage an euch, kann/wird das so funktionieren?
Habe dazu 3 Fragen:
1.
Da der Atmega über SPI auch gleichzeitig (über MISO) Daten liest, ich
aber keine vom Display bekomme, würde ich gerne den Pin 7 (PB6 / MISO)
über den (grünen) 10k Pulldown-Widerstand auf low legen, damit nur
Nullen eingelesen werden.
Kann ich so trotzdem noch über ISP den Atmega programmieren?
(da ja der Programmer (der dann der Master ist und der Atmega der Slave)
die Daten über denselben MISO-Pin in den Atmega schreibt)
2.
Habe irgendwo gelesen, dass man in die Leitungen zum ISP Widerstände
vorsehen soll. Habe die mal blau eingezeichnet.
Brauche ich die? Wenn ja - wofür?
3.
Habe über das Datenrichtungsregister DDRB den SS Pin auf high/Ausgang
gesetzt um somit den Atmega als Master einzustellen.
Der Programmer müsste ja, damit der Atmega nun der Slave ist diesen
SS-Pin auf low legen. Macht der Programmer das so?
Funktioniert das dann trotzdem, dass ich den SS Pin auf high gelegt
habe?
Oder spielt das keine Rolle weil beim Programmieren der RESET-Pin des
Atmega ja auf low gezogen wird und somit mein 'auf high legen' garnicht
ausgeführt wird?
Vielen Dank schonmal für eure Hilfe!
T. Baumbach schrieb:> Hallo,>> bevor ich anfange zu löten brauche ich eure Hilfe.> Ich möchte eine Schaltung mit einem Atmega32 (SMD) und einem Display> löten.> Da ich den Atmega danach nicht mehr aus der Schaltung bekomme um ihn> alleine zu programmieren möchte ich ISP benutzen und den dann per ISP> des STK-600 dierekt auf der Platine programmieren.> Das Display hat ein CS der high-Aktiv ist es liefert keinerlei Daten> (über MISO) zurück sondern kann nur empfangen.> Die Schaltung möchte ich wie in der angehängten Zeichnung aufbauen.> Meine Frage an euch, kann/wird das so funktionieren?> Habe dazu 3 Fragen:>> 1.> Da der Atmega über SPI auch gleichzeitig (über MISO) Daten liest, ich> aber keine vom Display bekomme, würde ich gerne den Pin 7 (PB6 / MISO)> über den (grünen) 10k Pulldown-Widerstand auf low legen, damit nur> Nullen eingelesen werden.> Kann ich so trotzdem noch über ISP den Atmega programmieren?
ja. der programmer ist "stärker"
> (da ja der Programmer (der dann der Master ist und der Atmega der Slave)> die Daten über denselben MISO-Pin in den Atmega schreibt)>> 2.> Habe irgendwo gelesen, dass man in die Leitungen zum ISP Widerstände> vorsehen soll. Habe die mal blau eingezeichnet.> Brauche ich die? Wenn ja - wofür?>
kann man weglassen. schützt vor ESD uund kurzschlüssen. allerdings ist
1k zu viel. besser 33..100ohm.
> 3.> Habe über das Datenrichtungsregister DDRB den SS Pin auf high/Ausgang> gesetzt um somit den Atmega als Master einzustellen.> Der Programmer müsste ja, damit der Atmega nun der Slave ist diesen> SS-Pin auf low legen. Macht der Programmer das so? Funktioniert das dann> trotzdem, dass ich den SS Pin auf high gelegt habe?> Oder spielt das keine Rolle weil beim Programmieren der RESET-Pin des> Atmega ja auf low gezogen wird und somit mein 'auf high legen' garnicht> ausgeführt wird?
genau. im reset sind die pins 'tri-stated'
>> Vielen Dank schonmal für eure Hilfe!
T. Baumbach schrieb:> über den (grünen) 10k Pulldown-Widerstand auf low legen, damit nur> Nullen eingelesen werden.
Warum? Schalt den internen Pullup ein und gut ist. Das, was da
eingelesen, wird vom Programm nicht beachtet und dem Controller ist das
egal.
mfg.
Es gibt auch sowas wie Jumper, damit man eben diese Sorgen nicht haben
muss.
Wenn der Programmer eben doch nicht so ganz stark ist verbrät er dir
auch die Fuses und das war es dann mit dem Chip, wenn du keinen HV
Programmer hast.
Christian J. schrieb:> Es gibt auch sowas wie Jumper, damit man eben diese Sorgen nicht> haben> muss.> Wenn der Programmer eben doch nicht so ganz stark ist verbrät er dir> auch die Fuses und das war es dann mit dem Chip, wenn du keinen HV> Programmer hast.
"Mäuseklavier" gibt's kleiner und als einmal alles Schalter.
GND nicht vergessen ...
T. Baumbach (Gast)
> Atmega32_SPI_ISP.png
Nicht so günstig. Lass die 3x 1k weg.
>Da der Atmega über SPI auch gleichzeitig (über MISO) Daten liest, ich>aber keine vom Display bekomme, würde ich gerne den Pin 7 (PB6 / MISO)>über den (grünen) 10k Pulldown-Widerstand auf low legen, damit nur>Nullen eingelesen werden.
Kann man machen, ist aber unkritisch.
>Kann ich so trotzdem noch über ISP den Atmega programmieren?
Sicher.
>Habe irgendwo gelesen, dass man in die Leitungen zum ISP Widerstände>vorsehen soll. Habe die mal blau eingezeichnet.>Brauche ich die? Wenn ja - wofür?
Nein. Lass sie weg.
>Habe über das Datenrichtungsregister DDRB den SS Pin auf high/Ausgang>gesetzt um somit den Atmega als Master einzustellen.
Nein, als Master stellt man das SPI über ein anders Bit ein. ABER
dennoch muss SS als Ausgang geschaltet werrden. Also alles OK.
>Der Programmer müsste ja, damit der Atmega nun der Slave ist diesen>SS-Pin auf low legen.
Nein. Bei ISP hat der SS Pin keine Funktion.
>Funktioniert das dann trotzdem, dass ich den SS Pin auf high gelegt>habe?
Ja.
>Oder spielt das keine Rolle weil beim Programmieren der RESET-Pin des>Atmega ja auf low gezogen wird und somit mein 'auf high legen' garnicht>ausgeführt wird?
Ja.
> Wenn der Programmer eben doch nicht so ganz stark ist verbrät> er dir auch die Fuses
Er meint damit, dass der Programmer die Fuses möglicherweise falsch
setzt. Die 1k Widerstände erhöhen die Wahrscheinlichkeit dieses Fehlers.
Also alss sie weg.
Die 1K sind nach Atmel datasheet falsch eingezeichnet ..
Quasi kommt direkt an den Atmega der ISP Slot und der 1K und alles was
nicht programmiert hinter die 1K. (Du hast es falschrum im Bild)
Schon besprochen hier: Beitrag "ISP Programmieren, trotz Geräte am spi bus"
Denke das das sonst mit den 1K okay ist.. Hätte auch das gleiche wie
spess53 angemerkt.
Edit: Bild angehängt
Hi,
danke für alle die mir hier schon geholfen haben.
Habe eine neue Zeichnung angehängt.
1.
Habe den Pulldown-Widerstand an PB6 weggelassen, und wie Thomas Eckmann
gesagt hat den Pin (per Software) in den High-Z / Tristate Modus zu
setzen.
2.
Bin mir über den Wert der blauen Widerstände nicht sicher, easylife hat
gesagt 1k wäre zu groß, 33-100Ohm wären besser - was ist nun richtig?
3.
Die letzte Antwort von Philipp K. hat mich einwenig verwirrt, wo jetzt
die Widerstände zu setzen sind. Habe in der Zeichnung zwei Optionen
gemacht, ich denke so wie in der linken Zeichnung (A) müsste es korrekt
sein - oder?
Danke nochnmal...
1. Links isses richtig
2. In Deiner ersten Schaltung hatten Deine Widerstände für das
eigentliche Spi-ISP Problem keinen nutzen,man hätte diese dort an der
Stelle mit 100Ohm als Kurzschlussschutz(oder was auch immer) einsetzen
können.
3. Normalerweise sind für die Trennung 1k bis auf wenige Ausnahmen
okay.. und auch diese probleme hättest Du in der Suche finden können.
(Wie die anderen auch)
@Philipp, danke, aber dann sind doch die Widerstände in der Zeichnung
von Atmel korrekt. Direkt an den Pins des Atmega wird abgegriffen für
ISP. Dann kommen die Widerstände und dahinter liegt dann der SPI-Bus.
Also was deiner Meinung nach ist in der Atmel-Zeichnung falsch?
Habe mir auch mal Gedanken über die Stromzufuhr gemacht.
(siehe angehängtes Bild).
Das Display braucht ja Strom und weitere Verbraucher (z.B. Rest der
Schaltung, ein Motor oder was auch immer) auch.
Wenn ich nun den Atmega flashen also programmieren möchte, habe ich die
eigentliche Stromversorung der Schaltung ja abgeschaltet. Dann stecke
ich den 6 poligen Stecker des STK-600 (oder anderen Programmers) and den
ISP-Anschluss.
Wenn ich die rot eingezeichnete Diode NICHT hätte, dann würden ja die
Verbraucher sofort Strom ziehen und zwar aus dem Programmer, was bei
zuviel Strom evtl. den Programmer beschädigen könnte.
Meine Frage nun , macht man das dann so mit der Diode, wie ich sie (rot)
eingezeichnet habe oder muss ich da mit einem Jumper o.ä. arbeiten,
damit der Programmer nicht die Vebraucher mit Strom versorgt?
Danke nochmals...
Normalerweise dient die VCC Leitung am ISP Stecker dazu, dass der
Programmer sich auf diese Spannung einstellen kann. Die Schaltung
braucht nach wie vor ihr eigenes Netzteil.
Die Idee, den Programmer zur Stromversorgung zu missbrauchen ist nicht
im Sinne der Erfindung und sollte daher auch in jedem Fall mindestens
durch Jumper oder Schalter abschaltbar sein.
T. Baumbach schrieb:> Also was deiner Meinung nach ist in der Atmel-Zeichnung falsch?
Nein Nur Dein kompletter Schaltplan im Eröffnungspost war falsch.. das
Atmel was falsch gemacht hat habe ich nie geschrieben ;)
Spess53 hat als erstes den richtigen Tip gegeben.
Und das mit dem Netzteil ist Anwendungsabhängig wenn Du zum Beispiel
400ma hast und der Programmer USB-VCC direkt durchbrückt kannste das
nebenbei noch zum testen laufen lassen.. (mach ich so)