Lösungsvorschläge, bzw. Bauteilvorschläge

Hemi

Aktives Mitglied
Premium Benutzer
30. Nov. 2008
1.103
19
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Moin zusammen,

ich habe da mal wieder was :) Was Spezielles... :)

Erstmal ein Bildchen:

power.PNG

Erklärung - hochfahren:
Ein Receiver (heißt FOR auf dem Bild) ist von einem Spannungsregler versorgt (ist nicht auf dem Bild) und ist quasi im "immer an" Modus (bzw. wird vom Powermanagement des Fahrzeuges "geweckt"). Nun erkennt FOR ein Licht auf der Leitung (MOST Network) und signalisiert das am Pin /STATUS. (Pin geht auf low, wenn Licht erkannt wurde). Dieser (/STATUS) wiederrum fährt den zweiten Regler (der abgebildete) hoch, von dem das Steuergerät versorgt wird.

Erklärung - runterfahren:
FOR signalisiert dem zweiten Regler, dass kein Licht mehr auf der Leitung ist und /STATUS geht auf high. Das kriegt auch der Prozessor mit und fährt entsprechend den OS8104 runter, hält dabei über die /HOLD Leitung den zweiten Regler im eingeschalteten Zustand. Ist der OS8104 und CPU runtergefahren, wird /HOLD losgelassen und das Steuergerät ist off-line.

An und für sich ist das Ganze einleuchtend und auch klar.

Nur, wie kann ich das mit der /HOLD-Leitung realisieren? Im Regler ist ein NOR-Glied mit negierten Eingägen, kennt jemand so ein Baustein? Ich kenne nur Regler mit einem /EN-Eingang, aber mit zwei?

Ich habe es mir so vorgestellt:
-> ein "kleiner" Regler (FOP zieht im "full power mode" 22mA), von dem nur der FOP versorgt wird
-> ein großer Regler (3A, step down), hier hängt der ODROID dran und OS8104 und der Rest
-> der FOP steuert den großen Regler und informiert auch dem ODROID über den Zustand vom Bus (/STATUS Pin).

Ideen?

Danke Euch.
 
Ich meine zwar auch schonmal Regler mit mehreren EN-/SD-Pins gesehen zu haben, aber bevor Du jetzt ewig suchst...
Was spricht dagegen, "links" noch'n externes Logikgatter dazuzuklemmen (wenn der Regler kein internes bietet) - soviel brauchen die auch nicht.
Alternativ proggst Du Dir 'n Tiny4/5/9/10 selbst zum entsprechenden Logik-IC. Bei Bedarf kannste da dann auch Verzögerungen etc... einbauen. (da ist der Tiny zwar schwer beleidigt, aber...)

Ansonsten hat Alabel vielleicht was für Dich?
 
Ich habe schon ewig gesucht und nichts gefunden, immer nur ein /EN-Eingang.

So eine Logic-IC wäre doch so ein CD4001B das Richtige oder?
 
wäre doch so ein CD4001B das Richtige oder?
Jain...
Du hast oben kein NOR-Gatter, sondern ein OR-Gatter mit invertierenden Eingängen.
Die Logik-Tabelle wäre demnach:
Code:
E E A
0 0 1
0 1 1
1 0 1
1 1 0
Der 4001 ist meinem Buch nach ein Quad-NOR, also vier OR-Gatter mit invertierendem Ausgang.
Die Logik-Tabelle eines einzelnen Gatters wäre:
Code:
E E A
0 0 1
0 1 0
1 0 0
1 1 0
Du kannst natürlich die anderen drei Gatter als NOT-Gatter verschalten (wird auch gern mit NANDs gemacht...)

oder eben stattdessen einen Tiny zweckentfremden. SOIC14 vs SOT23-6...

Edit @Dirk : früher gabs mal Tabellen-Tags - ist da noch irgendwas machbar??
 
Zuletzt bearbeitet:
Edit @Dirk : früher gabs mal Tabellen-Tags - ist da noch irgendwas machbar??
Theoretisch schon. Es gibt hierfür schon Lösungen, allerdings ist das mit Tabellen über bbcode allgemein recht kompliziert anzuwenden. Und früher hat das fast niemand genutzt, du mal, ich mal ... Ich kann mich ja da bei Gelegenheit mal beschäftigen, wie groß der Aufwand ist dieses Feature einzubauen.
 
Für SPI-ISP gibt's ja viele Programmiergeräte (STK500, AVRisp, simpler Parallelport,...). Bei vielen Megas und Tinies reicht das - der Tiny10 hingegen nutzt das Tiny Programming Interface (TPI), und dafür brauchst Du einen AVRisp mkII, vermutlich kann das auch das STK600, oder eben der von Maik vorgeschlagene ICE usw.
Die neuen XTinies kann selbst der AVRisp mkII nicht mehr (oder noch nicht - und da der bereits obsolet ist, halte ich ein entsprechendes Firmwareupdate für sehr unwahrscheinlich).
Bei Logikgattern nutzte halt Deine Finger und den Lötkolben als Programmer...
6 Pins, süß. Ich habe nur kein ISP für Megas und Tinys :(
Wenn Du willst, kann ich Dir auch'n entsprechend programmierten Tiny zuschicken. Falls man sich mal in Bückeburg trifft...;)
 
Zuletzt bearbeitet:
@maik: Dank efür den Vorschlag. :) Ich bin aber beim NXP CM3 und habe da schon einen Debugger.

@LotadaC: Das wäre cool, so ein Tiny :) Wenn Du es mir programmieren könntest :) Mit der Wertetabelle wie auf dem Bildchen da oben
 
Der Tiny10 hat sechs Beine. Zweimal Power, ein Reset - bleiben genau Deine Drei übrig. Du hast die Wahl, welcher der Ausgang sein soll.
Der Ausgang wäre während des Powerup tristate (bis ich einen entsprechenden Pegel drauflegen kann) - da wäre sicher ein externer Pulldown sinnvoll.
An den Eingängen brauch ich keine (bzw kann vor dem Auswerten selbst die internen Pullups aktivieren).
Ein 100nF-Kerko zwischen den Stromversorgungspins - fertich...

Was mir gerade aufgefallen ist, ist der Pulldown an /Hold in Deinem Bild oben. Wenn der Controller /Hold losläßt, geht der Eingang low - das Gatter würde durchschalten...

Ansonsten wäre die Regel: Ausgang ist low genau dann wenn beide Eingänge high sind.

Muß es besonders stromsparend sein, oder kann ich den einfach in einer Endlosschleife auf die Eingänge schauen lassen (ohne Sleep und PinchangeIRQ)?
Ich würde den Controller mit seinem nativen internem 1MHz takten lassen, ich schätze den Schleifendurchlauf auf ca. 10 Takte. Wäre die Reaktionszeit fix genug?

Ich such den Krempel dann nachher schon mal zusammen...
 
Der Tiny10 hat sechs Beine. Zweimal Power, ein Reset - bleiben genau Deine Drei übrig. Du hast die Wahl, welcher der Ausgang sein soll.
Der Ausgang wäre während des Powerup tristate (bis ich einen entsprechenden Pegel drauflegen kann) - da wäre sicher ein externer Pulldown sinnvoll.
An den Eingängen brauch ich keine (bzw kann vor dem Auswerten selbst die internen Pullups aktivieren).
Ein 100nF-Kerko zwischen den Stromversorgungspins - fertich...

Hört sich sehr gut an.

Was mir gerade aufgefallen ist, ist der Pulldown an /Hold in Deinem Bild oben. Wenn der Controller /Hold losläßt, geht der Eingang low - das Gatter würde durchschalten...
Ansonsten wäre die Regel: Ausgang ist low genau dann wenn beide Eingänge high sind.

Jetzt muss ich mal kurz überlegen.
-> EN-Pin vom LM2596 muss auf low gezogen werden, damit er Regler angeht.
-> Der Status-Pin vom POF wird auf low gezogen, wenn das Licht erkannt wurde.
=> einfach 1:1 durchreichen

-> Pin HOLD kann ich definieren, wie ich will. Ich würde ich dann nach der Logik "active low" machen, ist der Odroid aus, liegt der Pin auf +5v (pull up). Ist er hochgefahren auf low.

Daraus ergibt sich:

werte.PNG

Richtig?

Muß es besonders stromsparend sein, oder kann ich den einfach in einer Endlosschleife auf die Eingänge schauen lassen (ohne Sleep und PinchangeIRQ)?
Ich würde den Controller mit seinem nativen internem 1MHz takten lassen, ich schätze den Schleifendurchlauf auf ca. 10 Takte. Wäre die Reaktionszeit fix genug?

Nee, muss es nicht, eine Endlosschleife ist ok. Die einpaar mA wird die Batterie verkraften und nach 16 Minuten ist eh absolute Ruhe.

Vielen Dank.
 
Beide Eingänge liefern bei low den Aktivierungszustand, der auch low wäre. Ein Eingang reicht aus. Der Ausgang soll high sein, gdw beide Eingänge high sind. Wäre ein stinknormales AND-Gatter (Deine Tabelle in #11 stimmt).

Kann ich natürlich auch in den Tiny brutzeln.
(Ich könnte sogar drei unterschiedliche Gatefunktionen implementieren, und den Reset-Pin zur Konfiguration/Auswahl beim Powerup verwenden (Hi, Lo, Open) - aber das AND wird Dir wohl reichen.)
 
Hmm... aus der 4000er Serie der 4081 zB, oder von den klassischen 74ern der 74xx08 oder 09...
Das sind aber alles Quad-Gate-ICs, also mit je vier Gates -> 4*3 Pins + 2*Stromversorgung = 14 Beine.
Ebenso kannst Du auch zwei Gates eines NAND-ICs verwenden (NAND ist ein AND mit Invertierung am Ausgang, wenn man diesen auf beide Eingänge eines zweiten NAND-Gatters legt, invertiert dieses das erste (quasi ein NNAND - die beiden N's heben sich auf)).
Eben gerade den 74x2G00 gesehen - scheint ein Double Gate NAND zu sein -> VSSOP-8
In der Praxis werden solche Ersetzungen häufig eingesetzt, da man dann nur wenige ICs braucht, statt mehrerer für unterschiedliche Gatter.

Wenn Du bereits irgendwelche Logic-ICs dahast, kannst Du schauen, wie Du damit Dein AND realisierst (oder uns schauen lassen)...

Wenn Du den Tiny willst, mußt Du mir sagen, welcher Pin (B0, B1 oder B2) der Ausgang sein soll


CodeBox Assembler
   ┌─┐
PB0┤ ├PB3 (/Reset)
Gnd┤ ├Vcc
PB1┤ ├PB2
   └─┘

An den Eingängen würde ich die internen Pullups aktivieren, bevor ich mit dem auslesen beginne, der Pullup am Ausgang sollte bereits während des Powerups aktiv sein, also extern. Zusätzlich wäre ein Kerko zwischen Vcc und Gnd zu empfehlen.
 
Habs noch nicht getestet, kompiliert aber schonmal fehlerfrei:

CodeBox Assembler
/*
 * TinyGates.asm
 *
 *  Created: 04.08.2017 15:36:05
 *   Author: LotadaC
 *
 * AND Gate
 *  E1 und E2 als Eingänge festlegen, interne Pullups
 *  A als Ausgang festlegen, schaltet zwischen Gnd und Tristate
 */

 .equ E1=PB0 //Ein-/Ausgänge festlegen (Compilerkonstanten)
 .equ E2=PB1
 .equ A=PB2

 SBI PUEB, E1 //Pullups an den EIngängen aktivieren
 SBI PUEB, E2
 
 AusgangTristate:
 CBI DDRB, A    //Ausgang tristate
 AusgangLow:
 IN r16, PINB    //Pinregister laden
 ANDI r16, (1<<E1)|(1<<E2) //Eingänge maskieren
 SUBI r16, (1<<E1)|(1<<E2) //Eingänge subtrahieren (liefert 0 gdw beide Eingänge hi waren -> "Z")
 BREQ AusgangTristate  //dann springe
 SBI DDRB, A    //Ausgang auf Low, Output
 RJMP AusgangLow   //springe...

18 Bytes Flash
Der Schleifendurchlauf braucht (bei 1MHz) sechs bzw sieben µs.

@Dirk: die ASM-Codebox kennt die Kommentare nicht, außerdem hat sie die Tabs/Leerzeichen verschludert...
Und wenn ich direkt aus dem AtmelStudio C&P-en will, sind überall Leerzeilen dazwischen...
(falls Dir langweilig ist, und die ToDo-Liste zu kurz...:p)

Nachtrag @Hemi : auf meinem STK500 läufts - wenn Du den so getesteten Tiny haben willst -> Adresse via PN...
 
Zuletzt bearbeitet:
SN74LVC1G08
Single 2-Input Positive-AND Gate
bei digikey 0,36 €

gibt's auch von anderen Logik-Familien
 
  • Like
Reaktionen: Hemi
@Dirk: die ASM-Codebox kennt die Kommentare nicht, außerdem hat sie die Tabs/Leerzeichen verschludert...
Und wenn ich direkt aus dem AtmelStudio C&P-en will, sind überall Leerzeilen dazwischen...
(falls Dir langweilig ist, und die ToDo-Liste zu kurz...:p)
Offtopic
@LotadaC : ja, schaue ich mir demnächst mal an, die Highlighting-Regeln sollte ich hier auch noch anpassen.
 
Zuletzt bearbeitet:
Offtopic
@TommyB : ich hatte zwar dein .js verwendet, auch in der Version. Allerdings hat diese nicht mit deiner aktuellen überein gestimmt, es haben einige regex Einträge gefehlt. Nun werden auch wieder Kommentare erkannt.
Das mit dem C&P Problem aus dem Atmel Studio ist wahrscheinlich aber eine andere Baustelle.
 
@LotadaC: Super Sache!!! :) Wo welche Eingänge sind, ist mir eigentlich egal, ich route es dann einfach passend und gut ist. Ein Eingang hat nur eine "höhere Prio".

Gib mir noch Bescheid, was Du kriegst :)
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)