Forum: Mikrocontroller und Digitale Elektronik Pins so schnell wie möglich auf logisch 1


von Andy (Gast)


Lesenswert?

Hallo Leute,
Ich habe ein Problem mit meiner Schaltung. Und zwar steuere ich meine 
LEDs mit einem Zetex mit der Transistorschaltung am Adjust-Pin an. D.h. 
ein PWM mit DutyCycle 100% entspricht Helligkeit "0" und ein PWM mit 
DutyCycle 0% entspricht 255. Und das ist mein Problem. Wenn ich die 
Elektronik einschalte, dann blitzen die LEDs kurz auf. Ich deklariere 
die Pins (die den Transistor ansteuern) zwar gleich zu Beginn als 
Ausgänge und schalte sie auf 1, aber anscheinend ist das ein bisschen zu 
langsam! Gibt es noch eine andere Möglichkeit die Atmel-Pins so schnell 
wie möglich auf logisch 1 zu ziehen, ohne die Hardware zu ändern (ist 
nämlich nicht mehr möglich)?
BTW: Ich verwende einen ATMega328p

Vielen Dank!

mfg

von Ben _. (burning_silicon)


Lesenswert?

du kannst die startup-zeiten verkleinern wenn deine stromversorgung 
schnell genug die 5V erreicht. aber ganz wegbekommen wirst du den effekt 
nicht ohne die HW zu ändern.

von Andy (Gast)


Lesenswert?

startup hab ich schon auf 0ms. Was müsste ich an der HW ändern (nur 
interessenshalber)?

von Philip (Gast)


Lesenswert?

externe Pullups?

von karadur (Gast)


Lesenswert?

Hallo

externe Pullupwiderstände.

von Peter D. (peda)


Lesenswert?

Andy schrieb:
> Ich deklariere
> die Pins (die den Transistor ansteuern) zwar gleich zu Beginn als
> Ausgänge und schalte sie auf 1, aber anscheinend ist das ein bisschen zu
> langsam!

Nö, nur falschherum.
Dadurch erzeugst Du einen kurzen Low-Puls.


Peter

von Andy (Gast)


Lesenswert?

@Peter: Und wie wärs richtig?

von (prx) A. K. (prx)


Lesenswert?

Erst auf 1, dann Ausgang.

von Ben _. (burning_silicon)


Lesenswert?

der ist aber nur drei CLKs lang. ich denk den würde man nicht sehen. das 
problem kommt eher daher, daß die AVR pins high-Z sind bevor das 
programm sie konfiguriert.

von Klaus F. (kfalser)


Lesenswert?

Wenn die Pins am Anfang als Ausgänge geschalten sind und deshalb 
hochohmig, dann sollte eigentlich kein Strom durch die LEDs fließen, 
oder?

von Andy (Gast)


Lesenswert?

Also zuerst auf log. 1 und dann als Ausgang definieren, hab ich schon 
probiert: Geht auch nicht!

von (prx) A. K. (prx)


Lesenswert?

Die Reihenfolge war falsch, aber das ist nicht die Ursache. Wenn der 
Kram dahinter einen offenen Pin als "0" sieht, dann geht es nicht ohne 
externem Pullup.

von Karl (Gast)


Lesenswert?

Man könnte die Pins auch gleich nach dem Reset setzen, also noch bevor 
der ganze andere Startup-Kram abläuft.

von Ben _. (burning_silicon)


Lesenswert?

das ändert aber nichts daran, daß der ganze krempel eine kurze zeit 
braucht bis die 5V µC spannungsversorgung steht, der taktgenerator 
angeschwungen ist und der µC letztendlich startet.

von (prx) A. K. (prx)


Lesenswert?

Was nichts dran ändert, dass bei einem Quarzoszillator erst einmal zig 
Millisekunden draufgehen bevor die Software zum Zug kommt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Klaus Falser schrieb:
> Wenn die Pins am Anfang als Ausgänge geschalten sind und deshalb
> hochohmig, ...
Häh?

> dann sollte eigentlich kein Strom durch die LEDs fließen, oder?
Zitat von ganz oben:
>>>>> LEDs mit einem Zetex

Porbiers einfach mit einem Pullup ;-)

BTW:
>>>>> LEDs mit einem Zetex
Ach, mit dem Zetex also.
Mit welchem Zetex denn?

von Andy (Gast)


Lesenswert?

das mit dem externen Quarzoszillator kann ich bestätigen. Wenn ich den 
internen nehme, blitzts nicht! Ich kann aber den internen nicht nehmen, 
da ich für meine DMX-Steuerung einen genauen Takt brauche!

von Ben _. (burning_silicon)


Lesenswert?

tjo dann ists eindeutig die anschwingzeit des quarzoszillators.

von (prx) A. K. (prx)


Lesenswert?

Evtl. Keramikschwinger verwendet und die Fuses entsprechend einstellen. 
Blitzt zwar auch, aber erheblich kürzer. Noch kürzer wird's mit einem 
vollständig externen Quarzoszillator (Vierbeiner), aber der braucht 
deulich mehr Platz als die sinnvollste Lösung: externe Pullups.

von Andy (Gast)


Lesenswert?

@Lothar: Mit dem 1356...

von (prx) A. K. (prx)


Lesenswert?

Steht doch im Datasheet vom Zetex: Softstart-Kondensator an ADJ.

von Udo. R. S. (Gast)


Lesenswert?

Ehe man die Hardware so unveränderlich macht sollte das Ganze getestet 
sein :-(
Externe Pullups sind das einzig sinnvolle, die kann man auch noch auf 
eine fetige Platine auflöten wenns ein Einzelstück ist.
Wenn nicht kann man das Layout immer ändern.

von Ben _. (burning_silicon)


Lesenswert?

softstart-kondensator? was soll das nun wieder für ein murks werden? ich 
denke da soll eine PWM rein - na dann viel spaß mit dem C da dran!

von (prx) A. K. (prx)


Lesenswert?

Udo. R. S. schrieb:

> Externe Pullups sind das einzig sinnvolle,

Aber nur solange, bis man ins Datasheet schaut. Demzufolge ein Pullup 
für Festbeleuchtung sorgt, für Dunkelheit aber GND. Und deshalb ein 
Kondensator nach GND empfohlen wird.

von (prx) A. K. (prx)


Lesenswert?

Ben _ schrieb:

> softstart-kondensator? was soll das nun wieder für ein murks werden? ich
> denke da soll eine PWM rein - na dann viel spaß mit dem C da dran!

Originalinfo Datasheet, sogar mit Bild. Man kann den ADJ zwar auch 
direkt mit PWM füttern, aber ebenso mit Gleichspannung. Wofür dann ein 
R/C-Glied sorgt, dessen C nebenbei den Softstart mitbringt.

Ob ein Pulldown-Widerstand was bringt wäre zu untersuchen. Der Pin ist 
nicht stromfrei, könnte sein dass der etwas arg niederohmig ausfallen 
muss.

von Ben _. (burning_silicon)


Lesenswert?

und daß du damit die PWM versaust steht da bestimmt nicht drin. daran 
muß der doofe entwickler selber denken. entweder einen pulldown oder 
pullup, der für stabile verhältnisse sorgt bis der µC die kontrolle 
übernimmt - alles andere erscheint mir sehr zweifelhaft.

von (prx) A. K. (prx)


Lesenswert?

Ben _ schrieb:

> und daß du damit die PWM versaust steht da bestimmt nicht drin.

Ist sogar beabsichtigt. Ein richtig dimensioniertes R/C-Glied versaut 
die PWM dermassen gründlich, dass eine geeignete Gleichspannung als 
Steuerspannung entsteht (PWM als DAC).

> muß der doofe entwickler selber denken. entweder einen pulldown oder
> pullup,

Yep, Pulldown <= 5K müsste funktionieren.

von Ben _. (burning_silicon)


Lesenswert?

yep klasse idee, das mit der gleichspannung. mal sehen wie lange es 
dauert bis aus dem Zetex wegen der verlustleistung ein Zet-Ex wird!

von (prx) A. K. (prx)


Lesenswert?

Bin ich hier eigentlich der einzige, der sich mal die Mühe gemacht hat 
ins Datasheet reinzusehen: "The ADJ pin can be driven by an external dc 
voltage (VADJ), as shown, to adjust the output current to a value above 
or below the nominal average value defined by RS.".

Der ZXLD1356 ist ein Schaltregler, der über den ADJ-Pin wahlweise per 
PWM oder per Gleichspannung gesteuert wird.

von Ben _. (burning_silicon)


Lesenswert?

so nun reichts mit dem rätselraten.

schaltplan her!

von Klaus F. (kfalser)


Lesenswert?

Lothar Miller schrieb:
> Klaus Falser schrieb:
>> Wenn die Pins am Anfang als Ausgänge geschalten sind und deshalb
>> hochohmig, ...
> Häh?
>
Oh jeh, habe natürlich Eingänge gemeint.

von (prx) A. K. (prx)


Lesenswert?

Schaltplan ist auch so klar, mir jedenfalls. Der Controller-Pin liegt 
offenbar direkt am ADJ-Pin vom Zetex. Im offenen Zustand sorgt das für 
einen genau definierten Strom durch die LED.

Kriegt man komplett weg mit einem Pegel unter 0,2V, was bei den internen 
1,25V/50KOhm mit etwas Reserve auf besagte <= 5K rausläuft.

von Ich (Gast)


Lesenswert?

Ist das denn bei DMX sooo schlimm das die LED kurz auf blitzen?? Ich 
würde die Zeit vergrößern und im Datenblatt schreiben das das so sein 
soll :)

It's not a bug it's a feature...

von Ben _. (burning_silicon)


Lesenswert?

russe! ;) :D

von Michael W. (retikulum)


Lesenswert?

A. K. schrieb:
> Schaltplan ist auch so klar, mir jedenfalls. Der Controller-Pin liegt
> offenbar direkt am ADJ-Pin vom Zetex. Im offenen Zustand sorgt das für
> einen genau definierten Strom durch die LED.
>
> Kriegt man komplett weg mit einem Pegel unter 0,2V, was bei den internen
> 1,25V/50KOhm mit etwas Reserve auf besagte <= 5K rausläuft.

Nein, als erstes hat er ja geschrieben, dass er den Pin über einen 
Transistor ansteuert. Deshalb ja auch bei logisch 1 LED aus und bei 
logisch 0 Leds an. Ich würde einfach einen Pull Down an der Adj. Pin 
setzen und dann mit PWM drangehen.

Michael

von Udo. R. S. (Gast)


Lesenswert?

Moment mal A. K.
Ich arbeite nebenbei noch und habe keine zeit mir noch ein Datasheet 
rauszusuchen zumal die Typbezeichnung nicht mal konkret war. Wenn dann 
häng(t) halt das Sheet zumindest mit an.
Ausserdem Zitat:
>ein PWM mit DutyCycle 100% entspricht Helligkeit "0"
Also ist Helligkeit 0 wenn die PWM dauerhaft 'high' bzw. wohl 5V bringt.
So zumindest muss man es verstehen. Also ext. Pull UP

von Andy (Gast)


Lesenswert?

OK, also vielen Dank zunächst für die vielen Antworten.
RC-Gleid fällt weg, da ich das PWM-Signal für einen stabilen 
Arbeitspunkt der LEDs brauche (Weißlichterzeugung).
Wie gesagt, kann ich an der Hardware nix mehr ändern, d.h. es müsste 
etwas softwaremäßiges her...

von Ben _. (burning_silicon)


Lesenswert?

wenn du an der HW nichts mehr ändern kannst, also nichtmal SMD pullups 
oder so zwischenlöten kannst dann war's das. deine software macht 
bereits alles was sie kann.

von Klaus (Gast)


Lesenswert?

Dein Problem ist die Zeit, bevor die Software überhaupt anläuft. Wie 
soll die Software dann daran etwas ändern?

von Gastino G. (gastino)


Lesenswert?

Eine Zeitreisemaschine in und für Software wäre vielleicht eine Lösung, 
allerdings scheint es das in der Codesammlung noch nicht zu geben. Musst 
Du also selber schreiben... ;)

von Karsten (Gast)


Lesenswert?

Folgendes funktioniert:
1
 _delay_ms(-50);
2
 portb = 0xFF;
3
 ddrb = 0xFF;

von Andy (Gast)


Lesenswert?

@Karsten: Habs probiert, geht leider nicht... :-)

von Simon K. (simon) Benutzerseite


Lesenswert?

Andy schrieb:
> @Karsten: Habs probiert, geht leider nicht... :-)

Kein Wunder! portb und ddrb sind ja auch klein geschrieben ;)

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.