Hallo zusammen, seit Jahren bin ich bereits als stiller Leser hier im Forum unterwegs und schaue mir den einen oder anderen Tipp ab oder aber schappe einigie hilfreiche Informationen auf. Daher an dieser Stelle schon mal ein Danke Schön an die Mitglieder:) Zum ersten Mal benötige ich nun aber eure Hilfe bei einem konkreten Problem bei meinem Projekt. Anbei der Schaltplan und das Board-Design einer Platine, die ich selbst entworfen habe. Als Kernelement verwende ich einen Atmega8L. Die Funktion sei erst einmal irrelevant, es geht mir viel mehr um die eigentliche Funktionalität des Controllers. Die Funktionsweise der Platine habe ich zunächst auf einem Steckbrett überprüft und auch die Software mit dessen Hilfe geschrieben, da hat alles wunderbar funktioniert. Danach hab ich das Board in EAGLE entworfen und hab es auch fertigen lassen. Als Ergebnis kann ich sagen, dass ich den Contoller über einen selbst gebastelten SPI-Programmer problemlos flashen kann, jedoch schein er daraufhin nicht zu funktionieren, keiner der Pins wird gesetzt. Ich zerbreche mir schon seit einigen Tagen der Kopf über das Problem und hoffe, dass ihr mir helfen könnt, den Fehler zu finden. Danke im Voraus. Kreiosus
erst mal mit einem kleinen Programm jede LED einzeln leuchten lassen und Ausgangsspannungen nachmessen!
Also was ich so sehe : - der Quarz scheint mir ziemlich weit von den zugehörigen µC Pins weg zu sein - der Reset Pin ist offen, wenn kein Programmer angeschlossen ist Dabei würde ich erst mal den 2. Punkt in Angriff nehmen, und einen Pullup-Widerstand von sagen wir mal 10k von Reset nach 5V einbauen. Dann als nächstes mal den Takt am Quarz kontrollieren. Wenn der nicht schwingt, könnten auch Deine Fuse-Bits falsch programmiert sein.
Keine Reset-Beschaltung? Transistoren ohne Basis-Widerstand?
Johann L. schrieb: > Transistoren ohne Basis-Widerstand? die oberen Transistoren brauchen den nicht unbedingt und die unteren könnte man mit dem Pullup des AVR schalten (notfalls) Kreiosus schrieb: > Ich zerbreche mir schon seit einigen Tagen der Kopf über das Problem hirnen hilft meist nicht Bakka schrieb: > erst mal mit einem kleinen Programm jede LED einzeln leuchten lassen und > Ausgangsspannungen nachmessen! das ist ein guter Tipp
Kreiosus schrieb: > Ich zerbreche mir schon seit einigen Tagen der Kopf Einfach fragen, die Gemeinschaft weiß in der Regel immer etwas was vielleicht hilfreich sein könnte. zum Schaltplan: -Ich nutze 100kOhm von /Reset nach Vcc. Eigentlich nimmt man aber 10kOhm, wie in der Anleitung in der Artikelsammlung. Von /Reset nach GND dann noch einen 10n oder 100n Kerko. - Wenn der Quarz nicht anschwingen sollte, dann lege zwischen die beiden Pins des Quarzes (oder zwischen P6 und PB7 am Controller) einen 1MOhm Widerstand - Die Basiswiderstände wurden schon erwähnt, da musst du jetzt eben die PullUps an und aus schalten um die Transistoren zu schalten. - Die oberen Transistoren sind an +5V angeschlossen, an ihnen fallen aber mindestens U_BE ab, was 0.6V entsprechen. Sie können also nie ganz durchschalten, es fallen an ihnen immer 0.6V ab. Man nimmt zum schalten der Versorgung eigentlich PNP-Transistoren. (ist für die Berechnung des Widerstandwertes wichtig, an der LED und dem Vorwiderstand fallen hier also nur 4.4V ab) zum Board: -Die 100nF Abblockkondensatoren müssen so nahe wie möglich an die jeweiligen Pins des Controllers. (an Aref und GND , an AVcc und GNd, an Vcc und GND) -Lege immer eine Massefläche (GND) als Polygon aus, jeweils für die TOP und für die BOTTOM-Seite, dann ist das Routing der Leitungen viel einfacher. Schau wie es die anderen machen. -Ein weiterer Vorteil ist dass die Massefläche als Schirmung dient und einen gewissen EMV-Schutz bietet. Walter schrieb: > Aref darf nicht an 5V geklemmt werden! Das sollte trotzdem funktionieren, aber normaler Weise kommt dort nur ein 100nF Kondensator nach GND ran. Die Leitungen kann man in Eagle nachträglich auch dicker oder dünner machen, wähle lieber etwas dickere Leitungen damit dort mehr Strom rüber kann und der Platinenhersteller keine Probleme beim Ätzen hat. Funktionieren wird da Board trotzdem, du musst nur den /Reset-Widerstand hinzufügen
Danke schon mal für die vielen Antworten:) Bakka schrieb: > erst mal mit einem kleinen Programm jede LED einzeln leuchten > lassen und > Ausgangsspannungen nachmessen! Das habe ich schon versucht, jedoch kann ich wie gesagt keinen der uC Pins wirklich setzten, es tut sich am Ausgang nichts. fop schrieb: > Also was ich so sehe : > - der Quarz scheint mir ziemlich weit von den zugehörigen µC Pins weg zu > sein > - der Reset Pin ist offen, wenn kein Programmer angeschlossen ist > > Dabei würde ich erst mal den 2. Punkt in Angriff nehmen, und einen > Pullup-Widerstand von sagen wir mal 10k von Reset nach 5V einbauen. > Dann als nächstes mal den Takt am Quarz kontrollieren. Wenn der nicht > schwingt, könnten auch Deine Fuse-Bits falsch programmiert sein. Wenn der Programmer aber angeschlossen ist, dann sollte trotzt der fehlenden Reset-Beschaltung der uC funktionieren, verstehe ich das richtig? Walter schrieb: > Aref darf nicht an 5V geklemmt werden! Wieso nicht? Laut Manual ist das doch die Referenzspannung für den A/D Wandler, hatte daher angenommen, dass der ebenfalls auf VCC liegen muss. Mike J. schrieb: > zum Schaltplan: > -Ich nutze 100kOhm von /Reset nach Vcc. Eigentlich nimmt man aber > 10kOhm, wie in der Anleitung in der Artikelsammlung. > Von /Reset nach GND dann noch einen 10n oder 100n Kerko. > - Wenn der Quarz nicht anschwingen sollte, dann lege zwischen die beiden > Pins des Quarzes (oder zwischen P6 und PB7 am Controller) einen 1MOhm > Widerstand > - Die Basiswiderstände wurden schon erwähnt, da musst du jetzt eben die > PullUps an und aus schalten um die Transistoren zu schalten. > - Die oberen Transistoren sind an +5V angeschlossen, an ihnen fallen > aber mindestens U_BE ab, was 0.6V entsprechen. > Sie können also nie ganz durchschalten, es fallen an ihnen immer 0.6V > ab. > Man nimmt zum schalten der Versorgung eigentlich PNP-Transistoren. > (ist für die Berechnung des Widerstandwertes wichtig, an der LED und dem > Vorwiderstand fallen hier also nur 4.4V ab) > > zum Board: > -Die 100nF Abblockkondensatoren müssen so nahe wie möglich an die > jeweiligen Pins des Controllers. (an Aref und GND , an AVcc und GNd, an > Vcc und GND) Was sind sonst die Auswirkungen, wenn die zu weit weg sind? Also müsste ich in meiner Schaltung noch 100nF Kondensatoren an AVCC und AREF hinzufügen. > -Lege immer eine Massefläche (GND) als Polygon aus, jeweils für die TOP > und für die BOTTOM-Seite, dann ist das Routing der Leitungen viel > einfacher. Schau wie es die anderen machen. > -Ein weiterer Vorteil ist dass die Massefläche als Schirmung dient und > einen gewissen EMV-Schutz bietet. Die Massefläche hatte ich bei mir nach dem Routing mit dem Polygon-Werkzeug erstellt und da hatte sie nicht den kopletten Bereich zwischen den Leiterbahnen ausgefüllt. Verstehe ich dich richtig, dass man sie am besten vor dem Routing anlegt? > > Walter schrieb: >> Aref darf nicht an 5V geklemmt werden! > > Das sollte trotzdem funktionieren, aber normaler Weise kommt dort nur > ein 100nF Kondensator nach GND ran. > > Die Leitungen kann man in Eagle nachträglich auch dicker oder dünner > machen, wähle lieber etwas dickere Leitungen damit dort mehr Strom rüber > kann und der Platinenhersteller keine Probleme beim Ätzen hat. Das muss ich mir auf jeden Fall für die nächste Platinenversion merken;) > > Funktionieren wird da Board trotzdem, du musst nur den /Reset-Widerstand > hinzufügen Werde morgen auf dem jetzigen Board noch die Reset-Beschaltung hinzufügen und schauen, ob ich die Transistoren über die Pull-Ups schalten kann. Berichte dann ob es auf diese Weise zumindest funktioniert:) Waraus ich aber nicht so recht schlau werde ist die Tatsache, dass ich die gleiche Schaltung ja zunächst auf einem Steckbrett realisiert habe und da hat alles wunderbar funktioniert, warum auf der fertigen Platine dann nicht mehr?
Kreiosus schrieb: > Was sind sonst die Auswirkungen, wenn die zu weit weg sind? Der Controller zieht den Strom Pulsweise und nicht kontinuierlich. Da steht zwar im Datenblatt dass er bei der Taktfrequenz 12mA zieht, aber in Wirklichkeit zieht er bei jedem Umschaltvorgang (8MHz = 8 Millionen Umschaltvorgänge der internen Gatter) viel Strom und dazwischen quasi nichts. Kreiosus schrieb: > Das habe ich schon versucht, jedoch kann ich wie gesagt keinen der uC > Pins wirklich setzten, es tut sich am Ausgang nichts. Der Quarz läuft? Miss mal die Wechselspannung an den Pins. Kannst du wirklich auf den Chip erneut über den Programmieradapter schreibend zugreifen? Wie sehen deine Fuses aus? Setze alle Pins auf Eingang und lass nur die beiden Pins PB1 und PB2 blinken. Vielleicht hast du da noch irgend wo einen Lötfehler drin. Prüfe ob Spannung anliegt, vielleicht gibt es ja noch irgend wo eine Lot-Brücke. Füge aber erst mal einen 10k Widerstand zwischen Reset und Vcc ein.
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.