Forum: Mikrocontroller und Digitale Elektronik Bekomme Atmega644 nicht zum laufen. Bräuchte Hilfe


von Ronald (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich bin schon einige Jahre, immermal ein bisschen dabei Mikrocontroller 
zu programmieren. Habe jetzt ein halbes Jahr Pause gemacht und habe mir 
jetzt endlich eine Platine ätzen lassen. Drauf ist ein DOGL, ENC28J60, 
ein paar Cursortasten und 4 Ausgänge mit LEDs.

Mein Problem ist es, das ich den Mega zwar flashen kann. Aber nichts tut 
sich. Ich kann Fusebits schreiben und lesen und AVR-Studio gibt mir die 
Signature zurück.Auch habe ich an PINB1 die Takt über das Bit CLKOUT 
messen können. Auslesen kann ich das Programm auch, zwar in 
Maschinencode aber es wurde aufjedenfall etwas in den Speicher gebrannt. 
Desweiteren habe ich mit dem Multimeter alle Beinchen des Megas 
überprüft, keines ist mit einem anderen verbunden.

Ich habe ein ganz simples Programm, welches einfach nur eine LED an und 
aus machen soll, nix weiter.


#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
int main(void)
{
    DDRD |= (1 << PD3);
    while(1)
    {
        PORTD |= (1 << PD3);
        _delay_ms(200);
        PORTD &= ~(1 << PD3);
        _delay_ms(200);
    }
}


Der Mega ist ein ATMEGA644-20AU im TQF44 Gehäuse
Programmiert wird er mit eine USB-ISP Programmer von OBD-Diag
Als Entwicklungsumgebung wechsele ich zwischen AVRSTUDIO 4.13 und der 
neuesten WINAVR Umgebung
Fuses stelle ich mit dem AVRSTUDIO.

Den Schaltplan habe ich mit TARGET erstellt, hierzu ist zu sagen, das 
ich den Schaltregler noch nicht eingebaut habe und die 
Spannunsversorgung extern mit 5Volt auf die Schaltung gebe, welche dann 
über den Linearregler auf 3,3V heruntergeregelt wird.

Den Reset Taster habe ich Samt Widerstand und Kondesator schon entfernt, 
war ein Versuch, hatte gedacht dieser würde das Problem verursachen. Hat 
aber rein gar nichts gebracht.

Wenn ich mit einem Widerstand ein Beinchen des ULN2003 kitzle geht auch 
die entsprechende LED an... vielleicht nicht so gut für den MEGA???

Vielleicht bin ich einfach nur Blind vor Verzweifelung, aber vielleicht 
hat jemand eine Lösung. Wenn ich Hilfe bekommen würde, wäre ich sehr 
verbunden.

von Michael (Gast)


Lesenswert?

Wie änderst du die Fuses ?

von Karl H. (kbuchegg)


Lesenswert?

Ronald schrieb:

> #include <avr/io.h>
> #define F_CPU 8000000UL
> #include <util/delay.h>
> int main(void)
> {
>     DDRD |= (1 << PD3);
>     while(1)
>     {
>         PORTD |= (1 << PD3);
>         _delay_ms(200);
>         PORTD &= ~(1 << PD3);
>         _delay_ms(200);
>     }
> }
>

?

laut deinem SChaltplan hängen die LED an PD4, PD5, PD6, PD7

an PD3 hängt keine LED

von Ronald (Gast)


Angehängte Dateien:

Lesenswert?

Ändere ich mit dem AVR-Studio. So wir es Aussieht funktioniert das.
Gut wenn es funktionieren würde, müsste es blinken...
;-(

von Ronald (Gast)


Lesenswert?

Gut OK, da hängt direkt keine. Jedoch hängt an diesem Pin die 
Hintergrundbeleuchtung des DOGL. Werde es aber noch einmal mit den LEDs 
prüfen.

von Karl H. (kbuchegg)


Lesenswert?

Ronald schrieb:
> Ändere ich mit dem AVR-Studio. So wir es Aussieht funktioniert das.
> Gut wenn es funktionieren würde, müsste es blinken...
> ;-(

Ist jetzt zwar nicht das Problem, aber JTAGEN schaltest du am besten 
gleich mal aus.

von Ronald (Gast)


Angehängte Dateien:

Lesenswert?

Egal welchen Ausgangs Pin ich nehme, nix.
Hier noch die HEX aus dem Flash, vielleicht kann mir jemand sagen, ob 
das rein ersichtlich richtig ist, oder schon im gebrannten Flash ein 
Fehler ist.

von Ronald (Gast)


Lesenswert?

JTAGEN ist jetzt aussgeschaltet.

von Ronald (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch 2 Fotos von der Platine. Habe den Quarz ersteinmal wieder 
runtergelötet. Ich denke das war die Verzweifelung.

von spess53 (Gast)


Lesenswert?

Hi

Was ich auf dem Schaltplan und der Platine vermisse ist die Abblockung 
der einzelnen VCC-Anschlüsse des ATMega. Da gehört an jeden ein C. 
Ausserdem ist deine Masse sehr schmalbrüstig. Die führt man 
üblicherweise als Fläche aus.

MfG Spess

von holger (Gast)


Lesenswert?

>Ausserdem ist deine Masse sehr schmalbrüstig. Die führt man
>üblicherweise als Fläche aus.

Komisch, bei meinen alten TTL Gräbern war das wohl
nicht so wichtig. Die funktionieren auch ohne Massefläche.
Ich hab die aber auch gebaut bevor Eagle erfunden wurde.

Seit es Eagle gibt funktionieren Schaltungen natürlich
nur noch mit Masseflächen. ROFL;)

von Chris (Gast)


Lesenswert?

Massefläche muss ja nicht sein, aber eins ist sicher. Wo ein Strom 
reinfließt muss der selbe auch wieder raus...

von spess53 (Gast)


Lesenswert?

Hi

>Seit es Eagle gibt funktionieren Schaltungen natürlich
>nur noch mit Masseflächen. ROFL;)

Was ist Eagle?

MfG Spess

von holger (Gast)


Lesenswert?

@Spess

>Was ist Eagle?

Ist doch völlig egal.
Deine Theorie der Masseflächen kann helfen, kann aber auch schaden
wenn man es nicht richtig macht. Das ist kein Allheilmittel.

von ... (Gast)


Lesenswert?

Ist ja vielleicht ne 4lagige Platine. Da sehen wir die Planes natürlich 
nicht ^^

von Klaus D. (kolisson)


Lesenswert?

Hallo Ronald,

jetzt habe ich alle Beiträge hier mehrfach gelesen und
konnte nicht den Schaltplan erkennen, den Du im ersten Post
angehängt hast.

.. aber wenn Karl Heinz gesehen hat, dass an dem Pin kein Led 
drannehängt
solltest Du ihm vielleicht glauben.

-> Der Mann hat noch nie groben Unfug erzählt


Gruss Klaus

von Hc Z. (mizch)


Lesenswert?

Ronald schrieb:
> Hier noch die HEX aus dem Flash,

Diese .hex setzt in DDRD Bit 7, nicht Bit 3:
1
     88:       57 9a           sbi     0x0a, 7 ; 10
und stimmt somit nicht mit dem gezeigten Code überein.  Ebenfalls das: 
Geblinkt wird später auf Bit 4 (nicht 3):
1
     8e:       5c 9a           sbi     0x0b, 4 ; 11
2
 ...
3
     9e:       5c 98           cbi     0x0b, 4 ; 11
Blinken kann mit dieser .hex nichts (höchstens durch den Pullup seeehr 
schwach).

Die gezeigten Adressen sind Byte-Adressen (Disassembler: avr-objdump).

von Ronald (Gast)


Lesenswert?

Bekomme es immer noch nicht hin. Habe jetzt das Programm noch ein paar 
mal geflasht. Habe geguckt, ob ich wirklich keine Querverbindungen zu 
anderen Beinchen habe. Nichts. Es tut sich nichts.

Ich habe so ein zwei Ideen. Aber bin mir nicht sicher. Vielleicht ist 
der ULN2003 falsch rum eingebaut. Ich dachte eigentlich Strich oben ist 
die Kennzeichnung für PIN1. Aber wenn der falschrum drin ist, Wieso kann 
ich dann die LEDS zum leuchten bringen, wenn ich ein Eingangsbeinchen 
kitzle.
Dann verstehe ich nicht, warum ich ihn überhaupt flashen kann, wenn sich 
rein ersichtlich aber nichts an den Ausgängen tut? Laufen tut er, 
jedenfalls denk ich das, weil CLKOUT rund 8MHz ausspuckt. Könnte es sein 
das die Pins falch adressiert werden und deshalb nicht ausgegeben wird?
Oder ist der Controller hin(Flashen ja, Ausgänge kaputt????)


Bitte um Hilfe, wie ich vorgehen kann, damit ich den Fehler finde!!!

Mit der Massefläche haben natürlich meine Vorschreiber recht. Aber 
dennoch müsste er das was ich vorhabe doch funktionieren. Lochraster 
Basteleien gehen ja auch, ohne MAssefläche.

Ronald

von Ronald (Gast)


Angehängte Dateien:

Lesenswert?

Danke das ihr mir geholfen habt.
Der Fehler war sehr eigenartig. Habe den Reset-Pin nocheinmal überprüft 
und bin anscheind hart an VCC gekommen, auf einmal blinkt es. Verrückt. 
Jetzt funktioniert es einwandfrei und ich kann loslegen!!!

von Loonix (Gast)


Lesenswert?

spess53 schrieb:
> Ausserdem ist deine Masse sehr schmalbrüstig. Die führt man
> üblicherweise als Fläche aus.

Ronald schrieb:
> Mit der Massefläche haben natürlich meine Vorschreiber recht. Aber
> dennoch müsste er das was ich vorhabe doch funktionieren. Lochraster
> Basteleien gehen ja auch, ohne MAssefläche.

Fläche allein ist nicht das Kriterium. Eine Masse-Bahn als Rückleiter 
neben jeder Signalleitung sollte aber schon drin sein, solange nicht 
gegenüber eine geschlossene(!) Massefläche liegt.

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.