Auteur Sujet: DCC++ BaseStation  (Lu 25720 fois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #15 le: mars 09, 2016, 03:07:24 pm »
DCC_SIGNAL(mainRegs,1)ISR(TIMER1_COMPB_vect){              // set interrupt service for OCR1B of TIMER-1
  if(mainRegs.currentBit==mainRegs.currentReg->activePacket->nBits){    /* IF no more bits in this DCC Packet */ \
    mainRegs.currentBit=0;                                              /*   reset current bit pointer and determine which Register and Packet to process next--- */ \   
    if(mainRegs.nRepeat>0 && mainRegs.currentReg==mainRegs.reg){        /*   IF current Register is first Register AND should be repeated */ \
      mainRegs.nRepeat--;                                               /*     decrement repeat count; result is this same Packet will be repeated */ \
    } else if(mainRegs.nextReg!=NULL){                                  /*   ELSE IF another Register has been updated */ \
      mainRegs.currentReg=mainRegs.nextReg;                             /*     update currentReg to nextReg */ \
      mainRegs.nextReg=NULL;                                            /*     reset nextReg to NULL */ \
      mainRegs.tempPacket=mainRegs.currentReg->activePacket;            /*     flip active and update Packets */ \       
      mainRegs.currentReg->activePacket=mainRegs.currentReg->updatePacket; \
      mainRegs.currentReg->updatePacket=mainRegs.tempPacket; \
    } else{                                                             /*   ELSE simply move to next Register */ \
      if(mainRegs.currentReg==mainRegs.maxLoadedReg)                    /*     BUT IF this is last Register loaded */ \
        mainRegs.currentReg=mainRegs.reg;                               /*       first reset currentReg to base Register, THEN */ \
      mainRegs.currentReg++;                                            /*     increment current Register (note this logic causes Register[0] to be skipped when simply cycling through all Registers) */ \
    }                                                                   /*   END-ELSE */ \
  }                                                                     /* END-IF: currentReg, activePacket, and currentBit should now be properly set to point to next DCC bit */ \
                                                          \
  if(mainRegs.currentReg->activePacket->buf[mainRegs.currentBit/8] & mainRegs.bitMask[mainRegs.currentBit%8]){     /* IF bit is a ONE */ \
    OCR1A=DCC_ONE_BIT_TOTAL_DURATION_TIMER1;                            /*   set OCRA for timer1 to full cycle duration of DCC ONE bit */ \
    OCR1B=DCC_ONE_BIT_PULSE_DURATION_TIMER1;                            /*   set OCRB for timer1 to half cycle duration of DCC ONE but */ \
  } else{                                                               /* ELSE it is a ZERO */ \
    OCR1A=DCC_ZERO_BIT_TOTAL_DURATION_TIMER1;                           /*   set OCRA for timer1 to full cycle duration of DCC ZERO bit */ \
    OCR1B=DCC_ZERO_BIT_PULSE_DURATION_TIMER1;                           /*   set OCRB for timer1 to half cycle duration of DCC ZERO bit */ \
  }                                                                     /* END-ELSE */ \
                                                                                       \
  mainRegs.currentBit++;                                         /* point to next bit in current Packet */ 
}

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1265
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #16 le: mars 09, 2016, 03:13:43 pm »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: Re: DCC++ BaseStation
« Réponse #17 le: mars 09, 2016, 03:17:14 pm »

Thierry

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 452
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #18 le: mars 09, 2016, 03:18:31 pm »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1265
    • Voir le profil
Re: Re: Re: DCC++ BaseStation
« Réponse #19 le: mars 09, 2016, 04:10:21 pm »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #20 le: mars 09, 2016, 07:32:51 pm »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1265
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #21 le: mars 09, 2016, 07:41:00 pm »
GameBoy Pocket  :o

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: Re: DCC++ BaseStation
« Réponse #22 le: mars 09, 2016, 08:14:25 pm »

DDEFF

  • Sr. Member
  • ****
  • Messages: 459
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #23 le: mars 09, 2016, 10:31:16 pm »
« Modifié: mars 10, 2016, 08:54:07 am par DDEFF »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1265
    • Voir le profil

DDEFF

  • Sr. Member
  • ****
  • Messages: 459
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #25 le: mars 25, 2016, 04:18:05 pm »
Et une commande par mobile et DCC++

Et pour 10$, s'il vous plait !!  ;D ;D ;D

« Modifié: mars 25, 2016, 05:54:42 pm par DDEFF »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #26 le: mars 25, 2016, 06:12:58 pm »

DDEFF

  • Sr. Member
  • ****
  • Messages: 459
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #27 le: mars 25, 2016, 07:00:16 pm »
Tu vas faire un UNO en parpaings ?  ;D

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #28 le: mars 25, 2016, 07:37:49 pm »
Non un mur de Nanos  8)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1454
  • 100% Arduino et N
    • Voir le profil
Re: DCC++ BaseStation
« Réponse #29 le: août 09, 2016, 02:32:44 pm »