Läuft - läuft nicht

Gast #1377983
Lesenswert?

Mein Atmega ist gegen mich :(. Auf meiner Entwicklungsplatine (myAVR 
Board MK2 USB PLUS) problemlos. Jetzt habe ich den Controller auf eine 
Platine mit meiner Schaltung gelötet, und die Ausgänge stehen... Das 
Programm scheint nicht zu laufen. Versorgungsspannung und Verdrahtung 
sollten OK sein.

Kann es was mit dem externen Takt von der Entwicklungsplatine zu tun 
haben???
Gast #1378078
Lesenswert?

Ja, beim Flashen treten keine Fehler auf. Auf der Entwicklungsplatine 
ist ein externer Takt angeschlossen. Jedoch, ist dieser, meines Wissens 
nicht verwendet, da der Atmega im Auslieferungszustand den internen 
verwenden!?

Ich denke das der Controller steht, weil sich an den Ausgängen nach dem 
Einschalten nichts mehr tut. Es treten auch komische Spannungen im 
Bereich von 0,7-1,2 V auf wo normalerweise High-Pegel (4,2V) anliegen 
müssten. Die Ausgänge des Atmega schalten einfach nur LEDs mit 
Emiterschaltung eines BC135. Schaltungstechnisch ist das nicht sehr 
komplex, jedoch kann ich mir die Spannungen an den Ausgängen nicht 
erklären. Wenn ich die Spannungen der Ausgänge auf der 
Entwicklungsplatine messe, kommen sinnvolle Werte im Bereich von 3-4V 
heraus.
Gast #1379486
Lesenswert?

Ich vermute es liegt an dem Takt oder ähnlichem. Es leuchtet am Ausgang 
lediglich eine LED. Sonst tut sich nichts. Ich habe hier mal kurz meinen 
Schaltungsaufbau skizziert. Hinzu kommt natürlich Spannungsversorgung 
zwischen PIN 7 und PIN 8.

Einen externen Quarz habe ich nicht angeschlossen.
Angehängte Dateien:
Persönliche Seite #1379509
Lesenswert?

Ist Pin 4 der Reset-Pin? Da muss ein Pullup-Widerstand (z.B. 10k) gegen 
Vcc ran. Warum sind so viele uC-Ausgänge auf eine Basis eines 
Transistors geschaltet??

Edit: Ich sehe gerade, dass beim ATMega8 der Reset an Pin 1 liegt, 
welcher bei Dir einfach an der Basis eines Transistors parallel zu 
anderen Ausgängen klemmt. Ganz spontan kann ich mir nicht vorstellen, 
wie das funktionieren soll...
#1379531
Lesenswert?

Ich hab' nur mal ganz kurz drübergeschaut, aber
- wenn Variablen sowohl in einer Interruptroutine als auch im Programm 
verwendet (und verändert) werden (Program, Counter), müssen die volatile 
deklariert werden.
- Wenn 16-Bit Werte auch in Interruproutinen ausgewertet oder verändert 
werden, müssen beim Ändern im Programm während der Änderung/Abfrage die 
Interrupts gesperrt werden (Stichwort: atomic / non atomic instruction)
Deine "if (Counter == 0)"-Abfrage kann daher schiefgehen (zumal Counter 
nicht volatile ist)
- Delays in Interruptroutinen? NO-NO!
- schau' Dir mal das 'CASE' C-Konstrukt an

Happy Coding!
Gast #1379575
Lesenswert?

bezüglich der Schaltung:

Ich nutzte vier Ausgangspins je Farbe mit verschiedenen Widerständen. 
Alle 4 Ausgänge High, sind die 4 Widerstände parallel und ich habe den 
kleinsten Basiswiderstand --> größten Kollektorstrom. Die Diode habe ich 
um den LOW Pegel von 0,7V etwas abzufangen und die den Einfluss eines 
Ausgangs auf den anderen Ausgang zu verhindern.
Persönliche Seite #1379639
Lesenswert?

Wolfgang schrieb:
> bezüglich der Schaltung:
>
> Ich nutzte vier Ausgangspins je Farbe mit verschiedenen Widerständen.
> Alle 4 Ausgänge High, sind die 4 Widerstände parallel und ich habe den
> kleinsten Basiswiderstand --> größten Kollektorstrom. Die Diode habe ich
> um den LOW Pegel von 0,7V etwas abzufangen und die den Einfluss eines
> Ausgangs auf den anderen Ausgang zu verhindern.

Und was ist mit dem Reset-Pin? Wie resettest Du den uC beim Start bzw. 
manuell?
Gast #1379861
Lesenswert?

Guten Morgen,

gestern habend habe ich noch ein bisschen rumprobiert an der 
Spannungsversorgung und und und. Als ich die Masse des BC135, welcher 
die Blaue LED ansteuert entfernt habe, schnellt der Strom auf einmal 
hoch und die Grüne und Rote LED leuchteten.
Blau ist an den PINS (26...28, und PIN 1). Also vermute ich, das es doch 
etwas mit dem Reset PIN zu tun hat. Ich werde heute die Platine umlöten 
und das untere Nibble dieses Ports zur Ansteuerung nehmen. Ich hoffe, 
dann funktioniert die Schaltung.
Gast #1380273
Lesenswert?

Das Konzept deiner Schaltung ist sehr exotisch und wenig geeignet. 
Erstmal kannst du dir die Dioden sparen, weil der AVR bei Low nahe 0V 
und nicht 0.7V am Port hat. Über den Basisstrom den Kollektorstrom in 
dieser Art steuern zu wollen, ist äußerst problematisch. Erstmal streuen 
die Transistoren, was die Verstärkung angeht, du müsstest alle 
Widerstände anpassen. Und wenn du mal einen Transistor tauschst, musst 
du wieder neue Widerstände einlöten. Zudem schwankt die Verstärkung z.B. 
bei Temperaturschwankungen.

Typisch löst man sowas über PWM, wobei du dann nur 1 Portpin pro Farbe 
brauchst.
Gast #1380473
Lesenswert?

Ich möchte nur verschiedene Helligkeitsstufen der LED mit den 
Basiswiderständen erreichen. Die Dimensionierung passt da ganz gut und 
reicht auch dafür aus. Alle LEDs hängen an Step-Down Convertern, sodass 
ich  bei Inbetriebnahme den Maximalstrom über ein Poti einstellen kann. 
Ist nicht ganz durchdacht aber für das erste größere Projekt reicht das.

Die Low-Pegel nahm ich aus dem Datenblatt an. Daher kam ich auf die 
0,7V. Das steht doch nicht umsonst!?
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren