LocoNet FastClock - min fortolkning

Her kan du debattere og stille spørgsmål til alt om elektronik og digitaldrift på modeljernbanen. Skal du have hjælp til en dekoder eller driller signalet? Stil dit spørsmål her.
Besvar
moppe
Lokomotivfører
Indlæg: 4662
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

LocoNet FastClock - min fortolkning

Indlæg af moppe »

Det her er et projekt der opstod for længe side, da FastClock blev implementeret i Z21. med firmware V1.42.

Egenligt ville jeg gerne prøve at arbejde lidt med FastClock og kiggede mig derfor omkring efter et lille FastClock display, enten til DCC, X-bus, eller LocoNet. DCC kunne være lidt cool, så var det bare at koble det til skinnerne....

Det eneste jeg kunne finde var et fra Digitrax, som ikke er særligt kønt og som kun rigtigt er at finde i USA og med rødt 7-segment display
Så det blev til et "Gør det selv" projekt.

Til Arduino er der ikke FastClok i hverken DCC eller X-bus library, kun LocoNet.
Eksemplet i LocoNet library med FastClock kunne jeg simpelthen ikke finde ud af at bygge videre på, så det eneste alternativ var Pacos FastClokLN

Med udgangspunkt i Pacos kode begyndte jeg at ændre i koden, men fik det aldrig rigtigt til at virke, så jeg endte med at købe et af de røde dot-matrix displays, som Paco bruger og lave det hele lige efter Pacos "opskrift". Nu kom der noget igennem og jeg fik sat det til Loconet sync/slave, hvor display forespørger centralen med et givent tidsinterval.

Men det der røde dot-matrix display er ikke lige mig, jeg vil have et lille OLED display.
Så jeg gik i gang, nu var det lidt lettere at komme i gang med at rode med programmet.
Først fjernede jeg en del af det jeg ikke tænkte af jeg ville få brug for, eksempelvis at et ur kan være master (det er altså min Z21 der skal være det!) og real-time-clock - igen det er min Z21 der skal stå for det.
Så blev der tilføjet debugging til seriel port, så jeg kunne følge med i, hvor i programmet jeg er, slanket en del mere, få lagt ind, så den kan genkende Z21 som digitalcentral, lave så der forespørges efter tid fra centralen, når der har været slukket for strømmen i skinnerne - og andre småting

Nu er jeg kommet dertil at jeg har en version der kan det jeg vil:
FastClock via LocoNet i samarbejde med Z21
OLED display
Simpelt LocoNet interface, hvorfra alt kan forsynes.
Ingen trykknapper og menusystemer
massevis af kommentarer i programkoden - på engelsk - så jeg kan finde hoved og hale i den.

Her den færdige prototype
Billede

Her et link til mit program

Klaus

Bjerregaard
Trafikelev
Indlæg: 5
Tilmeldt: 03 jul 2025, 09:59
Digital: Ja
Scale: H0 - 3-rail
Skinnesystem: Märklin K

Re: LocoNet FastClock - min fortolkning

Indlæg af Bjerregaard »

Tak fordi du gjorde mig opmærksom på de nye muligheder i Z21'eren.
Den nyeste version 1.43 kan også sende tiden ud i skinnerne! Så jeg har inspireret af dit projekt lavet en DCC dekoder der kan vise fastclock'en.

moppe
Lokomotivfører
Indlæg: 4662
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: LocoNet FastClock - min fortolkning

Indlæg af moppe »

Hov, via DCC…….det kunne jeg ikke finde ud af.

Har du fundet fast clock i et DCC library, eller selv tilføjet det (har ikke lige set hele video)?

Klaus

Bjerregaard
Trafikelev
Indlæg: 5
Tilmeldt: 03 jul 2025, 09:59
Digital: Ja
Scale: H0 - 3-rail
Skinnesystem: Märklin K

Re: LocoNet FastClock - min fortolkning

Indlæg af Bjerregaard »

Så må du jo tålmodigt se det hele :)

I videoen viser jeg hvad og hvor der skal puttes et par linjer kode ind i nmradcc.cpp og nmradcc.h og hvordan man laver et simpelt Arduino program.

Men da du er den første og eneste der har gidet at kommentere på det, så får du det hele i en meget kort version:

Læg det her i nmradcc.h:
// RCN-211
extern void notifyFastClock( uint8_t Cmd, uint8_t Data1, uint8_t Data2, uint8_t Data3) attribute ( (weak));

Læg RCN-211 afsnittet ind i nmradcc.cpp lige efter notifyDccIdle (cirka linje 1337):

Kode: Vælg alt

        // Idle Packet
        if ( (pDccMsg->Data[0] == 0b11111111) && (pDccMsg->Data[1] == 0))
        {
            if (notifyDccIdle)
                notifyDccIdle() ;
        }

    // RCN-211 Fastclock
    // Address=0 (broadcast) Cmd=1100-0001
    else if (pDccMsg->Data[0] == 0b00000000 && pDccMsg->Data[1] == 0b11000001) {
            	if ( notifyFastClock) {
                  notifyFastClock( pDccMsg->Data[1], pDccMsg->Data[2], pDccMsg->Data[3], pDccMsg->Data[4]);
		}
	}

I din arduino sketch:

//
// Is called when a RCN-211 Time packet is received
// Cmd is 11000001
// CCxx-xxxx xxxx-xxxxx xxxx-xxxx
//
void notifyFastClock( uint8_t Cmd, uint8_t Data1, uint8_t Data2, uint8_t Data3)
{
uint8_t cc = Data1 & 0b11000000;

Kode: Vælg alt

if ( cc == 0b00000000) {
  fastClockMinutes = Data1 & 0b00111111;
  fastClockHours = Data2 & 0b00001111;
  newClock = true;
}
else if ( cc == 0b01000000) {
  // Date
}
else if ( cc == 0b10000000) {
  // Factor as float
}

}

Venlig hilsen Michael

moppe
Lokomotivfører
Indlæg: 4662
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: LocoNet FastClock - min fortolkning

Indlæg af moppe »

Hej Michael

Tak……

Har du overvejet at foreslå dine tilføjelser til teamet bag nmradcc lib’et?
Så kan andre end dem der læser med her få fornøjelse af dine tilføjelser.

Klaus

Bjerregaard
Trafikelev
Indlæg: 5
Tilmeldt: 03 jul 2025, 09:59
Digital: Ja
Scale: H0 - 3-rail
Skinnesystem: Märklin K

Re: LocoNet FastClock - min fortolkning

Indlæg af Bjerregaard »

Ja, havde bare ikke taget mig sammen til det. Det er gjort nu.

https://github.com/mrrwa/NmraDcc/issues/105

moppe
Lokomotivfører
Indlæg: 4662
Tilmeldt: 30 jul 2011, 12:22
Digital: Ja
Scale: H0 - 2-rail
Geografisk sted: Hammel
Kontakt:

Re: LocoNet FastClock - min fortolkning

Indlæg af moppe »

Fedt…..

Klaus

Besvar