Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Alles korrektWenn du die Versorgung bereits vom FRM-Takt unabhängig gemacht hast (das macht Experimente mit Stützkondensatoren obsolet, aber das funktioniert dann doch nicht bei Warnblinker ohne Schlüssel im Schloss, weil die Rücklichter aus sind - oder?), genügt es doch, das Lauflicht zu starten - die fallende Flanke des FRM bzw. deren Zeitpunkt ist doch an sich egal.
Das Lauflicht müsste dann noch in einen One-Shot-Modus versetzt werden. Entweder kann es das eh schon (als Konfiguration), oder man müsste es mit Zusatzhardware erzwingen. Somit würde die Dunkelphase leicht variieren, aber das merken allenfalls Schlagzeuger.
Oder man setzt das ganze neu auf mit einem Arduino.
Den Doppelimpuls kann man auch per CARLY einstellen, aber ich benötige meeeeehr Zeit, also ausnahmsweise mal "langsamer".Im E85 konnte man im GM5 (=FRM) den Blinkerintervall durch Codierung in 5 Stufen leicht ändern - bis zum Doppelimpuls (US) beim Warnblinker. Das geht im E90 auch, also scheint es da evtl. eine Lösung zu geben.
Den Doppelimpuls kann man auch per CARLY einstellen, aber ich benötige meeeeehr Zeit, also ausnahmsweise mal "langsamer".
Ich werde mich mal mit Rhein.gold an den Zetti hängen und ins FRM rein schauen...
Danke, das war mir wirklich wichtig.Gute Lösung mit dem Powerfail-Fallback auf normales Blinken![]()
Ja, ziemlich blöd!Verstehe ich das richtig, dass du in einer schnellen Schleife aktuell den Trigger pollst?
Stimmt, da hatte ich schon mal was gelesen. Das werde ich mir umgehend anschauen. Allerdings sind bei der speziellen CONRAD-Platine nicht alle CPU-Pins mit Lötanschlüssen versehen. Daher verwende ich von deren Lauflicht-Lösung den TC1 Input Capture Pin, in meiner nachfolgenden Tabelle auf Zeile 19 beschrieben:Ja, bei den ATMELs gibt es Pin-Interrupts, die sind beim Arduino auch einfach nutzbar, habe ich z.B. mal für einen Servotester/Servopulsanalyzer gemacht:
#define PulsInPin 2 /* 2 oder 3 vom Chip her (Arduino Uno) möglich */
#define PulsInt PulsInPin-2 /* gemapped auf Int0 oder Int1 */
void setup()
{
pinMode(PulsInPin, INPUT_PULLUP);
attachInterrupt(PulsInt, PulsIsr, CHANGE); // gibt weitere Optionen, CHANGE reagiert auf beide Flanken
![]()
....
void BlinkerSignal_ISR (void)
{
if(Port_ReadBit(PORT_RC)) // check RC port for blinker signal (PD6, port RC)
Genau! Und deswegen ist es eineNaja, bis auf die kleine Unschärfe im Start-Timing ist das doch nur unelegant, aber unproblematisch.
Korrekt. Aber dafür muß ich in dem bisschen Code doch soviele Stellen anpassen, daß ich auch noch den IRQ korrigieren kann.Was die Sache verbessern würde im jetzigen Stand - ohne Umbau - wäre eine Codeänderung, dass das Lauflicht eben nicht rund läuft, sondern am Ende eines Zyklusses stehen bleibt und erst beim nächsten Trigger wieder vorne losläuft. Das vermeidet zuverlässig diese Überschneidungsblitzer.
Genau, da war was mit INTx:Die fraglichen Pins sind die "externen Interrupts" INTx. Der Arduino macht davon nur zwei einfach zugänglich, welche das physikalisch sind, müsste man reverse-engineeren
Yesterday I've updated the software to keep the ON phase a little bit longer.Dynamische Blinker
IMHO, the turn signals should stay on little longer (0.2-0.4s), when the whole led line lit. It disappears too quickly.
It looks good, when the full line lit time is not shorter than on this video
Wohl wahr.Einfach klasse!
Sieht so einfach aus und steckt doch so viel Arbeit drin![]()
[...]
V 11.00 06.09.2018 RE New interrupt handling, triggered by FRM signal
several Msg_WriteText() included to display activities and timings,
when sketch will be started by the C-CONTROL Pro IDE
#define TIMER_256_ON
#define TIMEPrescaler PS0_256 // PS0_256=17,36 µS
#define TIMEPrescaler PS0_1024 // PS0_1024=69,44 µS
- standard delay with prescaler PS0_256 is 26 cycles
- standard delay with prescaler PS0_1024 is 8 cycles
V 12.00 11.09.2018 RE LED groups & array extended from 6 to 7 (CNTLEDSTEPS)
Last copied value (7) keep the LED groups switched on until the FRM disables the signal
V 12.01 11.09.2018 RE Msg_WriteText() added to interrrupt handler
/*------------------------------------------------------------------------------
name: FRMSignal_ISR
description: this routine detects the blinker signal on the RC port (FRM signal)
------------------------------------------------------------------------------*/
void FRMSignal_ISR (void)
{
if(Port_ReadBit(PORT_RC)) // check RC port for FRM trigger (blinker signal on PD6, port RC)
{
if (!FRMisActive)
{
#ifndef DEBUG_ON
SwitchCurrencyByPassS4 (true); // lustig: verbrate ab jetzt ordentlich Strom, damit das FRM-Steuergerät von einer brennenden Blinker-Glühbirne ausgeht und keine Fehlermeldung liefert!!
#endif
FRMisActive = true;
FRMcycle++;
}
}
else
{
FRMisActive = false;
if (BlinkerIsActive)
{
SET_LEDS_OFF(true); // switch off all LED groups
BlinkerIsActive=false;
}
BlinkerCycle=FRMcycle;
SwitchCurrencyByPassS4 (false); // lustig: schalte den unsinnigen Stromverbrauch wieder ab
}
#ifdef DEBUG_ON
// Str_Printf(str, " FRMSignal_ISR: FRMcycle, BlinkerCycle, FRMisActive, BlinkerIsActive, timeticks: %d %d %d %d %d\r", FRMcycle,BlinkerCycle,FRMisActive, BlinkerIsActive, timeticks);
// Msg_WriteText(str); // Wert ausgeben
#endif
Irq_GetCount(INT_TIM2COMP); // finish irq
}
Absolut stabil, wasserdicht und seit August störungsfrei im Dauereinsatz.![]()