Hi, Martin
Darrel will love it, for sure !!! ( Lol ...)
If you want to have variable pulse length... just inc or dec the PAUSEUS value before the "START" LabelCode:'***************************************************************************** 'FRAMEGEN.BAS '***************************************************************************** ' ' Générateur de Trame R/C Graupner/Multiplex sur 12F675 ' ' 4,7,8 ou 9 Canaux - Neutre 1.5 ms ' ' Oscillateur interne 4 Mhz ' ' Trames déclenchées par interruptions TMR0 : PS = 1/128 Pl = 80 ' ' Sortie sur GPIO.5 ' Choix 4,7,8 ou 9 voies sur GPIO.3 et 4 '***************************************************************************** '***************************************************************************** ' @ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_ON DEFINE OSC 4 DEFINE OSCCAL_1K 1 DEFINE INTHAND _Marker ADCON0 = 0 ANSEL = 0 CMCON = 7 OPTION_REG = %10000110 'Disable Pull-Ups - PSA = 128 INTCON = %00100000 'TMR0 interrupt PIE1 = 0 PIR1 = 0 '***************************************************************************** ' Constantes Mark CON 400 Reload CON 80 Neutral CON 1500 GR CON 8 MPX CON 9 '***************************************************************************** ' Variables PROGRAM var byte PROGRAMOLD var byte FRAME4 var bit FRAME7 var bit FRAME8 var bit CLEAR '***************************************************************************** ' I/Os GPIO =%00100000 'GPIO.5 = 1 at startup TRISIO =%00011000 'set GPIO3 GPIO4 as input GPIO.5 as Output '***************************************************************************** GOTO INIT '***************************************************************************** '***************************************************************************** Marker: ' Interruption - Génération de la trame TMR0 = Reload GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 1 PAUSEUS 696 GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 2 PAUSEUS 796 GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 3 PAUSEUS 896 GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 4 PAUSEUS 992 IF FRAME4 THEN Selection @ NOP GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 5 - 1500µS PAUSEUS 1096 GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 6 PAUSEUS 1196 GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 7 PAUSEUS 1290 IF FRAME7 THEN Selection @ NOP GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 8 PAUSEUS 1392 IF FRAME8 THEN Selection @ NOP GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 ' Voie 9 PAUSEUS 1496 Selection: GPIO.5 = 0 PAUSEUS Mark GPIO.5 = 1 '***************************************************************************** 'Lecture des Jumpers PROGRAM = GPIO & %00011000 IF PROGRAMOLD <> PROGRAM THEN INIT '***************************************************************************** Start: 'Fin d'Interruption INTCON.2 = 0 INTCON.7 = 1 '***************************************************************************** CYCLE: 'Boucle de fonctionnement WHILE 1 WEND '***************************************************************************** INIT: 'Lecture des Jumpers PROGRAM = GPIO & %00011000 SELECT CASE Program CASE 24 FRAME4 = 1 : FRAME7 = 0 : FRAME8 = 0 CASE 16 FRAME4 = 0 : FRAME7 = 1 : FRAME8 = 0 CASE 8 FRAME4 = 0 : FRAME7 = 0 : FRAME8 = 1 CASE ELSE FRAME4 = 0 : FRAME7 = 0 : FRAME8 = 0 END SELECT PROGRAMOLD = PROGRAM GOTO Start END
And ... if you find something strange ... it is NOT an error !!!
( I told you Darrel would love it ....)
Alain




Bookmarks