Forum: Mikrocontroller und Digitale Elektronik ATmega328 flashen mit mehreren Slaves am SPI-Bus


von Nik A. (nik_a)


Lesenswert?

Hallo alle :)

ich weiss nicht mal genau, nach was ich speziell suchen muss, um selbst 
eventuell schon beantwortete Fragen dieser Art zu finden, meine 
bisherigen Suchen haben nichts Passendes ergeben.

Das Problem ist ganz einfach:
Ich hab 'nen mega328 mit 4 digiPotis am SPI.
Nun will ich den mega328 flashen, aber AVR Studio meint, die 
MOSI-Leitung hat 'nen Kurzen, dem ist aber nicht so.
Ich habe also alle 4 Potis entfernt und siehe da, es geht.

Wie kann ich das Problem umgehen?
Alle Potis hängen direkt an MOSI, MISO und SCK, irgendwelche 
Pull-Widerstände habe ich keine vorgesehen, nachdem ich dazu schon 
gegoogled habe.

Ich habe bisher auch noch nie gesehen, dass man die Slaves abkoppelt 
mittels Jumper o.ä. ...

Danke für einen kurzen Tipp und schöne Grüße :)

von Karl M. (Gast)


Lesenswert?

Hallo,

Atmel hat dazu eine Apllication Note zum Thema ISP Nutzung auf seiner 
Webseite.
Man muss die AVR Hardware an diesen Pins dann anders beschalten.

von Oliver R. (orb)


Lesenswert?

Ich denke, gemeint ist die AVR042 
http://www.atmel.com/Images/Atmel-2521-AVR-Hardware-Design-Considerations_ApplicationNote_AVR042.pdf
Punkt 3.1.1 Shared Use of SPI Programming Lines

Du kannst auch PullUps an den Chipselect-Leitungen dei Slaves vorsehen, 
dann bleiben die passiv wenn der AVR im Reset hängt.

von Nik A. (nik_a)


Lesenswert?

Hallo Karl,

danke!

Wenn ich es richtig sehe, müssen Serienwiderstände in die Leitungen zu 
den anderen Devices, zumindest in der MISO-Leitung ...
Möglicherweise, was ich bisher nicht kontrolliert habe, sind die 
CS-Leitungen der Potis auch aktiv bzw low bei einem frischen ATmega ...

Das hilft schon mal weiter :)

von Nik A. (nik_a)


Lesenswert?

Oliver,

genau, die habe ich nach Karl's Antwort gefunden, allerdings fehlen 
Angaben zur Größe. Inzwischen habe ich 3 Werte gefunden, 1k, 10k, 33k, 
wobei die letzteren 2 zu Problemen führen könnten bei zu schneller 
Kommunikation.
Probier ich morgen mal aus.

Zu den CS-Leitungen: da habe ich schon Pullups, bin aber gerade nicht 
sicher (weil zuhause), ob der unbenutzte ATmega nicht eventuell die 
Ports auf low hat und die CS-Leitungen dadurch aktiviert sind. Bisher 
hatte ich dieses Problem noch nicht und mir fehlt dementsprechend die 
Erfahrung :)

von Oliver R. (orb)


Lesenswert?

Nik A. schrieb:
> ob der unbenutzte ATmega nicht eventuell die
> Ports auf low hat

Während der Programmierphase wird der AVR im Reset gehalten und alle 
Pins sind hochohmig. Mit den PullUps liegen die also auf High und da !CS 
normal Low-Aktiv ist sollten alle Slaves auch nur hochohmig auf dem Bus 
liegen.
Leider hast Du nicht erzählt welche Potis Du nutzt.

von Nik A. (nik_a)


Lesenswert?

ok, dann sollte es nicht am CS liegen :)

AD5290 sind es

von Nik A. (nik_a)


Lesenswert?

so, bin schon mal etwas weiter:
nicht MISO reicht, wie es in manchen Posts im WWW steht, sondern MOSI, 
so, wie es AVR-Studio quasi andeutet.
Ob es irgendwelche Auswirkungen auf die Kommunikation mit den ADs hat, 
konnte ich noch nicht testen
Ich hab 1k8 als Wert genommen, jeweils in die MOSI-Leitung (da es bei 4 
layern leider nicht möglich war, nur einen zu nehmen)

von Nik A. (nik_a)


Lesenswert?

so, bin gerade dabei, die Pots anzusprechen, blöderweise finde ich da 
nicht allzu viel Infos dazu

Es sind die AD5290 mit 10k
Ich habe schon mehrere Versuche gemacht mit verschiedenen SPI-Configs.
Ich mach das ganze mit Arduino.

Ich werde nicht ganz schlau aus den Infos im Datenblatt und dem 
Internet, mal meint jemand LSB first, im Datenblatt steht aber "data is 
loaded MSB first" ...
beides bringt keinen Unterschied, auch SPI_mode von 1 auf 3 zeigt keinen 
Unterschied.
Scheinbar braucht man nur den Wert senden, ich wechsle alle 5 sec 
zwischen 0 und 255.
Das einzige, was passiert: der Poti geht von etwa 5.7k auf 10.5k und 
dann nichts mehr.
(bei spannungsloser Schaltung ist der Widerstand unendlich, nach dem 
Anlegen der Spannung um die 5.5-5.7k und dann kommt wohl etwas an, denn 
es ändert sich auf 10.5k. Aber dann passiert, wie gesagt, nichts mehr)

Ich vermute mal, mit den Widerständen in den SPI-Leitungen düfte das mal 
nciht zusammenhängen.

Und gleich beim Tippen noch ein Test: Egal, welchen Wert ich hinschicke, 
es stellen sich immer 10.5k ein ...

von Nik A. (nik_a)


Lesenswert?

ich mache mal einen neuen Thread zu den AD5290 auf.
Es gibt zwar bisher schon wenige, mir halfen die aber nicht weiter :)

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
Noch kein Account? Hier anmelden.