Forum: Mikrocontroller und Digitale Elektronik Atmega8 ist programmierbar, läuft aber nicht


von Batti (Gast)


Lesenswert?

Hallo,
ich arbeite schon seit einiger Zeit mit meinem Atmega8.
Seitdem ich mit ihm einen Motortreiber angesteuert habe,
ist es nicht mehr möglich die I/O zu schalten.
Man kann sie weder auf GND noch auf VCC schalten.
Der µC wird aber korrekt erkannt, lässt sich korrekt programmieren, und
liefert beim lesen des Flash's auch die korrekten Werte.

Kennt jemand zufällig des Rätsels Lösung?

Für jede Form der Hilfe wäre ich sehr dankbar

MfG
Batti

von Batti (Gast)


Lesenswert?

Nachtrag:

Selbst ein Austausch des µC liefert das gleiche Fehlerbild...

:-(

von Frank Linde (Gast)


Lesenswert?

Keine oder zu langsame Schutzdioden verwendet oder zu hohen Strom aus
dem Controller gezogen und damit die entsprechenden Pins abgeschoßen?

Gruß, Frank

von Batti (Gast)


Lesenswert?

also ist der controller kaputt?
War ein nagelneuer Controller, hab nur ne led angeschlossen
(wollte nur sehn ob er die Ports schaltet).
Ich vermute das der Controller garnicht das Programm abarbeitet...

von Lightning (Gast)


Lesenswert?

@Batti
Schau mal bei den Fusebits nach vileicht
hast da was falsch eingestellt ???

Schik mir mal den code ich probiers dann
mal aus.

Gruss Lightning

von Batti (Gast)


Lesenswert?

Ich glaube ich muss das Problem noch ein wenig näher erleutern.

Ich habe einen Motortreiber mit dem "letzten" Atmega8 angesteuert.
Dieses funktionierte nicht so ganz, und als meine Fehlersuche ergab,
das der µC, der vorher noch problemlos funktionierte, keine Pegel mehr
ausgab hab ich diesen ausgetauscht.
An dem neuen µC hab ich nur eine low-current led angeschlossen, aber
auch der neue µC gibt nichts aus.

Die Fusebits sind so eingestellt, wie auf dieser Seite beschrieben
(AVR-Tutorial).
Mit dieser EInstellung funktionierte der alte µC auch tadellos.

Ich bin echt ratlos, denn die Erkennung und die Programmierung
geschieht ohne Probleme.

Der Test-Code ist der folgende:
         ldi r16, 0xFF
         out DDRD, r16
         ldi r16, 0b00000000
         out PORTD, r16

Mit freundlichen Grüßen

Batti
(Danke an alle, die mir mit ihren Tipps helfen)

von Batti (Gast)


Lesenswert?

Beim Code hab ich vergessen die m8def.inc einzubinden, dies hab ich
natürlich beim testen gemacht...

von Lightning (Gast)


Lesenswert?

@Batti

OK. schließ mal eine led mit dem
Pluspol an den AVR Pin D0 dann den
minuspol auf masse. Sollte man zwar
nicht machen aber für einen ganz kurzen
test geht das schon Achtung! kurz machen
sonst geht die led Flöten.

Hier der code dazu:
---------------------
.include "m8def.inc"

ldi r16, 0xFF
out DDRD, r16
ldi r16, 0x01
out PORTD, r16

loop:
rjmp loop
---------------------

Die led sollte leuchten.

Gruss Lightning

von Batti (Gast)


Lesenswert?

ich muss leider noch etwas ergänzen (ist echt viel heute...)

Zum Schluss des Programms ist natürlich ebenfalls eine Endlosschleife
eingebaut.

Und noch eine Frage, wie sind die Ports belegt, wenn sie nicht
"angesteuert" werden?
Dann dürfte auf denen doch weder Masse noch VCC liegen...
Also quasi der Zustand den meine Ports trotz Programmierung auch gerade
haben...

MfG
Batti

von Lightning (Gast)


Lesenswert?

@Batti
Ja wenn ein port nicht angesprochen wird
is es weder masse noch VCC.

Und funzt das programm?? Leuchtet die Led ??

Gruss Lightning

von Batti (Gast)


Lesenswert?

Danke Lightning für die Hilfe, aber es funktioniert nicht :-(.
Die LED Leuchtet nicht.
Er schaltet einfach überhaupt nicht die Ports.
Dies hab ich ja mit der LED vorher auch schon getestet.
Die LED hab ich angschlossen wie im AVR-Tutorial beschrieben.
Wenn ich diese an GND gehalten habe, dann leuchtete sie, aber der µC
schaltet seine Ports nie auf GND (auch nicht auf VCC).

Werde daraus nicht schlau.

MfG
Batti

von Batti (Gast)


Lesenswert?

Danke an alle!

Muss jetzt erstmal ne Pause mit dem Testen machen, heut Abend geht es
aber ganz sicher weiter ;-).

Wenn jemand noch des Rätsels Lösung einfällt (oder weitere Denkanstösse
liefert), wäre ich ihm sehr verbunden, wenn er diese mir mitteilt.

MfG
Batti

von Lightning (Gast)


Lesenswert?

@Batti
hm. Dann setze mal statt 0x01
ähm 0xF0 ein und miss die ports
durch. PortD sollte so geschaltet
sein 11110000.

Hast du vileicht am falschen port gemessen ??
PortB oder PortC ??

Gruss Beni

von Batti (Gast)


Lesenswert?

Also hab einfach mal ALLE Ports auf null gesetzt, jetzt müsste ja
eigentlich GND anliegen... Müsste ;-), an keinen Pin liegt GND.

Trotzdem kann ich den Controller fehlerfrei programmieren, und auch das
"programm" wieder aus dem µC downloaden.

???????????????????????????????????????

Ich bin ratlos.

MfG
Batti

von Lightning (Gast)


Lesenswert?

@Batti

Dann setze mal alle ports auf High
und miss dann.
Ich kanns jetzt nimma
mit dem mega8 probieren. der hat den geist
aufgegeben--> Geht garnimma wegen kurzzeitig
zu viel Strom. Naja ich könnts höchstens mit
dem alten 4433 weiter testen aber naja.
Egal

Gruss Lightning

von Harald Manske (Gast)


Lesenswert?

Vielleicht liegt es ja doch an der Hardware.

Funktioniert die Spannungsversorgung noch zuverlässig ? Die ist ja
teilweise entkoppelt von der Versorgung des Programmers.

Hast du vielleicht den Reset Pin durch einen Überwachungsbaustein auf
GND gezogen ?

von Batti (Gast)


Lesenswert?

Reset liegt auf VCC, das hab ich auch schon getestet :-(.
Die Spannungsversorgung liefert 5V. Kann aber nicht testen wie
"sauber" die ist. Wenn ich nen Controller überlastet habe,
"brennen" dann nur die I/o durch, oder ist der dann total kaputt und
lässt sich nicht einmal mehr programmieren?

@Lightning, musst doch nicht extra deinen Controller für mich grillen.
Danke für die Unterstützung!

MfG
Batti

von Lightning (Gast)


Lesenswert?

@Batti

Naja. Mich hats e schon gewundert das der noch
geht weil der hätte schon vor längerer zeit
kaputt gehn müssen da ich ihn verkehrt in die schaltung
eingebaut habe. vileicht war es ne verzögerte
zerstörung--> Zeitbombe :-))

Naja muss e wieder mal welche bestellen
dann nehm ich gleich um die 10 ATmgea8
dann hab ich immer genug auf lager.

Gruss Lightning

von Batti (Gast)


Lesenswert?

Ich hab jetzt noch meinen Atmega32 aufgebaut, auch dieser ist
programmierbar und wird korrekt erkannt. Es ist auch möglich die zuvor
programmierten Programme wieder korrekt zu laden. Doch leider ist es
wieder das gleiche, es ist nicht möglich die Ports zu schalten.

Ich teste momentan mit folgenden Programm:

.include "m32def.inc"

   ldi r16, 0xFF
         out DDRA, r16

         ldi r16, 0x00
         out PORTA, r16

   ldi r16, 0xFF
         out DDRB, r16

         ldi r16, 0x00
         out PORTB, r16

         ldi r16, 0xFF
         out DDRC, r16

         ldi r16, 0x00
         out PORTC, r16

         ldi r16, 0xFF
         out DDRD, r16

         ldi r16, 0x00
         out PORTD, r16
ende:    rjmp ende

Die Spannungsversorgung liefert 5V, ich kann leider nicht überprüfen
wie sauber diese Spannung ist.

Kann es sein, das die Spannungsversorgung einen weg hat?
Oder der Programmer, obwohl er offensichtlich seinen Job tut.

Die Fusebits sind auf jedenfall richtig gesetzt.
Bin langsam echt verzweifelt.

MfG Batti

von Batti (Gast)


Lesenswert?

Das Problem ist gelöst!

Der Grund war ein Problem mit der Programmiersoftware (yaap).
Zufällig hab ich ein altes Projekt geladen, und es funktionierte.
Mehr kann ich dazu mom. nicht sagen, werde das mal genauer
untersuchen.

Danke an alle die mich so tatkräftig unterstützt haben!

MfG

Batti

von Lightning (Gast)


Lesenswert?

@Batti
Nim doch PonyProg das geht immer
mit allen programmen. Ich benutze
es auch und hatte bisher keine probleme
mit dem brennen der software.

Gruss Lightning

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.