Forum: Mikrocontroller und Digitale Elektronik Inverter reagiert nicht bei schnellerem Wechselsignal


von Johannes (menschenskind)


Lesenswert?

Hallo,

Für meinen Schaltungsentwurf liegt dieser Thread zu Grunde: 
Beitrag "Levelconverter von 2.5-3 auf 5V mit Mosfet-oder Bipolartransistor?"

Ich habe den SN74AHCT1G14 genommen.
Diesen habe ich auf ne kleine Lochrasterplatine aufgelötet und auf 
meinem Steckbrett in den Rest der Schaltung integriert.
Funktion des Inverters mittels LED verifiziert.

Wenn ich jetzt am Eingang die Datenleitung für meine WS2812B-LED 
anschließe und am Ausgang die LED, dann passiert: Nichts :(

Die zugehörige Codebibliothek habe ich aus Tims Projekt: 
https://github.com/cpldcpu/light_ws2812
Dort habe ich in dieser Datei 
(https://github.com/cpldcpu/light_ws2812/blob/master/light_ws2812_AVR/Light_WS2812/light_ws2812.c#L110) 
die Masken dahingehend geändert:
1
masklo |= maskhi&ws2812_PORTREG; 
2
maskhi = ~ws2812_PORTREG;
(Interessanterweise funktioniert die LED mit beiden Varianten, also ohne 
Inverter.)

Die Frage ist, warum dieses Signal anscheinend nicht korrekt durch den 
Inverter kommt, obwohl dessen Timing im unteren Nanosekundenbereich 
liegt, also weit schneller schalten kann, als die Daten gesendet werden.

Habt ihr irgendwelche Tipps für mich?
Leider hat mir Tim nur gesagt, dass ich "die Masken verändern" muss. 
Evtl. liegt da schon ein Fehler.
Beitrag "Re: Lightweight WS2811/WS2812 Library"

Danke im Voraus.
Hannes

von Jakob (Gast)


Lesenswert?

Ich habe da mal gleich ALLES ausgereizt, was nur irgendwie
geht (aber nicht geht, wenn irgendein Teil nicht geht):
Und nun geht es nicht gleich, wie ich es will ...

Hast du dir mal Gedanken gemacht, dich an das Problem und
damit auch seiner Lösung HERANZUTASTEN?

Damit ist man vor 47 Jahren auf den Mond gekommen.

Naja, Smartphone-Abhängige sind da etwas im Nachteil:
Die App für WAS MACHE ICH FALSCH ist noch in der omega-Phase...

von Joe F. (easylife)


Lesenswert?

Johannes H. schrieb:
> Interessanterweise funktioniert die LED mit beiden Varianten, also ohne
> Inverter.)

ohne jetzt den referenzierten thread lesen zu wollen, nehme ich mal an, 
dass du hi und low einfach vertauschen musst (in software).
ausserdem wäre es irgendwie konsequent dass es so heissen muss:

maskhi = ws2812_PORTREG;
masklo = ~ws2812_PORTREG;

oder eben umgekehrt.

: Bearbeitet durch User
von Shiftit (Gast)


Angehängte Dateien:

Lesenswert?

Johannes H. schrieb:
> Ich habe den SN74AHCT1G14 genommen.

Ich habe das wie im Anhang ersichtlich gelöst.
Easy going, bis 100 kHz.

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


Lesenswert?

OT:
Jakob schrieb:
> Damit ist man vor 47 Jahren auf den Mond gekommen.
So, wie die heute (trotz vervieltausendfachter Rechenleistung) 
herumhampeln, um auf den Mars zu kommen (und es nur manchmal schaffen), 
bin ich mir da nicht mehr so sicher...

Johannes H. schrieb:
> Diesen habe ich auf ne kleine Lochrasterplatine aufgelötet
Mit Blockkondensator?

> Die Frage ist, warum dieses Signal anscheinend nicht korrekt durch den
> Inverter kommt
Vermutung oder Messung?
Falls Ersteres: du solltest dir ein Oszilloskop mit mindestens 2 Kanälen 
beschaffen, wenn du an seriellen Interfaces arbeitest...

von W.A. (Gast)


Lesenswert?

Shiftit schrieb:
> Ich habe das wie im Anhang ersichtlich gelöst.
> Easy going, bis 100 kHz.

Was für ein Lötaufwand.
Ein SN74AHCT1G14 ist prinzipiell doch in Ordnung. Bei Raumtemperatur 
schaltet der spätestens beim Überschreiten von 2.0V am Eingang den 
Ausgang auf Low und bei Unterschreiten von 1.5 ... 1.6V, je nach 
Versorgungsspannung, wieder auf High.

von Harald W. (wilhelms)


Lesenswert?

Lothar M. schrieb:

> So, wie die heute (trotz vervieltausendfachter Rechenleistung)
> herumhampeln, um auf den Mars zu kommen (und es nur manchmal schaffen),
> bin ich mir da nicht mehr so sicher...

Hmm, vielleicht wurde die Software von Tesla gekauft...

von Sascha_ (Gast)


Lesenswert?

Das Bizarrometer schlägt hart nach rechts aus: 2 ältere, internetaffine 
Mitbürger halten die nachwachsende Generation für unfähig, weil Sie in 
ihrer mikrocontroller.net Filterblase nur die Unfähigen zu Gesicht 
bekommen.

von Johannes (menschenskind)


Lesenswert?

Hallo

@shiftit
Diese Lösung wurde im von mir angegebenen Thread diskutiert und 
verworfen zu Gunsten des Inverter-ICs.

Ich konnte die Stelle identifizieren. Nicht maskhi und masklo an sich 
müss en vertauscht werden, sondern deren Reihenfolge ganz unten in der 
Datei in der Zeile:
1
 : "r" (curbyte), "I" (_SFR_IO_ADDR(ws2812_PORTREG)), "r" (maskhi), "r" (masklo)

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.