Hallo!
Da mir geraten wurde,einen eigenen Thread aufzumachen, tue ich das hier
mal.
Ich habe mir eine Leiterplatte fertigen lassen. Darauf befindet sich ein
ATmega32 16AU mit dem ich 2 Sensoren auslesen möchte.Getaktet wird mit
einem 16MHZ Ceramic Resonantor (CSTCE16M0V53A) Das alles funktionierte
vorher einwandfrei,wo ich allerdings einen ATmega16 und einen Takt von
8MHz verwendet habe.
Betrieben wird alles mit 3,2V.
Heute nun hab ich das Board in Betrieb nehmen wollen und der Sensor, den
ich über SPI auslese, gibt mir nichts zurück.
Ich programmiere mit der aktuellsten Version des AVR Studio und JTAG ICE
mkII.
Beim messen der SPI-Signalpegel habe ich festgestellt,dass der Highpegel
vom Taktsignal SCK anstatt etwa 3V nur 450mV beträgt!!
Meine Vermutung ist,dass ich beim Einstellen der Fuse Bits etwas falsch
gemacht habe.
Meine Einstellungen sind:
JTAGEN 1
SPIEN 1
CKOPT 1
SUT_CKSEL Ext. Crystal/Resonator,High Freq,Start-up: 16K CK+64ms
Brown out Vcc 2,7V
Fusebit High 0x89
Low 0xFF
Ein Routingfehler auf der Leiterplatte kann ausgeschlossen werden.Hab
ich ebenfalls schon durchgemessen.
Hat jemand eine Idee,was da falsch sein könnte?
> Wenn mit Oszi: Erkennt man an der Signalform ungewöhnliches?
Ich messe mit dem Oszi und Ungewöhnliches kann ich nicht erkennen.
Mein Programm läuft auch durch und auf der MOSI-Leitung sind die Pegel
auch einwandfrei. Highpegel ist dort 3,25V
Nur auf der SCK-Leitung ist eben das Highsignal 480mV.
Mein Bustakt ist 250KHz.
> Du betreibst den Mega32 mit 3,2 V außerhalb seiner Spezifikationen. Das> geht nur mit der L Ausführung, dann aber mit max. 8 Mhz.
Du hast recht.Jetzt seh ich das auch grad im Datenblatt.Das wird dann
wohl der Fehler sein. :(
Guten Morgen.
Ein Nachtrag von mir:
Ich habe gestern den 16MHz Keramik Resonator durch einen 8MHz
ausgetauscht und das Problem besteht weiterhin.
> Du betreibst den Mega32 mit 3,2 V außerhalb seiner Spezifikationen. Das> geht nur mit der L Ausführung, dann aber mit max. 8 Mhz.
Das ist doch nicht das Problem, da ich auf meinem funktionierenden Board
einen ATmega16 (ohne L-Bezeichnung) drauf habe und diesen auch mit 3,2V
versorgen kann. Dabei läuft das Programm auch einwandfrei.Laut
Datenblatt dürfte dies ja aber nicht gehen,da dort Vcc 4,5...5,5V sein
sollte!
Komischerweise hat mein I²C-Takt den 3,2V Highpegel?!
Des wegen gibt es ja die L-Typen, die laufen zuverlässig bei niedriegen
Spannungen, bei den normalen Typen wird das nicht garantiert. Das kann
bedeuten, dass das meiste läuft und nur ein Teil, wie z.B. bei dir die
SPI-Schnittstelle, nicht.
> Das kann bedeuten, dass das meiste läuft und nur ein Teil, wie z.B. bei dir >
die SPI-Schnittstelle, nicht.
Dann wäre das aber denke ich schon großer Zufall,wenn ich hier 3
Controller habe,die mir bei 3,2V alle keine Probleme auf sämtlichen
Leitungen machen oder?
Maik schrieb:> Dann wäre das aber denke ich schon großer Zufall,wenn ich hier 3> Controller habe,die mir bei 3,2V alle keine Probleme auf sämtlichen> Leitungen machen oder?
Man betreibt Bauteile nicht außerhalb ihrer Spezifikation. Basta.
Versuch doch mal die schaltung mit 5V zu speisen und schau mal, wie dann
die Highpegel aussehen. Da siehst du dann, ob es an dem
nicht-spec-konformen Betrieb liegt.
Gruß Skriptkiddy
Hmm, ich dachte (hoffte) das mit der Out-of-Spec wär's gewesen. Mein
Verdacht liegt immer noch eher bei der Hardware.
Wenn die externe SPI-Hardware abtrennbar ist oder nicht stören kann
(sieht man mangels Schaltplan leider nicht), dann den SCK-Pin mal als
IO-Pin programmieren und klappern bzw. messen ob der ohne die SPI-Unit
einen sauberen HIGH produzieren kann.
Und ich würde mit der Tastspitze des Oszi mal suchen, wo der Rest meines
SCK-Signals versickert. Also: Hat irgendein anderer Pin ebenfalls den
SCK-Takt - speziell MISO, der direkt neben SCK liegt (Lötbrücke).