Hallo zusammen,
ich nutze den TempSensor ADT7320 der Firma Analog Devices. Dieser
verwendet den SPI Bus und ist mit einem PullUp Widerstand deaktiviert.
Trotzdem habe ich auf dem SPI Bus folgende Spannungen anliegen, die das
Programmieren eines ATmega2560 per ISP unmöglich machen:
MISO: 2,5V - 3V (schwankend)
SCK: 2,7V
MOSI: 2,5V
RESET: 0V
Diese Werte liegen an, sobald ich nur die Versorgungsspannung von +5V
anlege. Ich habe verschiedene Chips ausprobiert.
Wenn ich einen Arduino entsprechend Programmiere und dann an SPI
anschließe, kann ich den Sensor wie gewünscht auslesen. Nur in meiner
eigenen Schaltung programmiere ich den Controller halt per ISP und das
funktioniert nicht.
Hat jemand eine Idee oder etwas vergleichbares schon einmal gesehen?
Profi Frickler schrieb:> AB schrieb:>> MISO: 2,5V - 3V (schwankend)>> SCK: 2,7V>> MOSI: 2,5V>> RESET: 0V>> ..... und wo hast du den CS deines ADT7320 angeschlossen?
Hallo Frickler,
die sind in der Schaltung an einem Pin des Mikrocontrollers.
Pull Ups, sind da auch dran. Eingezeichnet sind 1k PullUps, habs aber
auch schon mit 10k versucht.
Siehe angehängtes Bild.
Der Slave hat seinen MISO-Ausgang hochohmig, wenn der CS high ist. Daher
mal ne dumme Frage:
bei manchen Atmels war es damals so, dass der SPI-Bus nicht der
Programmierbus war. Ist beim ATmega2560 das vielleicht auch der Fall und
dein Sensor hat damit nichts zu tun?
Oder ist beim ISP der Reset nicht angebunden?
Felix A. schrieb:> Der Slave hat seinen MISO-Ausgang hochohmig, wenn der CS high ist.> Daher> mal ne dumme Frage:> bei manchen Atmels war es damals so, dass der SPI-Bus nicht der> Programmierbus war. Ist beim ATmega2560 das vielleicht auch der Fall und> dein Sensor hat damit nichts zu tun?> Oder ist beim ISP der Reset nicht angebunden?
Wenn der Chip aus der Schaltung ist, lässt sich der ATmega ohne Probleme
programmieren. Nur sobald er eingesetzt wird, gibts ein Problem.
ISP = SPI am ATmega2560, aber danke für die Idee!
ISP Reset ist angebunden.
Hi
>Daher mal ne dumme Frage: bei manchen Atmels war es damals so, dass der >SPI-Bus
nicht der Programmierbus war.
Das ist auch noch so und betrifft nur aber die 64-pol. AVRs.
MfG Spess
Gerade gemacht.
1k in zwischen DOUT (MISO) und GND. Folgende Pegel stellte sich ein:
MISO: 0,01V - 0,03V schwankend
MOSI: 0,22V
SCK: 0,25V
Strom durch den Widerstand: 0,01 - 0,02 mA.
Ohne Widerstand hab ich es nicht gemessen. Bringt das einen
Erkenntnisgewinn?
Felix A. schrieb:> Ist beim ATmega2560 das vielleicht auch der Fall und> dein Sensor hat damit nichts zu tun?
Handbuch sagt: Pins PB1, PB2, PB3 bei TQFP100, PE0, PE1, PB1 bei TQFP64
Package. Aber der OP kann den Atmega ja via ISP ansprechen außerhalb der
Schaltung.
Wenn der Op mehr von seinem Schaltplan posten würde, könnte man
eventuell sehen was da los ist. Vielleicht hat er auch nur einen dicken
Kondensator am RESET.
Jim M. schrieb:> Felix A. schrieb:>> Ist beim ATmega2560 das vielleicht auch der Fall und>> dein Sensor hat damit nichts zu tun?>> Handbuch sagt: Pins PB1, PB2, PB3 bei TQFP100, PE0, PE1, PB1 bei TQFP64> Package. Aber der OP kann den Atmega ja via ISP ansprechen außerhalb der> Schaltung.>> Wenn der Op mehr von seinem Schaltplan posten würde, könnte man> eventuell sehen was da los ist. Vielleicht hat er auch nur einen dicken> Kondensator am RESET.
Am RESET hängt nen 100nF, aber auch mit oder ohne ihm lässt sich der
Controller nicht programmieren.
Ansonsten ist momentan nur der ADT7320 auf nem Breakout Board auf de
Steckbrett vorhanden und zeigt ein solches Verhalten.
Mess mal am CS Input des ADT7320. Dort muss High sein, wenn der Chip
nicht angesprochen wird. Und dann sollte MISO vom ADT7320 auch nicht
getrieben werden.
Ein Serien-Widerstand in die MISO-Leitung vor den ADT7320 würde als
Notlösung auch noch gehen (ca. 1k).
Gruß, Stefan
Stefan K. schrieb:> Mess mal am CS Input des ADT7320. Dort muss High sein, wenn der> Chip> nicht angesprochen wird. Und dann sollte MISO vom ADT7320 auch nicht> getrieben werden.> Ein Serien-Widerstand in die MISO-Leitung vor den ADT7320 würde als> Notlösung auch noch gehen (ca. 1k).>> Gruß, Stefan
Hi Stefan,
Das habe ich bereits mehrfach überprüft. Der ist in jedem Fall high!
Die AppNote von Atmel mit den Widerständen in der ISP Leitung kenne ich,
allerdings würde ich gerne den "Fehler" finden. Bei nicht angelegtem CS
(also CS = high), sollte der Chip doch eigentlich gar nichts tun...
Zu dem Strom durch den Widerstand:
ja, gibt es. Der ADT treibt scheinbar nicht gegen deinen ISP.
Merkwürdig sind Reset = 0V und dass der ADT treiben soll.
Fehlt ein Pullup am Reset deines Controllers? Der Interne reicht meist
nur, wenn extern nix dran hängt. Oder hat der Resetpin gar einen
Kurzschluss nach Masse über die ADT-Platine?
Und der 100nF sollte durch kleinere Werte wie 1nF ersetzt werden. Alle
meine Schaltungen machen selbst ohne diesen Kondensator keine
merkwürdigen Resets.
Ich wiederhole nur nochmal was Jim M. im Beitrag #4326848 schrieb:
> Wenn der Op mehr von seinem Schaltplan posten würde, könnte man> eventuell sehen was da los ist.
Bis dahin ist es alles Glaskugel polieren.
> MISO: 2,5V - 3V (schwankend)> SCK: 2,7V> MOSI: 2,5V> RESET: 0V>> Diese Werte liegen an, sobald ich nur die Versorgungsspannung von +5V> anlege.
Was micht wundert, ist die niedrige Spannung zwischen 2.5V und 3.0V,
obwohl die Versorgung 5V ist. Ist sowohl der mc als auch der ADT7320 mit
5V versorgt? Gibt es auch noch einen 3.0 oder 3.3V-Teil in der
Schaltung?
Gruß, Stefan
Stefan K. schrieb:>> MISO: 2,5V - 3V (schwankend)>> SCK: 2,7V>> MOSI: 2,5V>> RESET: 0V>>>> Diese Werte liegen an, sobald ich nur die Versorgungsspannung von +5V>> anlege.>> Was micht wundert, ist die niedrige Spannung zwischen 2.5V und 3.0V,> obwohl die Versorgung 5V ist.
Und warum ist Reset auf 0V?
Reset hat doch mit dem AD-Device überhaupt nichts zu tun.
Oder läuft während der MEssung die Programmierung schon? Dann wäre es
allerdings klar.