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.
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.
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.
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
>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;)
@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.
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
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).
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
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!!!
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.