PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm läuft nicht



Microby
21.10.2007, 17:40
Hallo,
ich habe mir ein Testboard mit einem ATMega8 gebaut, eigentlich eine normle Grundschaltung.
Pin 7,20,21 an 5V
Pin 8, 22 an GND
Pin 1 über einen 10k Wiederstand an 5V.
Pin 9,10 frei

ein kleines Program zum Ansteuern eines Ports konnte ich auch übertragen
und die Fusebits einstellen und auslesen, sowohl mit PonyProg als auch mit BAscom, alles kein Problem. Beim Übertragen gibs keine Probleme.

Aber das Programm läuft nicht.
Die Ports kann ich auf logisch 1 setzen um auch mit dem Messgerät die 5V messen, aber eine LED mit 1,5 k Wiederstand leuchtet nicht, die Spannung am Pin bricht auf 1,8V zusammen und auch bei logisch 0V brennt die LED nach Anschluß an 5V nicht, Spannung bricht zusammen.
Bei einem einfachen Blinkprogamm kann man allerdings keinen Pegelwechsel an dem entspr. Pin messen.
Die ungenutzten Pins liegen so um die 0,9 bis 1,1V .
Ich habe 2 IC und bei allen das gleiche Problem.

Kann mir das bitte jemand erklären.
Vielen Dank

Rofo88
21.10.2007, 17:47
Entwender ist es ein Hardwarefehler oder die Software stimmt nicht. Wenn Du den Quellcode posten könntest würde man schon mal was ausschließen können.

Meine Kristallkugel sagt : Hast Du die Pins auch auf Ausgang geschaltet 8-[

radbruch
21.10.2007, 17:57
Hallo Microby,

Willkommen im RN-Forum.


aber eine LED mit 1,5 k Widerstand...
bekommt bei 5V satte 0,003A! Bisschen wenig, oder? Eine normale LED braucht etwa 20mA, also wäre bei 5V ein 220 Ohm (rtrtbn) Vorwiderstand angemessen.

Wenn du das Programm (in code-Tags) und Infos zum LED-Anschluß am ATMega8 mitpostest, kann man dir vielleicht weiterhelfen.

Gruß

mic

T.J.
21.10.2007, 20:29
Wie schon beschrieben, poste erstmal deinen Code. Und am besten auch gleich einen Schaltplan wie du es angeschlossen hast.

Eine LED mit 0,003A ist zwar sehr dunkel, aber sehen kann man es dennoch bei den meisten. Was LEDs mindestens brauchen ist ne Spannung. Der Strom bestimmt nur die Helligkeit, nicht ob sie leuchten oder nicht. ;)

radbruch
21.10.2007, 21:00
Was LEDs mindestens brauchen ist ne Spannung.
Aha, wieder was gelernt. Meine Rechnung oben war auch falsch, den Spannungsabfall an der LED habe ich unterschlagen.

mic

Microby
23.10.2007, 01:26
Hallo hier mal mein Programm und der Schaltplan, ich hoffe das hilft weiter.
Allerdings habe ich das Programm unter bestimmten Umsänden zum Laufen gebracht.
1. ISP Adapter bleibt immer angesteckt
2. Spanung aus/an
dann blinken die LEDS auch

aber wenn ich den Reset Taster betätige oder das ISP Kabel abstecke und
und Spannung aus/an schalte ohne angestecktes ISP Kabel gehts nicht.

Das Programm:

.include "C:\Appnotes\m8def.inc"


ldi r16, 0b00000011 ; lade 00000011 ins Register 16 um PC 0 und 1 als Ausgang zu definieren
out DDRC, r16 ; schiebe Inhalt von R 16 ins Datenrichtungsregister

loop1:

ldi r16, 0b00000011
out PortC, r16
rcall Warte

ldi r16, 0b00000000
out PortC, r16
rcall Warte
rjmp loop1

Warte: ; Verzögerungsschleife rund 460ms

ldi r16,$ab
Schleife1:ldi r17, $02
Schleife2:ldi r18,$00
Schleife3:dec r18
brne schleife3
dec r17
brne Schleife2
dec r16
brne Schleife1
nop
nop
nop

Microby
23.10.2007, 01:40
Nochmals der Plan

T.J.
23.10.2007, 05:45
hmmm, im Plan kann ich nichts ungewöhnliches erkennen. wie siehts mit der Konfiguration aus? musst du evtl. nen stack initialisieren oder so?

du verwendest rcall und rjmp, vielleicht hakts da

Hubert.G
23.10.2007, 10:19
Schon mal am Reset-Pin gemessen ob dauerhaft 5V anliegen, Spannung gemessen ob sie nicht zusammenbricht. Das sieht eher nach Hardwareproblem aus.

Nachtrag: Wenn du die Led1 tatsächlich so eingebaut hast wie im Plan dann kannst du wirklich Probleme haben.

robocat
23.10.2007, 10:27
habe jetzt nur kurz drübergeguckt, sieht eigentlich ganz ok aus. ausser: was tut r1 und die led (bei der versorgung)? greife die 5V doch mal nach dem regler ab, nicht nach der led.. sonst wunderts mich nicht dass da was einbricht ;)
ansonsten mal messen, ob der reset-pin zuverlässig wieder hochgeht.

gruesse

edit: Hubert.G war schneller.. man sollte sich mit dem denken immer bissl zeit lassen, meistens übernehmens ja andere für einen.. ;)

Microby
25.10.2007, 20:12
Hallo an alle die mir geholfen haben,

der Fehler lag daran das ich den Stack nicht initialisiert habe.
Ich habe noch die Befehle:
ldi r16,Low(RAMEND)
out SPL, r16
ldi r16,High(RAMEND)
out SPH, r16

hinzugefügt und klappt es.

Danke nochmal allen.

PS: Der Schaltplan war nicht korrekt gezeichnet, die +5V waren schon am Ausgang des 7805 abgegriffen.