Forum: Mikrocontroller und Digitale Elektronik Probleme mit Layout und Atmega88 bei 16Mhz


von Paul P. (dorpreuss)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine elektronische Zündung gebaut und programmiert. Das 
Programm habe ich auf meinem Pollin Eval Board getestet (das war der 
totale Drahtverhau) und es funktionierte tadellos (16Mhz). Jetzt habe 
ich ein Layout für die Schaltung gemacht und es funktionieren manche 
Sachen nicht mehr (bei 16Mhz). Anbei ist ein Bild des Layouts und eine 
kurze Beschreibung wo welche Signale anliegen. Wenn ich den Clockdivider 
einstelle und alles mit 2Mhz läuft, gehts.

Es gibt z.B. zwei PWM'S (50Hz) deren Pulsweite man mittels Tastern 
einstellen kann. Manchmal reagieren die Tasten, machnmal nicht. Und wenn 
sie regieren dann nicht richtig.

Und das Programmieren mittels ISP funktioniert bei 16Mhz auch nicht 
mehr. Ich habe die lange Drahtbrücke unter dem Controller entfernt und 
die RESET-Leitung direkt an den Portpin gelötet...nützt auch nichts.

Die PWM-Signale die der Controller erzeugt, kommen aber alle 
ordnungsgemäß an den entsprechenden Pins raus.

In dem Bild vom Layout habe ich das Polygon ausgeblendet und die 
Masseverbindungen entfernt, damit man besser sieht was auf Masse liegt. 
(unrouted) Normalerweise iss alles voller Masse.

Was ist an dem Layout so falsch, dass es nicht funktioniert? Ich möchte 
eine neue Platine machen, aber dazu müsste ich wissen was ich verändern 
muss.

Ich würde mich freuen, wenn ihr ein paar Tips für mich habt!

Gruß Paul

von David (Gast)


Lesenswert?

zwar nicht das sauberste layout dass ich je gesehen habe, aber müsste 
eigentlich funktionieren...

der quarz und andere bauteile überschneiden sich gemäss deinem *.png vom 
layout minim mit den pad's des atmega - wäre es möglich, dass auf der 
platine ebenfalls eine quasi verbindung besteht?

poste mal das schema

von Falk B. (falk)


Lesenswert?

Ich tippe auf Kurzschlüsse durch Ätzfehler oder Lötzinn oder ähnliches. 
Kalte Lötstellen etc.

MFG
Falk

von Paul P. (dorpreuss)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hatte mit härterer Kritik über mein Layout gerechnet, aber 
vielleicht kommt die ja noch. ;-)  Anbei der Schaltplan.

Ich habe nochmal auf der Platine nachgesehen und es überschneidet sich 
nichts. Der Quarz iss in der Realität nicht so groß, wie es im Layout 
scheint. Dennoch danke für den Tip.

Ich bin wirklich erstaunt, dass es nicht geht. Ich habe vor einiger Zeit 
einen Zähler mit 4 7-Segmentanzeigen auf Lochraster aufgabaut. (Atmega8 
16Mhz) Hat bei ersten mal funktioniert, lässt sich auch programmieren. 
Die Platine ist sehr viel unaufgeräumter, die Leitungen sind um das 
Vielfache länger und es verlaufen sogar Drahte über die Platine und 
unter dem Prozessor durch. Das heißt überall liegen Leitungen die eine 
Art Takt führen, sowas gibts hier ja gar nicht. Es gibt auch 6 Tasten 
die über ein 20cm langes Kabel angeschlossen sind. (die Schaltung der 
Tasten ist die gleiche wie in diesem Fall) Auch die funktionieren 
tadellos.

Ich schau mir die Platine jetzt nochaml genau an, vielleicht finde ich 
ja was.

Gruß Paul

von Markus H. (rf-bug)


Lesenswert?

Hi,
ich denke auch das das Layout nicht wirklich das Problem sein kann.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Setze die Fuses mal auf "Full Swing Crystal Oscillator" und längste 
Start-Zeit. Ist bei 16MHz und schneller besser.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ach und erhöhe CBLOCK1 mal auf 10µF. Insgesamt wird die 
Eingangsbeschaltung für die Spannungsversorgung nicht den Anforderungen 
in einem Kraftfahrzeug standhalten: keine Sicherung, kein Verpolschutz, 
kein Filter, keine Spannungsbegrenzung.

von Paul P. (dorpreuss)


Lesenswert?

Hallo,

@Travel Rec: die Fuses sind genauso gesetzt wie du es beschreibst. Ich 
habe es sogar schon mit diesem Fuse Berechnungsprogramm überprüft und 
auch im Forum habe ich diese Fuse-Einstellung gefunden und sie ist mit 
meiner konform.

Deine Bedenken sind natürlich richtig, dem Einsatz im KFZ wird sie nicht 
standhalten. Das muss sie auch nicht, da die Zündung für einen 5ccm 
Modellmotor ist, der in einem RC-Trcuk arbeitet.

Das mit den 10µF probiere ich jetzt sofort mal aus.


Vielen Dank

Gruß Paul

von Bensch (Gast)


Lesenswert?

Basisstrom für T1 könnte zu klein sein, T2 schaltet nicht komplett 
durch- ist das Absicht?

von Paul P. (dorpreuss)


Lesenswert?

Das mit dem 10µ Kondensator hab ich gerade probiert und es hat leider 
nichts gebracht. Auch das Nachlöten aller Lötstellen hat nichts 
gebracht.

@Bensch:
Vielen Dank für den Hinweis. T1 sollte genug strom an der Basis 
bekommen, hab ich gestern getestet. Ich werde eventuell auch nen anderen 
Transistor nehmen. Kennst du zufällig einen Darlington der viel 
Verstärkung hat und kurzzeitig so 10A aushält (so 2-3s)? Bei T2 werde 
ich das noch ändern, aber momentan bin ich mehr damit beschäftigt dass 
der Prozessor ordentlich läuft.

von Lupin (Gast)


Lesenswert?

Hat der mega88 ein CKOPT fuse? Wenn ja, dann mal umprogrammieren.

von Paul P. (dorpreuss)


Lesenswert?

Atmega88 hat kein ckopt fuse.

Also eben hab ich nochmal alles probiert. Prgrammieren in der Schaltung 
mit 16MHz ist unmöglich. Komischerweise funktionieren die Tasten auf 
einmal.
Nun iss das dumme, eigentlich soll der Prozessor bei 18,432MHz laufen, 
wegen der UART. Mit 18,432 MHz funktionieren die Tasten nicht mehr, ganz 
zu schweigen vom Flashen. Es ist auch wirklich ein Atmega88-20PU ich hab 
extra nochmal draufgeguckt.

Die Tasten funktionieren so:

Es gibt 3 Stück: SET, INC und DEC

Wenn man DEC gedrückt hält und schaltet dann den Prozessor ein, wird 
bevor das eigentliche Programm anfängt in ein Unterprogramm gesprungen 
in dem man die Anfngs- und Endwerte der Servos (Tastverhältnis der PWM) 
einstellen kann.

Zuerst wird der Anfangswert für Servo 1 (im Schaltplan Pump) mit INC 
bzw. DEC eingestellt. Drückt man auf den SET-Taster wird diese Stellung 
im EEPROM gespeichert. Jetzt wird der Endwert von Servo1 eingestellt und 
gespeichert. Wieder SET-Taster drücken und es folgt der Anfangswert von 
Servo 2 usw. Sind alle eingestellt, wird das Unterprogramm verlassen und 
es wird in die Hauptschleife gesprungen.

In das Unterprogramm komme ich rein, (LED-geht-an-debugging). Wenn ich 
dann INC oder DEC drücke enstehen irgendwelche sinnlosen Werte für die 
PWM und die Servos spielen verrückt.

Wie gesagt, auf dem Eval Board gehts (16Mhz) und in der Schaltung auch 
(16Mhz) aber mit 18,432MHz..Pustekuchen.

Der Code iss mit aktuellen AVR-GCC und dem aktuellen WinAVR in C 
geschrieben, aber an dem kanns doch nich liegen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Hast Du denn jetzt nochmal ein Layout ohne Luftlinien, wo man sehen 
kann, was genau wo angeschlossen ist?

von Analog (Gast)


Lesenswert?

>Manchmal reagieren die Tasten, machnmal nicht.

ok. Bleibt der Controller dabei auch ganz stehen ? Oder läuft er weiter? 
Gibt es einen Reset?


>Und wenn
>sie regieren dann nicht richtig.

Was heisst das?

von Paul P. (dorpreuss)


Angehängte Dateien:

Lesenswert?

Hallo,

also hier ist das Layout ohne Luftlinien. Ich hoffe ihr findet was, 
damit mich dieser dumme Fehler loslässt. Ich habs echt satt.

Habe eben mit dem Oszi gemessen, der Controller stürzt nicht ab. Es gibt 
keinen Reset.

@Analog:
Wenn ich auf die Tasten drücke, passiert meißtens gar nichts. Wenn was 
passiert, dann gibt es 4 Möglichkeiten:

1. ein paar (manchmal 1 manchmal auch bis zu 6) Tastendrücke machen 
genau das was sie sollen: Das Tastverhältnis erhöhen bzw. erniedrigen

2. das PWM Signal geht komplett auf Low-Signal (warscheinlich weil die 
Vergleichswerte 0 werden)

3. das PWM Signal geht komplett auf HIGH-Signal (warscheinlich weil die 
Vergleichswerte 255 werden)

4. es stellt sich einmal zufällig irgend ein Tastverhältnis ein

Nach jeder dieser vier Möglichkeiten reagieren die Tasten wieder so 
sporadisch. Der eingestellte Blödsinn wird jedoch im EEPROM 
abgespeichert.

Prellen kann es nicht sein, da die Tasten nicht prellen, was ich 
nachgemessen habe. Und da die Tastenabfrage in einem absolut 
zeitunkritischen Bereich iss (vor dem Eegentlichen Programm), habe ich 
zum Software-Entprellen quick and dirty einfach delay's mittels 
_delay_ms(xx) reingemacht;....hat auch nichts genützt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ich glaube, es würde mal Sinn machen, auf den Code zu schauen.

von Peter D. (peda)


Lesenswert?

Paul P. wrote:
> Prellen kann es nicht sein, da die Tasten nicht prellen, was ich
> nachgemessen habe.

Wenn Du kein Prellen siehst, dann ist Dein Oszilloskop kaputt.


> zum Software-Entprellen quick and dirty einfach delay's mittels
> _delay_ms(xx) reingemacht;....hat auch nichts genützt.

Eine Entprellroutine im Timerinterrupt hat den Charme, daß man nie 
wieder quick and dirty machen muß. Man fügt sie ein und vergißt sie 
dann.
Vergessen kann man sie deshalb, weil sie nicht unnütz wartet und damit 
den Programmfluß zur Sau macht. Sie hat also keine Seiteneffekte, die 
man beachten muß.


Peter

von BC (Gast)


Lesenswert?

Die 100k Pull-Up am Reset-Eingang sind u.U. ein bisschen zu viel. 
Vielleicht mal mit 10k probieren und zusätzlich 10n gegen Masse?

von Chris S. (schris)


Lesenswert?

Was ich bemerkt habe, die Quarz Kondensatoren sollten eigentlich die
Masse vom uC nehmen, und nicht an der generellen Masse angeschlossen 
werden, zumindest mache ich das so.

von Helmut L. (helmi1)


Lesenswert?

Du hast parallel zu den Pulldown Widerstaenden der Tasten einen 
Kondensator von 330nF angeschlossen. Jedes mal wenn du die Taste 
drueckst wird der Kondensator aufgeladen. Dabei laesst er erstmal einen 
kraeftigen Ladestrom fliessen. Wenn der auch nur kurz ist , fliessen 
dort doch einige Ampere. Das koennte deinen Prozessor schon ausser tritt 
bringen. Ausserdem hast du damit einen hohen verschleiss an den 
Kontakten des Tasters. Also entweder den Kondensator rausschmeissen oder 
in Reihe zum Taster einen kleinen Widerstand legen von um die 100 Ohm.

Gruss Helmi

von Pete K. (pete77)


Lesenswert?

Was für ein Spannungsregler ist verbaut ? Du gehst mit 9V an die 
Schaltung, ist der Regler dafür ausgelegt ?

von Falk B. (falk)


Lesenswert?

@Helmut Lenzen (helmi1)

>dort doch einige Ampere. Das koennte deinen Prozessor schon ausser tritt
>bringen.

Das wird es wahrscheinlich auch. Schliesslich hängt hinter dem 
Spannungsregler an Vcc nur 2x 100nF dran. Deren Ladung teilt sich dann 
auf 200+330=530nF auf, macht 200/530=37% der Nominalspannung. Uuups :-0

Diese Hardwareentprellung ist Mist. Das macht man anders, siehe 
Entprellung.Praktisch entprellt man sowas in Software.

MFG
Falk

von Paul P. (dorpreuss)


Lesenswert?

Hallo,


@Peda
Natürlich prellen die Tasten alleine, aber durch die Pulldown 
Widerstände zusammen mit dem Kondensator prellen sie nicht mehr. Daurch 
brauche ich keine Softwareentprellung.

@BC
Das iss mir gestern auch schon eingefallen, aber bei dem Pollin-Board 
ist das auch so gemacht. Ich werde dennoch mal auf 10k gehen.

@schris
Ich weiß nicht genau was du meinst. Bei mir iss die Masse generell 
generell.
Masse ist doch der gemeinsame Bezugspunkt der gesamten Schaltung.

@helmi
Die 330nF/33k sind in der Schaltung von dem Pollin-Board. Wegen dem 
Ladestromstoß habe ich schon 100nF/100K genommen. Ich hab nur vergessen 
das im Schalplan zu ändern. Das macht es zwar noch nicht viel besser, 
aber dass es so schlimm is dachte ich nich. Ich hab das gestern Nacht 
nochmal gemessen. Die Spannung schwankt für ca. 1µs um +/- 0,7V. Das is 
sauviel. Dabei fällt mir gerade ein, dass ja ein Widerstand eigentlich 
ausreicht. Das probier ich dann gleich aus. Ich weiß schon, eigentlich 
entprellen fast alle mit Software, aber mir gefällt es besser das mit 
Hardware zu machen.

@pete77
Der Regler ist ein stino 7805. Ich wollte eigentlich nen LM2940, weil 
die Schaltung später mal en nem 7,2V NiMH Akku arbeitet. Übrigens: bei 
Reichelt kostet der 44 cent und bei big blue C (festhalten) 2,88EUR.

Eine Frage hab ich aber noch. Wie Lang darf ein ISP-Kabel sein. Ich habe 
ein 50cm langes Flachbandkabel benutzt. (bei 16Mhz gehts nich, bei 2Mhz 
gehts).


Vielen Dank für eure Hilfe, ich werde das jetzt gleich mal alles 
auprobieren.

Gruß Paul

von Helmut L. (helmi1)


Lesenswert?

>Die 330nF/33k sind in der Schaltung von dem Pollin-Board.

Dann hat Pollin das auch nicht richtig gemacht.

>Ich weiß schon, eigentlich
>entprellen fast alle mit Software, aber mir gefällt es besser das mit
>Hardware zu machen.

Kann man ja machen dann aber richtig. Also Widerstand in reihe zum 
Taster.


Gruss Helmi

von Peter D. (peda)


Lesenswert?

Helmut Lenzen wrote:
> Du hast parallel zu den Pulldown Widerstaenden der Tasten einen
> Kondensator von 330nF angeschlossen. Jedes mal wenn du die Taste
> drueckst wird der Kondensator aufgeladen. Dabei laesst er erstmal einen
> kraeftigen Ladestrom fliessen. Wenn der auch nur kurz ist , fliessen
> dort doch einige Ampere.

Ja, das ist mit Abstand die schlimmste Lösung.

Wenn Dir die Kondensatoren so gut gefallen, dann aber immer parallel zum 
Taster, damit die Stromspitzen nicht über VCC fließen, sondern nur über 
den Taster.


Peter

von Analog (Gast)


Lesenswert?

Also ich würde auch bei den Pullups/Pulldowns (Kann auf die schnelle 
nicht erkennen ob up oder down) suchen. Die 330nF würde ich entfernen. 
Auch sind die Taster wahrscheinlich nicht ganz genau dieselben, wie auf 
dem Pollinboard und zeigen vielleicht ein anderes Prellverhalten. Wenn 
Dein Controller nicht abschmiert ist nur an den Tastern, Widerstänen zu 
suchen.

Gruß

von Paul P. (dorpreuss)


Lesenswert?

Hallo,

also ich hab jetzt folgendes mit Erfolg gemacht:

-47µF Kondensator als zusätzlichen Puffer nach dem 7805 dicht an den µC.
-Pullup für RESET auf 10k reduziert
-470R Vorwiderstand um den Ladestromstoß zu reduzieren/eliminieren
 (5V/470R sind rund 11mA, das ist wie ne LED anschalten)
-nen Sockel eingelötet, um die Quarze schnell tauschen zu können (ok das
 hat damit eigentlich nichts zu tun)

Die Tasten funktionieren jetzt tadellos. Es ist keinerlei 
Spannungseinbruch beim drücken der Tasten wie zuvor messbar. (10mV 
Messbereich..geht im Rauschen unter) Der Widerstand hats echt gebracht.

Ich muss zugeben es war töricht und unüberlegt so einen Murks zu bauen. 
Ich hätte das eigentlich gleich wissen müssen. Ich schäme mich.

Aber jetzt bin ich voll zufrieden.

Was allerdings immer noch nicht geht ist das Flashen. Ich denke das 
liegt an der zu langen Strippe. Und da ich hier nirgendwo nen 10-poligen 
Pfostenstecker herbekomme um ein ordentliches Kabel zu bauen, wird sich 
daran auch erstmal nichts ändern.


Vielen Dank nochmal für die freundliche und schnelle Hilfe

Gruß

Paul

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Kann das mal sein, daß Dein Programmierkabel gar keine Masse hat? Das 
kann ein Problem sein.

von Helmut L. (helmi1)


Lesenswert?

Bei mir geht das flashen ueber 2m Flachbandkabel problemlos.

Gruss Helmi

von Paul P. (dorpreuss)


Lesenswert?

Ja, das Kabel hat keine Masse, aber ich habe die Masse so angeschlossen.

Das ist jetzt wirklich verzwickt, warum das nicht geht. Habt ihr eine 
Idee? Die Leitungen zum programmieren sind im Layout ja wirklich sehr 
kurz und es ist ja auch nichts anderes an Mosi, Miso und SCK 
angeschlossen.

von Falk B. (falk)


Lesenswert?

@ Paul P. (dorpreuss)

>Ja, das Kabel hat keine Masse, aber ich habe die Masse so angeschlossen.

Merkst du was? Du willst schon wieder schlauer sein als der Rest der 
Welt. Wohin das bisweilen führt hast du schon gemerkt . . .

Also schliess das ISP Kabel wie der Rest der Welt an und es wird 
höchstwahrscheinlich funktionieren.

MFG
Falk

von Paul P. (dorpreuss)


Lesenswert?

Hallo,

@Falk
Ich will nicht schlauer sein als die anderen. Ich schliße die Masse nur 
nicht mit an dem gleichen Stecker an wie MOSI,MISO,SCK,RESET, sondern an 
einem anderen Massepin auf meiner Schaltung sind ja genug da.

Iss ja auch egal, ich hab vorhin ein altes Floppykabel zerlegt und ein 
ISP Kabel gebastelt. Jetzt gehts, es iss zwar eigentlich nichts anders 
aber es funktioniert. Es ist sogar länger als das andere und die lange 
Drahtbrücke unter dem Controller hab ich auch wieder reingemacht. Ich 
habe diesmal allerdings beim ISP Kabel (Flachbandkabel) jede zweite Ader 
auf Masse gelegt.

Vielen Dank nochmals für eure Hilfe. Ich bin jetzt sehr zufrieden.


Viele Grüße und fröhliche Weihnachten

Paul

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ja, Dir auch :o) !

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.