opt p=62 opt lle=132 132 colonnes par ligne pour l'oki opt cre create cross-reference table opt mex *** assemblage conditionnel cpu set 9 pour un P9 *cpu set 6 pour un B6 btext version 002 lundi 21 avril 1997 .bug du buzzer … la fin du mode fatal .le s/p de test de validit‚ du secteur met seulement 1 seconde pour dire que le secteur est bon ie 10 p‚riodes .en fin de mode fatal, l'onduleur bippe pdt 3,5 secondes seulement .la "pll" a des pas de 5 cycles au lieu de 1 : constante TAC .modifs des seuils SAO et SAB de surveillance de la tension de batterie etext ************************************************* *** *** *** UPS version B - octobre 96 - MC68HC705 P9 *** *** *** ************************************************* btext ifeq cpu-9 ... endc fin du cas P9 ifne cpu-9 ... endc fin du cas B6 etext ifeq cpu-9 ********************************************** cas du P9 porta equ $00 Port A Data Register portb equ $01 Port B Data Register portc equ $02 Port C Data Register portd equ $03 Port D Data Register ddra equ $04 Port A Data Direction Register ddrb equ $05 Port B Data Direction Register ddrc equ $06 Port C Data Direction Register ddrd equ $07 Port D Data Direction Register scr equ $0a Siop Control Register ssr equ $0b Siop Status Register sdr equ $0c Siop Data Register tcr equ $12 Timer Control Register tsr equ $13 Timer Status Register icrh equ $14 Input Capture Register High icrl equ $15 Input Capture Register Low ocrh equ $16 Output Compare Register High ocrl equ $17 Output Compare Register Low trh equ $18 Timer Register High trl equ $19 Timer Register Low atrh equ $1a Alternate Timer Register High atrl equ $1b Alternate Timer Register Low prog equ $1c eprom programming register addr equ $1d ADc Data register adscr equ $1e ADc Status / Control Register mor equ $900 mask option register cop equ $1ff0 COP Control Register timer equ $1ff8 Timer irq equ $1ffa External Interrupt swi equ $1ffc Software Interrupt reset equ $1ffe Reset and Power-On Reset org mor fcb %000 Mask Option Register : d‚validation Watchdog endc ************************************************* fin du cas P9 ifne cpu-9 ********************************************* cas du B6 porta equ $00 Port A Data Register portb equ $01 Port B Data Register portc equ $02 Port C Data Register portd equ $03 Port D Input Data Register ddra equ $04 Port A Data Direction Register ddrb equ $05 Port B Data Direction Register ddrc equ $06 Port C Data Direction Register eeprom equ $07 EEPROM/ECLK Control Register addr equ $08 A/D Data register adscr equ $09 A/D Status/Control Register plma equ $0a Pulse Length Modulation A plmb equ $0b Pulse Length Modulation B misc equ $0c Miscellaneous Register baud equ $0d SCI Baud Rate Register sccr1 equ $0e Serial Communications Control Register 1 sccr2 equ $0f Serial Communications Control Register 2 scsr equ $10 Serial Communications Status Register scdr equ $11 Serial Communications Data Register tcr equ $12 Timer Control Register tsr equ $13 Timer Status Register capth1 equ $14 Capture High Register 1 captl1 equ $15 Capture Low Register 1 ocrh equ $16 Compare High Register 1 ocrl equ $17 Compare Low Register 1 trh equ $18 Counter High Register trl equ $19 Counter Low Register dualtmh equ $1a Alternate Counter High Register dualtml equ $1b Alternate Counter Low Register capth2 equ $1c Capture High Register 2 captl2 equ $1d Capture Low Register 2 comph2 equ $1e Compare High Register 2 compl2 equ $1f Compare Low Register 2 optr equ $100 sci equ $1ff2 Serial Communication Interface tov equ $1ff4 Timer Overflow toc equ $1ff6 Timer Output Compares 1 and 2 tic equ $1ff8 Timer Input Captures 1 and 2 irq equ $1ffa External Interrupt swi equ $1ffc Software Interrupt reset equ $1ffe Reset and Power-On Reset org optr fcb %11 registre optr (options) endc ************************************************ fin du cas B6 org reset fdb debut ******************************************* *** *** *** constantes *** *** *** ******************************************* per equ 50 50 * 2 æS = 100 æS (base de temps) seuil_1 equ %10100 seuil #1 @ 390 mV (le bit 4 doit ˆtre 1) seuil_2 equ %00101 seuil #2 @ 98 mV (le bit 4 doit ˆtre 0) seuil_3 equ %01110 seuil #3 @ 280 mV c_init equ 10 zone de test du passage par z‚ro du secteur m_l equ %11110000 masque lent m_r equ %00010000 masque rapide ouvrir equ 35 3,5 ms pour ouvrir le relais SAO equ 112 seuil bas d'arrˆt onduleur (2.2 volts) SAB equ 179 seuil d'acc‚l‚ration du buzzer (3.5 volts) TAC equ 10 nb de p‚riodes sans d‚faut pour valider le secteur OK initan2 equ 195/4 Modif du 01/02/95 seuil equ 1 Seuil de courant minimum de fonctionnement ****************************************************************** * P9 B6 * * ______________________________________________________________ * * zone ram : $0080..$00BF $0050..$00BF * * Pile : $00C0..$00FF id * * EPROM : $0100..$08FF $0800..$1FEF * * MOR : $0900 * * OPTR : $0100 * ****************************************************************** *************************************** *** *** *** contenu de la zone ram $80..$BF *** *** *** *************************************** org $80 *** registre timer microprocesseur: htimer rmb 1 lecture du registre de capture haut ltimer rmb 1 lecture du registre de capture bas *** zone de lecture des voies analogiques an0 rmb 1 valeur du secteur pour synchronisation an0_old rmb 1 ancienne valeur de an0, utilis‚e pour d‚terminer un * passage autour de la valeur 127 (passage par z‚ro) an1 rmb 1 tension de batterie filtr‚e an2 rmb 1 tension de r‚gulation actuellement utilis‚e an2_nxt rmb 1 "prochaine" tension de r‚gulation ! *** zone de calcul des dur‚es des portions de cycle t1a rmb 1 dur‚e o— PA0 est … 0 t3a rmb 1 dur‚e o— PA0 est … 0 t1b rmb 1 dur‚e o— PA1 est … 0 t2a_d rmb 1 dur‚e o— PA0 est … 1 (1Šre moiti‚) t2a_f rmb 1 dur‚e o— PA0 est … 1 (2Šme moiti‚) t2b rmb 1 dur‚e o— PA1 est … 1 (uniquement utilis‚e par sft_start) t3b rmb 1 dur‚e o— PA1 est … 0 *** gestion surintensit‚ i_max rmb 1 seuil de lecture donnant une surintensit‚ flag rmb 1 le bit 0 sert de flag pour indiquer * qu'une protection a eu lieu dans la p‚riode flag_3 rmb 1 le bit 0 set de flag pour indiquer * qu'une surintensit‚ de seuil_3 a eu lieu nb_i rmb 1 compteur de surintensit‚s. incr‚ment‚ si surintensit‚ nb_3 rmb 1 compteur de surintensit‚s de la valeur seuil_3 nb_max rmb 1 valeur max de nb_i *** compteur de p‚riodes secteurs sans d‚faut test_ac rmb 1 il faut DED p‚riodes sans d‚faut pour commuter le secteur periode rmb 1 mesure de la p‚riode du secteur pointeur rmb 1 pointeur dans table min/max px rmb 1 recopie de pointeur lors d'une erreur secteur px_bis rmb 1 recopie de px dans la routine de commutation rst_tmr rmb 1 temps de test du secteur au reset (DED secondes) *** compteur 2 ms utilis‚ pour tester le passage par 0 du secteur c_2ms rmb 1 *** compteur utilis‚ pour commander le relais : c_rel rmb 1 c_rel_i rmb 1 valeur d'initialisation de c_rel *** offset de t3 lors de la pr‚sence du secteur : offset rmb 1 0 si pas de secteur; * 1 ou $FF si pr‚sent = phase shifting *** flag mis … 1 si pointeur … ‚t‚ remis … 0, sans erreur, alors que *** c_2ms ‚tait non nul : ok rmb 1 1 si en phase *** tempo du bell : biptmr rmb 1 bipmsk rmb 1 masque de biptmr bit6 rmb 1 sortie de l'‚tat de la batterie attend rmb 1 compteur de la tempo d'ouverture du relais *** gestion de l'entr‚e pd7 pd7 rmb 1 compteur d'‚tat … 0 ; reset si = 50 *** tempo buzzer t1 rmb 1 t2 rmb 1 *** hyst‚r‚sis de d‚tection secteur hyst rmb 1 asave rmb 1 surchrg rmb 1 … 1 en cas de surintensit‚ toff rmb 1 compteur d'arrˆt en cas de seuil de courant faible mini rmb 1 flag indiquant que le seuil mini n'est pas atteint zp0 rmb 1 dernier octet de la page btext ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Timing des phases du P.W.M. de sortie ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄ¿ . t1a ³ t2a ³ t3a . pa0 ÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ . ÚÄÄÄÄÄÄÄ¿ . t1b ³ t2b ³ t3b pa1 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄ . etext *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ ************************ *** *** *** M A C R O S *** *** *** ************************ *** synchronisation 100 æS + test validit‚ secteur t200 macr *** demande de lecture de la voie an0 lda #%00100000 voie An0 : entr‚e 50 Hz sta adscr *** d‚cr‚ment de c_2ms si pas d‚j… … 0 lda c_2ms beq \.h branche si d‚j… … 0 dec c_2ms si non, d‚cr‚ment bne \.h branche si pas … 0 *** gestion de la tempo relais \.h lda c_rel beq \.h1 branche si d‚j… … 0 dec c_rel si non d‚cr‚ment bne \.h1 branche si pas … 0 brclr 0,ok,\.h1 branche si pas de synchro bset 2,porta commande du relais *** attente synchro 100 us \.h1 brclr 6,tsr,* branche tant que pas de comparaison *** r‚init pour la prochaine fois lda ocrl add #per tax lda ocrh adc #0 sta ocrh stx ocrl *** test du secteur *** lecture de la voie An0 brclr 7,adscr,* boucle tant que pas de mesure valide lda addr lecture de la valeur analogique sta an0 *** demande de lecture de la voie pass‚e en argument ldx #\0+$20 stx adscr *** incr‚ment de p‚riode inc periode beq \.z *** test si il y a eu un passage par 0 eor an0_old un passage par 0 va donner un chgt de signe bpl \.3 branche si pas de passage par 0 *** il y a donc eu un passage par 0: lda an0 sta an0_old mise en place de an0_old pour la prochaine fois *** test de la validit‚ de la p‚riode lda periode clr periode reset pour la prochaine fois cmp #115 107 est la valeur extrˆme bhi \.e vers la gestion des erreurs cmp #85 94 est la valeur la plus basse admise blo \.e vers la gestion des erreurs *** la valeur de la (1/2) p‚riode est donc correcte, reset du pointeur brclr 7,an0,\.2 branche si init pour 2Šme 1/2 p‚riode clr pointeur pointeur sur le d‚but du sinus *** mise en place ‚ventuelle d'un hyst‚r‚sis clr hyst brset 7,porta,\.h0 branche si pas d'hyst‚r‚sis … mettre en place lda #255-2 sta hyst *** test si c_2ms est non nul \.h0 lda c_2ms beq \.p brclr 7,porta,\.p branche si pas secteur OK bset 0,ok en phase *** valeur de la 1/2 p‚riode correcte, d‚cr‚ment de test_ac si c'est possible \.p lda test_ac beq \.f fini si d‚j… … 0 dec test_ac bne \.f fini si pas … 0 *** si … 0, allumage de la led secteur OK bset 7,porta rts fini \.2 lda #116 sta pointeur *** mise en place ‚ventuelle d'un hyst‚r‚sis clr hyst brset 7,porta,\.f branche si pas d'hyst‚r‚sis … mettre en place lda #2 sta hyst rts fini *** gestion des erreurs \.z lda an0 sta an0_old \.e lda #TAC reset compteur validit‚ du secteur sta test_ac lda pointeur recopie de pointeur dans px sta px clr pointeur bclr 7,porta extinction led secteur OK bclr 2,porta arrˆt relais secteur clr ok reset flag 'en phase' rts fin *** cas d'un non passage par 0: \.3 lda an0 sta an0_old inc pointeur incr‚ment du pointeur ldx pointeur test si pas de d‚passement cpx #231 231 est la valeur MAXimale bhi \.e branche si erreur add hyst hyst‚r‚sis sta asave *** division par 2 du pointeur txa lsra tax lda asave cmp min,x le r‚sultat doit ˆtre plus grand blo \.e branche si erreur cmp max,x le r‚sultat doit ˆtre plus petit bhi \.e branche si erreur \.f rts endm * FIN DE LA MACRO þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ ************************** ************************** *** *** *** d‚but du programme *** *** *** ************************** ************************** ifeq cpu-9 org $100 debut clra sta mor mask option register endc fin du cas P9 ifne cpu-9 org $100 fcb %11 registre optr (options) org $800 debut lda #%11 sta $100 registre d'options endc fin du cas B6 ******************************************************* *** *** *** configuration des ports *** *** *** ******************************************************* btext þþþ r‚partition du port A ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ pa7 s communication absence secteur secteur OK = 1 secteur absent = 0 pa6 s autoalimentation si 1 pa5 s fonctionnement en autonomie (sur batteries) si 1 pa4 s commande de l'arrˆt chargeur si 1 pa3 s commande de d‚magn‚tisation pa2 s 1 = commande du relais de fonctionnement sur secteur pa1 s grille QB = G du mos #2 pa0 s grille QA = G du mos #1 etext lda #%01000000 sta porta lda #$ff sta ddra btext þþþ r‚partition du port B ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ pb7 entr‚e t‚l‚commande d'arrˆt onduleur ; 0=arrˆt onduleur pb6 sortie de fin d'autonomie ; batterie OK=0 ; d‚but de fin d'autonomie=1 pb5 buzzer ; buzze si 0 etext lda #%00000000 sta portb lda #%01100000 sta ddrb btext þþþ r‚partition du port C ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ pc7 (vrh) pc6 (an0) entr‚e 50 Hz pc5 (an1) lecture tension de batterie pc4 (an2) r‚gulation pc3 (an3) lecture courant surintensit‚ pc2 entr‚e #3 de la constante de temps du relais pc1 entr‚e #2 de la constante de temps du relais pc0 entr‚e #1 de la constante de temps du relais etext lda #$00 sta ddrc sta portc * þþþ r‚partition du port D : inutilis‚ (le port D sert d'entr‚es analogiques) *ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ifeq cpu-9 lda #%00000000 sta ddrd sta portd endc fin du cas P9 *** init seuil mini clr toff clr mini *** reset bip lda #m_l init bipmsk sta bipmsk *** reset du compteur d'‚tat … 0 de pd7: entr‚e reset clr pd7 *** init de la constante de temps du relais lda portc lecture portc and #%111 tax lda tb_r,x lecture table des temps sta c_rel_i sta c_rel *** mise en route des convertisseurs A/D lda #%00100000 sta adscr *** message du bienvenu si B6 ifne cpu-9 *** initialisation du port s‚rie en sortie lda #%00000000 sta sccr1 lda #%00001000 enable TX sta sccr2 lda #%11000000 sta baud 9600 bauds (valeur exacte = 9615, err = 0,16%) *** ‚mission du message de bienvenue clrx tx_mes brclr 7,scsr,* attente de la possibilit‚ d'‚mettre lda mes,x lecture de l'octet point‚ cmp #$23 code de fin de chaŒne beq tx_0 branche si fin sta scdr incx bra tx_mes endc *** initialisations tx_0 lda #5 clr t1 reset BIP clr t2 t1z dec t1 bne t1z dec t2 bne t1z deca bne t1z bset 5,portb arrˆt reset bip clr surchrg pas de surcharge clr ok reset flag en phase clr c_2ms reset compteur 2ms *** d‚but des cycles ************************************ * * * initialisation du timer 100æs * * * ************************************ lda tsr 3 effacement de l'interruption timer lda trh 3 lecture du compteur timer sta htimer 4 capture lda trl 3 suite de la lecture sta ltimer 4 lecture de la valeur du timer lda ltimer 3 calcul de la comparaison add #per 2 sta ltimer 4 dans ltimer et htimer lda htimer 3 adc #0 2 sta ocrh 4 on replace ltimer et htimer dans le registre lda ltimer 3 de comparaison sta ocrl 4 clr tcr pas d'interruption ! *** mise en place du masque lent lda #m_l sta bipmsk *** init de an2 et an2_nxt lda #initan2 modif du 01/02/95 sta an2 sta an2_nxt *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** v‚rification de la validit‚ du secteur btext Cette boucle du programme cherche … d‚terminer si lors de la mise en route de l'onduleur, le secteur est valable. Le test peut durer au maximum DED secondes durant lesquelles, le systŠme essaie de valider le secteur. Si le test donne un secteur utilisable, l'onduleur commute en mode secteur. L'onduleur tentera ad lib de d‚marrer sur secteur. etext *** demande de lecture de la voie an0 lda #%00100000 voie an0 : entr‚e 50 Hz sta adscr *** attente d'une mesure pour initialiser an0_old brclr 7,adscr,* boucle tant que pas de mesure lisible lda addr initialisation de an0_old sta an0_old *** reset du compteur de cycles pour la mesure de la p‚riode clr periode mesure de p‚riode clr pointeur pointeur dans table sinus clr px pointeur pour passage secteur -> onduleur lda #TAC reset du compteur au maximum sta test_ac bclr 7,porta arrˆt de la led secteur OK lda c_rel_i init tempo de commutation relais sta c_rel *** au reset, test de la tension secteur pour valider ou non le mode secteur sync_z lda #255 attend le secteur pdt 255*0.13s = 33sec sta rst_tmr init du timer de test du secteur (#3 secondes) *** appel de la macro de synchro + v‚rif secteur + lecture batterie sync_1 jsr t201 t100 1 *** reset de la tempo de commutation du relais si pointeur = 0 lda pointeur bne sync_1_ *** test pour voir s'il y a eu un overflow du compteur timer 16 bits sync_1_ brclr 5,tsr,sync_9 branche si pas d'overflow *** en cas d'overflow, d‚cr‚ment de rst_tmr *** clignotement de la led sur PA5 lda porta eor #%00100000 sta porta lda trl pour resetter TOF de Timer Status dec rst_tmr *** le secteur est donc mauvais, on va r‚_essayer ! bne sync_1 re test jmp fatal *** attente que le secteur soit bon sync_9 lda porta bpl sync_1 branche si secteur mauvais *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** mode de fonctionnement sur secteur. btext Durant le mode de fonctionnement sur secteur, le programme v‚rifie en permanence la validit‚ du secteur. DŠs le moindre d‚faut constat‚, le programme branche sur le mode onduleur, d‚commute le relais et g‚nŠre une onde de sortie dans la continuit‚ du secteur, au moment o— il a disparu. Durant le mode secteur, la tension de batterie est test‚e … chaque p‚riode de maniŠre … pr‚parer une commutation sur onduleur. etext * pa7 : communication absence secteur … 0 * pa6 : autoalimentation … 1 * pa5 : led secours … 0 * pa4 : commande de l'arrˆt chargeur … 0 * pa3 : d‚magn‚tisation … 0 * pa2 : commande relais secteur … 1 * pa1 et pa0 : mos … 0 sect_0 lda c_rel_i init tempo de commutation relais sta c_rel lda porta and #%11000100 ora #%11000000 sta porta * pb6 : d‚but de fin d'autonomie … 0 si batterie OK * pb5 : buzzer … 1 : arrˆt lda #%00100000 sta portb lda #$10 sta biptmr reset timer bip *** attente de la synchronisation timer sect_1 jsr t201 t100 1 *** commutation du relais tst c_rel bne sect_2 branche si tempo pas … 0 bset 2,porta commande le relais *** init de an2 et an2_nxt sect_2 lda #initan2 Modif du 01/02/95 sta an2 sta an2_nxt brset 7,porta,sect_1 branche si secteur bon *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** le secteur est mauvais : *** passage du mode secteur au mode onduleur, dans la continuit‚ de phase btext Cette routine est appel‚e lorsque le programme, fonctionnant dans le mode secteur d‚tecte une anomalie de l'onde. Elle d‚termine … partir de la derniŠre valeur de POINTEUR l'endroit o— se brancher dans le programme de g‚n‚ration du PWM de maniŠre … continuer l'alimentation de l'ordinateur sans coupure. etext lda px sta px_bis recopie px lda #20 sta t1a sta t3a sta t1b sta t3b lda #60 sta t2b lda #30 sta t2a_d lda #29 sta t2a_f jsr t202 t100 6 attente synchro 100æs * pa7 : communication absence secteur … 0 * pa6 : autoalimentation … 1 * pa5 : led secours … 1 * pa4 : commande de l'arrˆt chargeur … 1 * pa3 : commande de d‚magn‚tisation … 0 * pa2 : commande relais secteur … 0 * pa1 et pa0 : mos … 0 lda #%01110000 commande de la led secours, arrˆt relais secteur sta porta clr offset reset de l'offset de t3 *** attente de l'ouverture du relais lda #ouvrir sta attend init du nombre de cycle … rien faire att_1 jsr t201 dec attend bne att_1 *** reset des indicateurs de surintensit‚ clr surchrg lda #seuil_1 9 sta i_max clr flag clr flag_3 clr nb_i lda #20 sta nb_max *** reset des seuils minimum de courant clr toff clr mini *** test de la valeur de PX = derniŠre valeur du pointeur valide lda px_bis cmp #115 test si plus grand que 115 ie 2nde alternance bhi s2o_1 branche si plus grand *** test si plus grand que 100, ie la premiŠre demi-p‚riode est finie cmp #99 blo s2o_2 branche si plus petit jmp ond_40 vers le d‚but de la 2nde alternance s2o_2 cmp t1a bhs s2o_3 branche si plus grand lda t1a sub px_bis sta t1a jmp one_11 continue phase 1 s2o_3 sub t1a sta px_bis cmp t2a_d reste … comparer … t2a_d bhs s2o_5A branche si plus grand lda t2a_d sub px_bis sta t2a_d bset 0,porta jmp one_21 s2o_5A sub t2a_d sta px_bis cmp t2a_f reste … comparer … t2a_f bhs s2o_4 branche si plus grand lda t2a_f sub px_bis sta t2a_f bset 0,porta jmp ond_A1 s2o_4 sub t2a_f sta px_bis lda t3a sub px_bis sta t3a jmp ond_31 continue cette phase *** continuation de la 2nde alternance s2o_1 sub #116 sta px_bis cmp t1b bhs s2o_5 branche si plus grand lda t1b sub px_bis sta t1b jmp ond_4a continue cette phase s2o_5 sub t1b sta px_bis cmp t2b bhs s2o_6 branche si plus grand lda t2b sub px_bis sta t2b bset 1,porta commande MOS jmp ond_51 continue cette phase s2o_6 sub t2b sta px_bis cmp t3b bhs s2o_7 lda t3b sub px_bis sta t3b jmp ond_61 continue cette phase s2o_7 jmp ond_10 red‚marre au d‚but de l'alternance *** continuation sans lecture de la tension de r‚gulation *** modif du 27/04/95 *** d‚cr‚ment de t1a et boucle tant que ce n'est pas nul one_11 dec t1a beq one_20 vers le d‚but de l'autre morceau PWM *** attente synchro jsr t202 t100 6 bra one_11 *** d‚but de la zone t2a þþþ 1Šre moiti‚ one_20 bset 0,porta commande MOS ldx an2 lda t2d_tbl,x sta t2a_d one_21 jsr t203 t100 7 lecture du courant brclr 7,adscr,* attente de la fin de conversion ldx addr lecture courant cpx i_max blo one_22 branche si pas d‚passement *** d‚passement du seuil de courant bclr 0,porta arrˆt de la commande bset 0,flag *** d‚cr‚ment de la largeur de l'impulsion one_22 cpx #seuil_3 blo one_22z bset 0,flag_3 one_22z dec t2a_d bne one_21 vers re-synchro 100æs jmp ond_A0 *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** mode de fonctionnement sur onduleur btext Durant le mode de fonctionnement sur onduleur, le programme g‚nŠre un PWM … 50 Hz dont le rapport cyclique d‚pend de la tension de batterie. ...tant que la batterie permet le fonctionnement. Le secteur est surveill‚ en permanence de maniŠre … d‚tecter sa re-validit‚. Si le secteur redevient valide, le programme d‚termine la diff‚rence de phase entre l'onde secteur et l'onde g‚n‚r‚e. Le but du programme est d'effectuer une commutation lors d'un passage par 0, ou plus exactement dans les 2ms qui suivent le passage par z‚ro. Durant tout le fonctionnement sur secours, le buzzer buzze et le port s‚rie ‚met un code de secours destin‚ … ˆtre re‡u … 9600 bauds par le computer dans lequel un TSR examine une entr‚e s‚rie reli‚e … l'onduleur et qui doit avertir l'utilisateur de la n‚cessit‚ de hƒter une sauvegarde. Si la batterie devient HS, le programme arrˆte tout puis attend le retour du secteur. Le courant de source des MOS est monitor‚. S'il y a surcharge tout s'arrˆte pour toujours, jusqu'au prochain RESET. etext *** commutations * pa7 : communication absence secteur … 0 * pa6 : autoalimentation … 1 * pa5 : led secours … 1 * pa4 : commande de l'arrˆt chargeur … 0 * pa3 : commande de d‚magn‚tisation … 1 * pa2 : commande relais secteur … 0 * pa1 et pa0 : mos … 0 lda #%01100100 commande de la led secours, arrˆt relais secteur sta porta *** reset de l'offset de t3 clr offset *** reset des seuils minimum de courant clr toff clr mini *** reset des indicateurs de surintensit‚ clr surchrg lda #seuil_1 9 sta i_max clr flag clr flag_3 clr nb_i lda #20 sta nb_max *** synchro 100 æs *** Phase de T1A ond_10 brclr 7,portb,pd7_1 branche si pd7 est activ‚e (demande de RESET) clr pd7 si pas activ‚, reset du compteur bra pd7_0 pd7_1 inc pd7 incr‚ment compteur lda pd7 test si maximum atteint cmp #50 blo pd7_0 jmp debut en cas d'acceptation du reset -> debut ! pd7_0 jsr t201 t100 1 lecture tension batterie filtr‚e *** gestion du seuil minimum de courant brclr 0,mini,ond_10r branche si seuil mini atteint inc toff bne ond_10q branche si temps limite non atteint jmp fatal sinon, arrˆt de l'onduleur ond_10r clr toff reset timer ond_10q lda #c_init sta c_2ms reset compteur 2ms lda c_rel_i init compteur relais sta c_rel brclr 7,adscr,* attente de la fin de conversion ldx addr lecture valeur batterie stx an1 cpx #SAO test si fin d'autonomie bhi ond_100 branche si pas fin d'autonomie jmp fatal vers la fin d'autonomie ond_100 ldx an2_nxt recopie valeur stx an2 lda t1_tbl,x sta t1a *** d‚cr‚ment de t1a et boucle tant que ce n'est pas nul ond_11 dec t1a beq ond_20 vers le d‚but de l'autre morceau PWM *** attente synchro jsr t202 t100 6 bra ond_11 *** d‚but de la zone t2a þþþ 1Šre moiti‚ ond_20 bclr 3,porta arrˆt d‚magn‚tisation bset 0,porta commande MOS ldx an2 lda t2d_tbl,x sta t2a_d ond_21 jsr t203 t100 7 lecture du courant brclr 7,adscr,* attente de la fin de conversion ldx addr lecture courant cpx i_max blo ond_22 branche si pas d‚passement *** d‚passement du seuil de courant bclr 0,porta arrˆt de la commande bset 3,porta d‚magn‚tisation bset 0,flag *** d‚cr‚ment de la largeur de l'impulsion ond_22 cpx #seuil_3 blo ond_22z bset 0,flag_3 ond_22z dec t2a_d bne ond_21 vers re-synchro 100æs *** 1 coup de lecture au milieu pour lire la r‚gulation jsr t202 t100 6 lecture tension batterie *** mise en place de la nouvelle valeur de an2 brclr 0,porta,ond_A0 branche s'il n'y a pas eu une surintensit‚ brclr 7,adscr,* attente de la fin de conversion lda addr lsra division par 4 lsra division par 4 sta an2_nxt prochaine valeur de an2 *** d‚but de la zone t2f þþþ 2Šme moiti‚ ond_A0 ldx an2 lda t2f_tbl,x sta t2a_f ond_A1 jsr t203 t100 7 lecture du courant brclr 7,adscr,* attente de la fin de conversion ldx addr lecture courant cpx i_max blo ond_A2 branche si pas d‚passement *** d‚passement du seuil de courant bclr 0,porta arrˆt de la commande bset 3,porta d‚magn‚tisation bset 0,flag *** d‚cr‚ment de la largeur de l'impulsion ond_A2 cpx #seuil_3 blo ond_A2z bset 0,flag_3 ond_A2z dec t2a_f bne ond_A1 vers re-synchro 100æs *** commande du buzzer pour indiquer un fonctionnement sur onduleur inc biptmr brset 0,surchrg,ond_sg buzze si surcharge lda biptmr and bipmsk bne ond_23 ond_sg bclr 5,portb buzzer bra ond_23e ond_23 bset 5,portb pas de buzzer *** d‚but de la zone t3a ond_23e bclr 0,porta arrˆt commande MOS bset 3,porta d‚magn‚tisation *** test du courant minimum cpx #seuil bhi ond_23g branche si seuil non atteint bset 0,mini flag … 1 bra ond_23f ond_23g clr mini ond_23f ldx an2 lda t3_tbl,x add offset + offset de synchro secteur sta t3a ond_31 jsr t203 t100 7 lecture du courant *** d‚cr‚ment de la largeur de l'impulsion dec t3a bne ond_31 vers re-synchro 100æs *** durant cette inter-phase, gestion des surintensit‚s brclr 0,flag_3,ond_3at branche si pas de sur-I … seuil_3 clr flag_3 effacement du flag brclr 4,i_max,ond_3at pas de gestion si seuil_2 actif **** gestion de l'allumage de la led surintensit‚ bset 0,surchrg **** bclr 4,porta allumage led surintensit‚ inc nb_3 incr‚ment compteur lda nb_3 cmp #50 50 p‚riodes ie 1 seconde bhi ond_43 mise en place du seuil_2 bra ond_3bt suite ond_3at clr nb_3 ond_3bt brclr 0,flag,ond_41 branche si pas de surintensit‚ *** il y a donc eu surintensit‚ clr flag reset flag inc nb_i incr‚ment du compteur de surintensit‚s lda nb_i cmp nb_max blo ond_40 branche si inf‚rieur au nombre max *** on a donc atteint un maximum. **** gestion de l'allumage de la led surintensit‚ *** bclr 4,porta allumage led surintensit‚ bset 0,surchrg *** test du seuil de surintensit‚ brset 4,i_max,ond_43 branche si on peut passer au seuil inf‚rieur *** c'‚tait donc le seuil le plus bas, arrˆt fatal de l'onduleur: * pa7 : communication absence secteur … 0 * pa6 : autoalimentation … 0 * pa5 : led secours … 0 * pa4 : commande de l'arrˆt chargeur … 0 * pa3 : commande de d‚magn‚tisation … 0 * pa2 : commande relais secteur … 0 * pa1 et pa0 : mos … 0 lda #%01000000 sta porta bset 5,portb arrˆt buzzer jmp fatal loop forever *** cas o— il n'y a pas eu surintensit‚ ond_41 *** gestion de l'allumage de la led de surintensit‚ *** bset 4,porta arrˆt led surintensit‚ clr surchrg lda #seuil_1 sta i_max clr nb_i lda #20 sta nb_max bra ond_40 *** mise en place du seuil inf‚rieur ond_43 lda #seuil_2 sta i_max clr nb_i lda #128 sta nb_max *** synchro 100 æs *** Phase de T1B ond_40 ldx an2 lda t1_tbl,x sta t1b ond_4a jsr t202 t100 6 *** d‚cr‚ment de t1b et boucle tant que ce n'est pas nul dec t1b bne ond_4a *** durant cette inter-phase, double incr‚ment de "biptmr" *** si la batterie est faible lda #m_l masque lent ldx an1 cpx #SAB seuil … ?? volts (23 volts avant) bhi ond_50 branche si batterie OK lda #m_r *** zone de T2B ond_50 sta bipmsk and #%01000000 ne garder que le bit 6 eor #%01000000 sta bit6 lda portb and #%10111111 ora bit6 sta portb bclr 3,porta d‚magn‚tisation bset 1,porta commande MOS ldx an2 lda t2_tbl,x sta t2b ond_51 jsr t203 t100 7 lecture du courant brclr 7,adscr,* attente de la fin de conversion ldx addr lecture valeur courant cpx i_max blo ond_52 branche si pas d‚passement *** d‚passement du seuil de courant bclr 1,porta arrˆt de la commande bset 3,porta d‚magn‚tisation bset 0,flag indication d'une surintensit‚ *** d‚cr‚ment de la largeur de l'impulsion ond_52 cpx #seuil_3 blo ond_52z bset 0,flag_3 *** test du seuil de courant minimum ond_52z dec t2b bne ond_51 vers re-synchro 100æs *** d‚but de la zone t3b bclr 1,porta arrˆt commande MOS bset 3,porta d‚magn‚tisation ldx an2 lda t3_tbl,x add offset + offset de synchro secteur sta t3b ond_61 jsr t202 t100 6 lecture tension batterie *** d‚cr‚ment de l'impulsion dec t3b bne ond_61 branche si pas fini avec T3B *** test pour savoir si le secteur est revenu brclr 2,porta,ond_61t branche si pas de commande relais jmp sect_0 branche vers le mode secteur *** test de la r‚apparition du secteur et compensation des dur‚es T3 ond_61t brclr 7,porta,ond_62 branche si pas de secteur correct *** le secteur est pr‚sent, compensation de phase ldx #2 au d‚part, offset … 1 * modif de la version 1.50 : offset ne peut ˆtre ‚gal qu'… 0 ou 1 : stx offset jmp ond_10 ond_62 clr offset reset offset de t3 jmp ond_10 *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** boucle de la fin d'autonomie batterie fatal lda #%00100000 sta ddrb d‚validation de presque tout sta portb *** commande uniquement de PA6:autoalimentation et PA5:led secours lda #%01100000 sta ddra *** tempo avant arrˆt fa_0 ldx #10 clr t1 reset BIP clr t2 fa_1 dec t1 bne fa_1 dec t2 bne fa_1 lda porta clignotement eor #%00100000 sta porta lda portb clignotement eor #%00100000 sta portb decx bne fa_1 *** arrˆt fatal de l'onduleur lda #%01000000 sta ddra lda #%00000000 sta porta lda #%00100000 sta ddrb lda #%00100000 sta portb stop arrˆt MCU *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** routines de synchro secteur + attente 100 æS + lecture voie analogique t201 t200 1 lecture batterie t202 t200 2 lecture r‚gulation t203 t200 3 lecture courant *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** tables *** table de correspondance an2 / t2 = tension de batterie / largeur PWM *** tables des largeurs PWM *** tables MIN de surveillance de la forme d'onde du secteur t1_tbl fcb 1 fcb 1 4 fcb 1 8 fcb 1 12 fcb 1 16 fcb 2 20 fcb 4 24 fcb 5 28 fcb 6 32 fcb 7 36 fcb 8 40 fcb 9 44 fcb 9 48 fcb 10 52 fcb 11 56 fcb 12 60 fcb 13 64 fcb 14 68 fcb 14 72 fcb 15 76 fcb 16 80 fcb 17 84 fcb 17 88 fcb 18 92 fcb 18 96 fcb 19 100 fcb 20 104 fcb 20 108 fcb 21 112 fcb 21 116 fcb 22 120 fcb 22 124 fcb 23 128 fcb 23 132 fcb 24 136 fcb 24 140 fcb 25 144 fcb 25 148 fcb 26 152 fcb 26 156 fcb 26 160 fcb 27 164 fcb 27 168 fcb 28 172 fcb 28 176 fcb 28 180 fcb 29 184 fcb 29 188 fcb 29 192 fcb 30 196 fcb 30 200 fcb 30 204 fcb 31 208 fcb 31 212 fcb 31 216 fcb 31 220 fcb 32 224 fcb 32 228 fcb 32 232 fcb 32 236 fcb 33 240 fcb 33 244 fcb 33 248 fcb 33 252 t2_tbl fcb 98 fcb 98 4 fcb 98 8 fcb 98 12 fcb 98 16 fcb 95 20 fcb 92 24 fcb 90 28 fcb 88 32 fcb 86 36 fcb 84 40 fcb 82 44 fcb 81 48 fcb 79 52 fcb 77 56 fcb 75 60 fcb 74 64 fcb 72 68 fcb 71 72 fcb 69 76 fcb 68 80 fcb 66 84 fcb 65 88 fcb 64 92 fcb 63 96 fcb 61 100 fcb 60 104 fcb 59 108 fcb 58 112 fcb 57 116 fcb 56 120 fcb 55 124 fcb 54 128 fcb 53 132 fcb 52 136 fcb 51 140 fcb 50 144 fcb 49 148 fcb 48 152 fcb 47 156 fcb 47 160 fcb 46 164 fcb 45 168 fcb 44 172 fcb 44 176 fcb 43 180 fcb 42 184 fcb 42 188 fcb 41 192 fcb 40 196 fcb 40 200 fcb 39 204 fcb 38 208 fcb 38 212 fcb 37 216 fcb 37 220 fcb 36 224 fcb 36 228 fcb 35 232 fcb 35 236 fcb 34 240 fcb 34 244 fcb 33 248 fcb 33 252 t3_tbl fcb 1 fcb 1 4 fcb 1 8 fcb 1 12 fcb 1 16 fcb 3 20 fcb 4 24 fcb 5 28 fcb 6 32 fcb 7 36 fcb 8 40 fcb 9 44 fcb 10 48 fcb 11 52 fcb 12 56 fcb 13 60 fcb 13 64 fcb 14 68 fcb 15 72 fcb 16 76 fcb 16 80 fcb 17 84 fcb 18 88 fcb 18 92 fcb 19 96 fcb 20 100 fcb 20 104 fcb 21 108 fcb 21 112 fcb 22 116 fcb 22 120 fcb 23 124 fcb 23 128 fcb 24 132 fcb 24 136 fcb 25 140 fcb 25 144 fcb 26 148 fcb 26 152 fcb 27 156 fcb 27 160 fcb 27 164 fcb 28 168 fcb 28 172 fcb 28 176 fcb 29 180 fcb 29 184 fcb 29 188 fcb 30 192 fcb 30 196 fcb 30 200 fcb 31 204 fcb 31 208 fcb 31 212 fcb 32 216 fcb 32 220 fcb 32 224 fcb 32 228 fcb 33 232 fcb 33 236 fcb 33 240 fcb 33 244 fcb 34 248 fcb 34 252 t2d_tbl fcb 49 fcb 49 4 fcb 49 8 fcb 49 12 fcb 49 16 fcb 47 20 fcb 46 24 fcb 45 28 fcb 44 32 fcb 43 36 fcb 42 40 fcb 41 44 fcb 40 48 fcb 39 52 fcb 38 56 fcb 37 60 fcb 37 64 fcb 36 68 fcb 35 72 fcb 34 76 fcb 34 80 fcb 33 84 fcb 32 88 fcb 32 92 fcb 31 96 fcb 30 100 fcb 30 104 fcb 29 108 fcb 29 112 fcb 28 116 fcb 28 120 fcb 27 124 fcb 27 128 fcb 26 132 fcb 26 136 fcb 25 140 fcb 25 144 fcb 24 148 fcb 24 152 fcb 23 156 fcb 23 160 fcb 23 164 fcb 22 168 fcb 22 172 fcb 22 176 fcb 21 180 fcb 21 184 fcb 21 188 fcb 20 192 fcb 20 196 fcb 20 200 fcb 19 204 fcb 19 208 fcb 19 212 fcb 18 216 fcb 18 220 fcb 18 224 fcb 18 228 fcb 17 232 fcb 17 236 fcb 17 240 fcb 17 244 fcb 16 248 fcb 16 252 t2f_tbl fcb 48 fcb 48 4 fcb 48 8 fcb 48 12 fcb 48 16 fcb 47 20 fcb 45 24 fcb 44 28 fcb 43 32 fcb 42 36 fcb 41 40 fcb 40 44 fcb 40 48 fcb 39 52 fcb 38 56 fcb 37 60 fcb 36 64 fcb 35 68 fcb 35 72 fcb 34 76 fcb 33 80 fcb 32 84 fcb 32 88 fcb 31 92 fcb 31 96 fcb 30 100 fcb 29 104 fcb 29 108 fcb 28 112 fcb 28 116 fcb 27 120 fcb 27 124 fcb 26 128 fcb 26 132 fcb 25 136 fcb 25 140 fcb 24 144 fcb 24 148 fcb 23 152 fcb 23 156 fcb 23 160 fcb 22 164 fcb 22 168 fcb 21 172 fcb 21 176 fcb 21 180 fcb 20 184 fcb 20 188 fcb 20 192 fcb 19 196 fcb 19 200 fcb 19 204 fcb 18 208 fcb 18 212 fcb 18 216 fcb 18 220 fcb 17 224 fcb 17 228 fcb 17 232 fcb 17 236 fcb 16 240 fcb 16 244 fcb 16 248 fcb 16 252 *** tables MIN/MAX de surveillance de la forme d'onde du secteur min fcb 112 0 0 fcb 112 1 1 fcb 112 2 2 fcb 112 3 3 fcb 112 4 4 fcb 112 5 5 fcb 112 6 6 fcb 112 7 7 fcb 112 8 8 fcb 112 9 fcb 112 20 10 fcb 115 22 11 fcb 121 24 12 fcb 128 26 13 fcb 134 28 14 fcb 141 30 15 fcb 147 32 16 fcb 154 34 17 fcb 161 36 18 fcb 167 38 19 fcb 174 40 20 fcb 180 42 21 fcb 187 44 22 fcb 193 46 23 fcb 200 48 24 fcb 200 50 25 fcb 210 52 26 fcb 200 54 27 fcb 196 56 28 fcb 190 58 29 fcb 183 60 30 fcb 177 62 31 fcb 170 64 32 fcb 164 66 33 fcb 157 68 34 fcb 151 70 35 fcb 144 72 36 fcb 138 74 37 fcb 131 76 38 fcb 125 78 39 fcb 118 80 40 fcb 112 82 41 fcb 105 84 42 fcb 98 86 43 fcb 92 88 44 fcb 85 90 45 fcb 79 92 46 fcb 72 94 47 fcb 66 96 48 fcb 59 98 49 fcb 53 100 50 fcb 46 102 51 fcb 40 104 52 fcb 33 106 53 fcb 30 108 54 fcb 30 110 55 fcb 30 112 56 fcb 30 114 57 fcb 30 115 58 * 2Šme 1/2 période fcb 13 0 0 fcb 13 2 1 fcb 13 4 2 fcb 13 6 3 fcb 13 8 4 fcb 13 10 5 fcb 13 12 6 fcb 13 14 7 fcb 13 16 8 fcb 13 18 9 fcb 13 20 10 fcb 13 22 11 fcb 13 24 12 fcb 13 26 13 fcb 13 28 14 fcb 13 30 15 fcb 13 32 16 fcb 13 34 17 fcb 13 36 18 fcb 13 38 19 fcb 13 40 20 fcb 13 42 21 fcb 13 44 22 fcb 13 46 23 fcb 13 48 24 fcb 13 50 25 fcb 13 52 26 fcb 13 54 27 fcb 13 56 28 fcb 13 58 29 fcb 13 60 30 fcb 13 62 31 fcb 13 64 32 fcb 13 66 33 fcb 13 68 34 fcb 13 70 35 fcb 13 72 36 fcb 13 74 37 fcb 13 76 38 fcb 13 78 39 fcb 13 80 40 fcb 13 82 41 fcb 13 84 42 fcb 13 86 43 fcb 13 88 44 fcb 13 90 45 fcb 13 92 46 fcb 13 94 47 fcb 13 96 48 fcb 13 98 49 fcb 13 100 50 fcb 13 102 51 fcb 13 104 52 fcb 13 106 53 fcb 13 108 54 fcb 13 110 55 fcb 13 112 56 fcb 13 113 57 fcb 13 115 58 max fcb 240 0 0 fcb 240 2 1 fcb 240 4 2 fcb 240 6 3 fcb 240 8 4 fcb 240 10 5 fcb 240 12 6 fcb 240 14 7 fcb 240 16 8 fcb 240 18 9 fcb 240 20 10 fcb 240 22 11 fcb 240 24 12 fcb 240 26 13 fcb 240 28 14 fcb 240 30 15 fcb 240 32 16 fcb 240 34 17 fcb 240 36 18 fcb 240 38 19 fcb 240 40 20 fcb 240 42 21 fcb 240 44 22 fcb 240 46 23 fcb 240 48 24 fcb 240 50 25 fcb 240 52 26 fcb 240 54 27 fcb 240 56 28 fcb 240 58 29 fcb 240 60 30 fcb 240 62 31 fcb 240 64 32 fcb 240 66 33 fcb 240 68 34 fcb 240 70 35 fcb 240 72 36 fcb 240 74 37 fcb 240 76 38 fcb 240 78 39 fcb 240 80 40 fcb 240 82 41 fcb 240 84 42 fcb 240 86 43 fcb 240 88 44 fcb 240 90 45 fcb 240 92 46 fcb 240 94 47 fcb 240 96 48 fcb 240 98 49 fcb 240 100 50 fcb 240 102 51 fcb 240 104 52 fcb 240 106 53 fcb 240 108 54 fcb 240 110 55 fcb 240 112 56 fcb 240 112 57 fcb 240 113 58 fcb 142 0 0 fcb 142 2 1 fcb 142 4 2 fcb 142 6 3 fcb 142 8 4 fcb 142 10 5 fcb 142 12 6 fcb 142 14 7 fcb 142 16 8 fcb 142 18 9 fcb 142 20 10 fcb 138 22 11 fcb 131 24 12 fcb 124 26 13 fcb 117 28 14 fcb 109 30 15 fcb 102 32 16 fcb 95 34 17 fcb 88 36 18 fcb 81 38 19 fcb 74 40 20 fcb 67 42 21 fcb 60 44 22 fcb 53 46 23 fcb 53 48 24 fcb 48 50 25 fcb 53 52 26 fcb 53 54 27 fcb 56 56 28 fcb 63 58 29 fcb 70 60 30 fcb 76 62 31 fcb 83 64 32 fcb 90 66 33 fcb 97 68 34 fcb 104 70 35 fcb 111 72 36 fcb 118 74 37 fcb 124 76 38 fcb 131 78 39 fcb 138 80 40 fcb 145 82 41 fcb 152 84 42 fcb 159 86 43 fcb 165 88 44 fcb 172 90 45 fcb 179 92 46 fcb 186 94 47 fcb 193 96 48 fcb 200 98 49 fcb 207 100 50 fcb 213 102 51 fcb 220 104 52 fcb 227 106 53 fcb 231 108 54 fcb 231 110 55 fcb 231 112 56 fcb 231 114 57 fcb 231 115 58 *** table des temps de commutation du relais tb_r fcb 190,170,150,130 fcb 110,90,70,50 ifne cpu-9 mes fcc "BONJOUR ERNEST" fcb 13,10,48,$23 endc *þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ *** C'est fini ! *zp2 equ * btext documentations . localisations des entr‚es analogiques B6 r“le P9 an5 entr‚e 50Hz 0 an1 lecture batterie 1 an6 lecture r‚sultat 2 an7 lecture courant 3 . modifs avant(b6) / aprŠs(p9) addata > addr adstat > adscr pc7 > pa7 pb2..0 > pc2..0 8 valeur de relais au lieu de 16 pb7 > pd7 buzzer en pd5 . modifs du 23/12/96 problŠmes de la maquette d'‚mulation en B6 assemblage conditionnel PB5 devient la sortie buzzer (avant c'‚tait PD5) PB7 devient l'entr‚e t‚l‚commande arrˆt (avant c'‚tait PB7) etext end