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: > #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
Ändere ich mit dem AVR-Studio. So wir es Aussieht funktioniert das. Gut wenn es funktionieren würde, müsste es blinken... ;-(
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.
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.
Hier noch 2 Fotos von der Platine. Habe den Quarz ersteinmal wieder runtergelötet. Ich denke das war die Verzweifelung.
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;)
Massefläche muss ja nicht sein, aber eins ist sicher. Wo ein Strom reinfließt muss der selbe auch wieder raus...
Hi >Seit es Eagle gibt funktionieren Schaltungen natürlich >nur noch mit Masseflächen. ROFL;) Was ist Eagle? MfG Spess
@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.
Ist ja vielleicht ne 4lagige Platine. Da sehen wir die Planes natürlich nicht ^^
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.
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.