Forum: Mikrocontroller und Digitale Elektronik Ports defekt???


von TeslaZwerg (Gast)


Lesenswert?

Ich habe erst vor nem Tag angefangen AVRs zu programmieren, und hab mal
zu testzwecken alle Ports auf ausgang geschaltet und alle auf 0 um dann
mal zu testen war dabei rauskommt. Jetzt hab ich ne Led zwischen Vcc
und Port (mit 1k Widerstand) und die leuchtet nirgends.
Ich hab dann mal die Spannung an den Ports gemessen, und ich messe
zwischen GND und Port (total komisch, da die Ports auf 0 sein müssten)
ca. 0.02V. Kann es sein, dass ich irgendwie meine Ports geschrottet
hab, oder hab ich was vergessen?
Ich benutze den AT90S8515 und hier der Quellcode:

.include "C:\Programme\Atmel\AVR Studio\Appnotes\8515def.inc"

  ldi r16, 0xFF
  out DDRA, r16
  out DDRB, r16
  out DDRC, r16
  out DDRD, r16

         ldi r16, 0x00
         out PORTA, r16
         out PORTB, r16
         out PORTC, r16
         out PORTD, r16

ende:    rjmp ende

Ich hoffe mir kann jemand helfen

von Matthias (Gast)


Lesenswert?

Hi

0,02V sind nicht schlecht. Das kommt von den Transistoren im Port die
nicht mit 0Ohm nach Masse schalten können. Deine LED's müßten
eigentlich alle leuchten. LED evtl. falschrum oder defekt?

Matthias

von TeslaZwerg (Gast)


Lesenswert?

Schonmal danke für die Antwort. Aber da dran liegts leider nicht, weil
wenn ich die Led direkt an GND halt, dann leuchtet sie

von Matthias (Gast)


Lesenswert?

Hi

dein Programm stimmt so (oder ich steht tierisch auf dem Schlauch).
Also muß auch die LED leuchten wenn du sonst alles richtig
angeschlossen hast (Takt? Reset? Block-C?)

Matthias

von anfänger (Gast)


Lesenswert?

poste mal den schaltplan! probier auch eventuell mal kleinere
widerstände aus. bis 20mA kannst du die ports ja belasten.

von TeslaZwerg (Gast)


Lesenswert?

sorry, aber was is Block-C?

Schaltplan is im Prinzip der hier, nur halt auf den AT90S8515
angepasst

http://www.mikrocontroller.net/images/avr-schaltplan.gif

von Matthias (Gast)


Lesenswert?

Hi

Block-C ist auf dem Schaltplan oben links. Der gehört so nah wie
möglich an die Betriebsspannungsanschlüße des AVR. Kannst du den AVR
wieder auslesen nachdem du ihn programmiert hast? Läuft der Oszillator
(mit einem Digital-Multi-Meter mal an XTAL1 die Spannung messen) Du
kannst auch mal versuchen den Kondensator an Reset etwas vergrößern
(100n). Wenn dein Oszillator zu lange braucht um anzuschwingen kommt
der Controller evtl. aus dem Reset ohne das ein Takt anliegt.

Matthias

von TeslaZwerg (Gast)


Lesenswert?

Der Oszillator schwingt...zumindest mess ich ca 2,5V an dessen Ausgang.
Der Block-C is relativ weit vom Controller weg. Muss ich mal umlöten,
und den Kondensator am Reset werd ich auch mal austauschen...
danke für die Antworten, ich meld mich wieder, wenn ich das gemacht
hab. Ach ja, ich kann den AVR wieder auslesen. Das Verify klappt auch
ohne probleme. Zumindest mit Yaap. PonyProg macht bei mir Probleme und
schreibt irgendwelches zeug zusätzlich in den AVR. Yaap erkennt den AVR
auch richtig.

von Sebastian Wille (Gast)


Lesenswert?

Hi Milli-Tesla, oder TeslaZwerg,

ist das Programm nicht ein wenig zu knapp? Kein StackPointer
initializiert, kein .org 0x0xx und ganz wichtig: Kein Sprung zum Anfang
Deines Programms!

Sebastian

von TeslaZwerg (Gast)


Lesenswert?

Ich weiß nicht, ob mein Programm zu knapp ist, aber nacht dem Tutorial
hier auf der Seite müsste es gehen. Ich hab die Änderungen an der
Hardware mal vorgenommen und es hat sich leider nichts geändert. Ich
hab übrigends ne Led zwischen Reset und GND, kann es vielleicht an der
liegen?

von Daniel Jelkmann (Gast)


Lesenswert?

Hi!

@Teslazwerg:
Das Programm scheint korrekt zu sein.
Hast Du verschiedene Pins mit der LED durchprobiert? Bei manchen AVRs
haben einige Port-Pins spezielle Funktionen wie JTAG und sowas, ich
weiss nicht, wie das beim 8515 aussieht...
Sonst schalte die Ports doch mal alle auf 1 und miss dann nochmal, ob
die auch alle 5V haben, bzw. probier die LED dann nochmal gegen Masse
(mit der richtigen Polung).

@Sebastian:
Das Programm ist nicht zu knapp, zumindest sahen meine AVRASM-Programme
immer genauso aus. Den Stackpointer braucht man nicht initialisieren,
wenn man den Stack (wie in dem angegebenen Programm) nicht benutzt. Und
der Sprung zum Anfang, ja den brauch es auch nicht, warum weiss ich
auch nicht so genau, bei mir hats jedenfalls immer ohne geklappt... im
Tutorial sehen die Programme ja auch genauso aus.

Bye
  Daniel Jelkmann

von TeslaZwerg (Gast)


Lesenswert?

ja, ich hab alle Pins ausprobiert. Ich habs jetzt auch mal mit alle Pins
auf 1 probiert, und jetzt glaub ich echt, dass die Ports tot sind, da
die Messungen nichts anderes ergeben haben. Dann muss ich mir wohl
einen neuen AVR bestellen.

von Martin Jansen (Gast)


Lesenswert?

ich würd mal die led zwischen reset und gnd wegnehmen...
nur so als test, überbrück sie doch einfach mal mit nem stück draht und
starte dann nochmal

von Panik (Gast)


Lesenswert?

Oder du hängst mal den Chip Programmer ab!

Wenn du auch an den eingängen für den chip programmer LEDS dran gehängt
hast, kann es sein, dass dein chip gar nicht richtig progammiert worden
ist!
siehe auch unter Atmega8 für Newbies!

also an den eingängen für den chip progammer
erstmal nichts zusätzliches wie  LEDS ranhängen!

von Alex (Gast)


Lesenswert?

LEDs richtig rum angeschlossen? Ist zwar trivial aber könnte auch ne
Fehlerquelle sein.

von TeslaZwerg (Gast)


Lesenswert?

Darf ich überhaupt überbrücken? Weil sonst hab ich soch GND am Reset?
Ich hab sie einfach mal aus der schaltung genommen, bringt aber auch
nix.
Dann mal danke an alle für die Antworten, ich werd mir dann einen neuen
bestellen. Weiß zufällig jemand ob es den wo billiger gibts als bei
Reichelt?

von Conlost (Gast)


Lesenswert?

Hallo
@Martin
Dann dürfte erstrecht nix gehn.
Die Diode ganz raus wäre besser.
Der Resetpin darf nur beim programmieren auf Masse liegen.
Im Betrieb sollte er über einen Widerstand an +5V gelegt werden.

@Teslazwerg
Überprüfe nochmal ganz genau deine Schaltung, ob die Dioden
vom Port über den Widerstand auch wirklich an +5v gehen.
Wie erzeugst du den Takt, mit Quarzoszillator oder mit Quarz?
Ich kann nicht glauben, das alle Ports hinüber sein sollen.

Gruß,
Arno

von Martin Jansen (Gast)


Lesenswert?

ich war davon ausgegangen, dass der resetpin nen pullup hat, warum
sollte man dann die led nicht überbrücken dürfen?
da fällt mir grad ein, @ teslazwerg, haste überhaupt nen kondensator
gegen gnd am reset dran?
mein gedanke war nämlich, dass der resetpin nie auf gnd gezogen wird,
wenn doch die led dazwischenhängt.

von Daniel Jelkmann (Gast)


Lesenswert?

Hi nochmal.

Glaub ich auch nicht, dass alle Ports hin sind... es scheint viel
wahrscheinlicher zu sein, dass die Programmierung des Chips nicht in
Ordnung ist bzw. der uC nicht richtig läuft, weil der Reset nicht auf
high gezogen wird oder sowas... ich würde mir das an Deiner Stelle
nochmal genau ansehen und mit der Schaltung im Tutorial vergleichen,
und andere Sachen erstmal rausnehmen (LED am Reset !?).
Wenn das Programmieren (mit Verfiy) geht, dann scheint der Quarz zu
funktionieren. Prüf mal, ob der Reset nach dem Programmiervorgang auf
5V liegt...

Bye
 Daniel Jelkmann

von Conlost (Gast)


Lesenswert?

Hallo,
der Resetpin hat einen internen Pullup von 100k bis 500k.
Das ist recht hochohmig und kann zu Störungen führen,
deshalb setzt man aussen noch einen 10k Widerstand dran
und einen Kondensator von 10nF bis 100nF nach Masse.
Gruß,
Arno

von TeslaZwerg (Gast)


Lesenswert?

Wow!!!
Jungs, ich danke euch, es klappt luftsprung
Ich hab jetzt nochmal alles von vorne gemacht, Programm neu kompiliert,
AVR gelöscht, neu programmiert (Led war immer drausen, aber da dran hat
man so schön gesehen, wie der Reset-Zustand is :) ) 5,02V am Reset
gemessen, und siehe da, es leuchtet, sogar an allen Ports
Dann kann ich ja endlich mit meinem ersten "Projekt" anfangen.
Man, ihr wisst gar net wie ich mich freu, nach über ner Woche Arbeit
(Platine für ISP-Adapter ätzen, nach Fehler suchen etc.) läuft jetzt
endlich mein erstes Programm.
Danke nochmals

ach ja, die Led schien der Fehler gewesen zu sein, mit der war der
Reset nur auf 2,3V, aber was mich dann irritiert: der ISP-Adapter
wollte gestern ohne die nicht funktionieren, da hab ich nämlich
gemessen, ob der Reset wärend dem programmieren auf 0V geht, und dass
war nur der Fall, wenn ich gemessen hab (ohne Voltmeter ging das
programmieren nicht) oder eben, wenn die Led drin war.

von Conlost (Gast)


Lesenswert?

Na dann kannste ja heute Nacht ruhig schlafen wenn es nun geht. :-)
Gute Nacht,
Arno

von TeslaZwerg (Gast)


Lesenswert?

ja, dass konnt ich die letzen Nächte nicht besonders, danke :)

von Martin Jansen (Gast)


Lesenswert?

@ teslazwerg:
wenn du willst kannst du den Zustand der Resetleitung immer noch mit
ner LED anzeigen lassen, indem du einfach die Basis eines
PNP-Transistors über nen 2k Widerstand mit dem Pin verbindest, von Vcc
ne LED mit Vorwiderstand an den Collector und Emitter an GND.
Das hat bei mir ganz gut gefunzt, sobald der Controller auf Reset
"steht" geht deine LED an.

von TeslaZwerg (Gast)


Lesenswert?

ja, könnt ich machen, danke...muss mal in meiner Kiste kramen, ob ich
noch PNPs hab...
Ich muss die ganze Platine bei gelegenheit eh nochmal neu machen

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.