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
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
Schonmal danke für die Antwort. Aber da dran liegts leider nicht, weil wenn ich die Led direkt an GND halt, dann leuchtet sie
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
poste mal den schaltplan! probier auch eventuell mal kleinere widerstände aus. bis 20mA kannst du die ports ja belasten.
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
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
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.
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
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?
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
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.
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
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!
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?
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
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.
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
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
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.
Na dann kannste ja heute Nacht ruhig schlafen wenn es nun geht. :-) Gute Nacht, Arno
@ 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.