www.mikrocontroller.net

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


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andy (Gast)
Datum:

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

Autor: Philip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
externe Pullups?

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

externe Pullupwiderstände.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter: Und wie wärs richtig?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst auf 1, dann Ausgang.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Andy (Gast)
Datum:

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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl (Gast)
Datum:

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

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tjo dann ists eindeutig die anschwingzeit des quarzoszillators.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Lothar: Mit dem 1356...

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht doch im Datasheet vom Zetex: Softstart-Kondensator an ADJ.

Autor: Udo. R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so nun reichts mit dem rätselraten.

schaltplan her!

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
russe! ;) :D

Autor: Michael W. (retikulum)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Udo. R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

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

Autor: Gastino G. (gastino)
Datum:

Bewertung
0 lesenswert
nicht 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... ;)

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgendes funktioniert:
 _delay_ms(-50);
 portb = 0xFF;
 ddrb = 0xFF;

Autor: Andy (Gast)
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

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

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.