problema ciclo macchina troppo veloce su un listato

Aperto da scienziato, 14 Febbraio 2012, 11:41:20

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

scienziato

salve a tutti , ho fatto una centralina per pilotare dei rele , e houn problema , i 5 giochi sono troppo veloci , per evitare di riscrivere e riprogramare il pic ormai montato in 2 giorni devo risolvere il problema di rallentare il ciclo macchina , ho pensato se al posto di un quarzo da 4mhz si mette uno da 3 mhz si riesce a rallentare il gioco di luci ??

ecco il listato , " santo aiutami tu hihihi  "  :grin: abbraccino abbraccino :up: :up: :up:

PROCESSOR PIC16F84
INCLUDE "P16F84.INC"
   ORG   0
   CONT1   EQU   0CH
   CONT2   EQU   0DH
   CONT3   EQU   0EH
   CONT4   EQU   0FH
   CONT5   EQU   10H
   CONT6   EQU   11H
   MOVLW   0FFH
   TRIS   05H
   MOVLW   00H
   TRIS   06H
   MOVLW   00H
   MOVWF   06H
inizio:
clrf PORTB
btfsc PORTA, 4
goto SCHEMA1
btfsc PORTA, 3
goto SCHEMA1
btfsc PORTA, 2
goto SCHEMA1
btfsc PORTA, 1
goto SCHEMA1
btfsc PORTA, 0
goto SCHEMA1
goto inizio


SCHEMA1:   BTFSS   05H,0
      GOTO   SCHEMA2
      MOVLW   00H
      MOVWF   PORTB
      GOTO   PRO1
SCHEMA2:   BTFSS   05H,1
      GOTO   SCHEMA3
      MOVLW   00H
      MOVWF   06H
      GOTO   PRO2
SCHEMA3:   BTFSS   05H,2
      GOTO   SCHEMA4
      MOVLW   00H
      MOVWF   06H
      GOTO   PRO3
SCHEMA4:   BTFSS   05H,3
      GOTO   SCHEMA5
      MOVLW   00H
      MOVWF   06H
      GOTO   PRO4
SCHEMA5:   BTFSS   05H,4
      GOTO   SCHEMA1
      MOVLW   00H
      MOVWF   06H
      GOTO   PRO5
   
PRO1:   MOVLW   00H
   MOVWF   06H
   CALL   RIT
   MOVLW   81H
   MOVWF   06H
   CALL   RIT
   MOVLW   0C3H
   MOVWF   06H
   CALL   RIT
   MOVLW   0E7H
   MOVWF   06H
   CALL   RIT
   MOVLW   0FFH
   MOVWF   06H
   CALL   RIT
   MOVLW   0E7H
   MOVWF   06H
   CALL   RIT
   MOVLW   0C3H
   MOVWF   06H
   CALL   RIT
   MOVLW   81H
   MOVWF   06H
   CALL   RIT
   MOVLW   00H
   MOVWF   06H
   CALL   RIT
   btfss PORTA, 0    
   goto inizio
   GOTO   PRO1

PRO2:   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   80H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   80H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   80H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   80H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
btfss PORTA, 1    
   goto inizio

   GOTO   PRO2   

PRO3:   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   MOVLW   03H
   MOVWF   06H
   CALL   RIT
   MOVLW   07H
   MOVWF   06H
   CALL   RIT
   MOVLW   0FH
   MOVWF   06H
   CALL   RIT
   MOVLW   1FH
   MOVWF   06H
   CALL   RIT
   MOVLW   3FH
   MOVWF   06H
   CALL   RIT
   MOVLW   7FH
   MOVWF   06H
   CALL   RIT
   MOVLW   0FFH
   MOVWF   06H
   CALL   RIT
   MOVLW   0FEH
   MOVWF   06H
   CALL   RIT
   MOVLW   0FCH
   MOVWF   06H
   CALL   RIT
   MOVLW   0F8H
   MOVWF   06H
   CALL   RIT
   MOVLW   0F0H
   MOVWF   06H
   CALL   RIT
   MOVLW   0E0H
   MOVWF   06H
   CALL   RIT
   MOVLW   0C0H
   MOVWF   06H
   CALL   RIT
   MOVLW   80H
   MOVWF   06H
   CALL   RIT
   MOVLW   0C0H
   MOVWF   06H
   CALL   RIT
   MOVLW   0E0H
   MOVWF   06H
   CALL   RIT
   MOVLW   0F0H
   MOVWF   06H
   CALL   RIT
   MOVLW   0F8H
   MOVWF   06H
   CALL   RIT
   MOVLW   0FCH
   MOVWF   06H
   CALL   RIT
   MOVLW   0FEH
   MOVWF   06H
   CALL   RIT
   MOVLW   0FFH
   MOVWF   06H
   CALL   RIT
   MOVLW   7FH
   MOVWF   06H
   CALL   RIT
   MOVLW   3FH
   MOVWF   06H
   CALL   RIT
   MOVLW   1FH
   MOVWF   06H
   CALL   RIT
   MOVLW   0FH
   MOVWF   06H
   CALL   RIT2
   MOVLW   07H
   MOVWF   06H
   CALL   RIT2
   MOVLW   03H
   MOVWF   06H
   CALL   RIT2
   MOVLW   01H
   MOVWF   06H
   CALL   RIT2
   
btfss PORTA, 2    
   goto inizio

GOTO   PRO3

PRO4:   MOVLW   00H
   MOVWF   06H
   CALL   RIT
   CALL   RIT
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   CALL   RIT   
   CALL   RIT
   MOVLW   00H
   MOVWF   06H
   CALL   RIT
   CALL   RIT
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   CALL   RIT   
   CALL   RIT
   MOVLW   00H
   MOVWF   06H
   CALL   RIT
   CALL   RIT
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   CALL   RIT   
   CALL   RIT
   MOVLW   00H
   MOVWF   06H
   CALL   RIT
   CALL   RIT
   CALL   RIT
   
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   80H
   MOVWF   06H
   CALL   RIT
   MOVLW   40H
   MOVWF   06H
   CALL   RIT
   MOVLW   20H
   MOVWF   06H
   CALL   RIT
   MOVLW   10H
   MOVWF   06H
   CALL   RIT
   MOVLW   08H
   MOVWF   06H
   CALL   RIT
   MOVLW   04H
   MOVWF   06H
   CALL   RIT
   MOVLW   02H
   MOVWF   06H
   CALL   RIT
   MOVLW   01H
   MOVWF   06H
   CALL   RIT
   


btfss PORTA, 3    
   goto inizio
GOTO   PRO4


PRO5:   MOVLW   00H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3
   MOVLW   18H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3
   MOVLW   00H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3   
   MOVLW   18H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3
   MOVLW   00H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3   
   MOVLW   18H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3
   MOVLW   00H
   MOVWF   06H
   CALL   RIT3
   CALL   RIT3
   MOVLW   24H
   MOVWF   06H
   CALL   RIT3
   MOVLW   42H
   MOVWF   06H
   CALL   RIT3
   MOVLW   81H
   MOVWF   06H
   CALL   RIT3
   MOVLW   42H
   MOVWF   06H
   CALL   RIT3
   MOVLW   24H
   MOVWF   06H
   CALL   RIT3
   MOVLW   00H
   MOVWF   06H
   CALL   RIT3
   
btfss PORTA, 4    
   goto inizio
GOTO   PRO5




RIT:   MOVLW   78H
   MOVWF   CONT1
LOOP2:   MOVLW   93H
   MOVWF   CONT2
LOOP1:   DECFSZ   CONT2
   GOTO   LOOP1
   DECFSZ   CONT1
   GOTO   LOOP2
   RETURN

RIT2:   MOVLW   94H
   MOVWF   CONT3
LOOP4:   MOVLW   93H
   MOVWF   CONT4
LOOP3:   DECFSZ   CONT4
   GOTO   LOOP3
   DECFSZ   CONT3
   GOTO   LOOP4
   RETURN

RIT3:   MOVLW   79H
   MOVWF   CONT5
LOOP6:   MOVLW   70H
   MOVWF   CONT6
LOOP5:   DECFSZ   CONT6
   GOTO   LOOP5
   DECFSZ   CONT5
   GOTO   LOOP6
   RETURN   
   END
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT


Ricciolino

cb "Ricciolino" Op. Davide | 1RGK420 | IU0NHF

Lino

Perchè invece di utilizzare il quarzo non usi un oscillatore R-C?
Di quanto vorresti rallentare le routine?
Se usi il quarzo da 3 MHz invece di quello da 4 ottieni solo un incremente di 1/4 di tempo, ti è sufficiente?
Con la rete R-C puo oscillare fino a 200 KHz; con i risonatori ceramici, quelli a tre piedini, puoi spaziare fino a 4 MHz, tutto dipende dalle tue esigenze.
Comunque sul datasheet trovi tutte le informazioni precise, anche sui valori dei condensatori da utilizzare.

Saluti, Lino

scienziato

Citazione di: Lino il 14 Febbraio 2012, 13:21:14
Perchè invece di utilizzare il quarzo non usi un oscillatore R-C?
Di quanto vorresti rallentare le routine?
Se usi il quarzo da 3 MHz invece di quello da 4 ottieni solo un incremente di 1/4 di tempo, ti è sufficiente?
Con la rete R-C puo oscillare fino a 200 KHz; con i risonatori ceramici, quelli a tre piedini, puoi spaziare fino a 4 MHz, tutto dipende dalle tue esigenze.
Comunque sul datasheet trovi tutte le informazioni precise, anche sui valori dei condensatori da utilizzare.

Saluti, Lino
la scia e troppo veloce tantevvero che i rele scattano velocissimi e non si capisce con le lampade a incandescenza , bastarebbe un poco rallentare il ciclo e di conseguenza tutti i giochi memorizzati per capire meglio posto un video , la centralita pilota un carro di carnevale io sono messo all'interno della cabine dove i trasformatori portano le fasi ai contatti dei rele , su ogni contatto dei rele ci sono un massimo di 60 lampade quindi le prime file di tutti i pupazzi , leseconde ,leterze ecc ecc,
ecco un video spero che si capisca !


Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT


Lino

Se non sbaglio, tutta la tempistica fà riferimento alle 3 routine (RIT, RIT2, e RIT3); raddoppia i valori delle costanti alla prima riga di ogni routine (di più non puoi fare) e verifica come cambiano gli effetti.
C'è ancora margine per rallentare le singole routine ma dipende dal risultato che si vuole ottenere.

Saluti, Lino

scienziato

Citazione di: Lino il 14 Febbraio 2012, 14:09:09
Se non sbaglio, tutta la tempistica fà riferimento alle 3 routine (RIT, RIT2, e RIT3); raddoppia i valori delle costanti alla prima riga di ogni routine (di più non puoi fare) e verifica come cambiano gli effetti.
C'è ancora margine per rallentare le singole routine ma dipende dal risultato che si vuole ottenere.

Saluti, Lino
in ogniuno di questi blocchi quale valore raddoppio ???


RIT:   MOVLW   78H
   MOVWF   CONT1
LOOP2:   MOVLW   93H
   MOVWF   CONT2
LOOP1:   DECFSZ   CONT2
   GOTO   LOOP1
   DECFSZ   CONT1
   GOTO   LOOP2
   RETURN
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT


Lino

Quello della prima riga

RIT:   MOVLW   78H
   MOVWF   CONT1
LOOP2:   MOVLW   93H
   MOVWF   CONT2
LOOP1:   DECFSZ   CONT2
   GOTO   LOOP1
   DECFSZ   CONT1
   GOTO   LOOP2
   RETURN


scienziato

Citazione di: Lino il 14 Febbraio 2012, 19:21:07
Quello della prima riga

RIT:   MOVLW   78H
   MOVWF   CONT1
LOOP2:   MOVLW   93H
   MOVWF   CONT2
LOOP1:   DECFSZ   CONT2
   GOTO   LOOP1
   DECFSZ   CONT1
   GOTO   LOOP2
   RETURN

grazie lino provo subito anche perche mi resta poco tempo vediamo se riesco ! e speriamo che nella compilazione non mi dia nessun problema !!
vi faccio sapere :up: :up:
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT

scienziato

Citazione di: scienziato il 14 Febbraio 2012, 19:23:16
Citazione di: Lino il 14 Febbraio 2012, 19:21:07
Quello della prima riga

RIT:   MOVLW   78H
   MOVWF   CONT1
LOOP2:   MOVLW   93H
   MOVWF   CONT2
LOOP1:   DECFSZ   CONT2
   GOTO   LOOP1
   DECFSZ   CONT1
   GOTO   LOOP2
   RETURN

grazie lino provo subito anche perche mi resta poco tempo vediamo se riesco ! e speriamo che nella compilazione non mi dia nessun problema !!
vi faccio sapere :up: :up:
ho cambiato i valori segnati da te lino ma nulla non cambia nulla tutti i giochi sono sempre veloci , ho notato pero che se tocco il quarzo con il dito e lo sfioro senza premerlo troppo il gioco rallenta !!!
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT


scienziato

Citazione di: scienziato il 14 Febbraio 2012, 20:05:02
Citazione di: scienziato il 14 Febbraio 2012, 19:23:16
Citazione di: Lino il 14 Febbraio 2012, 19:21:07
Quello della prima riga

RIT:   MOVLW   78H
   MOVWF   CONT1
LOOP2:   MOVLW   93H
   MOVWF   CONT2
LOOP1:   DECFSZ   CONT2
   GOTO   LOOP1
   DECFSZ   CONT1
   GOTO   LOOP2
   RETURN

grazie lino provo subito anche perche mi resta poco tempo vediamo se riesco ! e speriamo che nella compilazione non mi dia nessun problema !!
vi faccio sapere :up: :up:
ho cambiato i valori segnati da te lino ma nulla non cambia nulla tutti i giochi sono sempre veloci , ho notato pero che se tocco il quarzo con il dito e lo sfioro senza premerlo troppo il gioco rallenta !!!
ho provato a metterci 30h e come non detto adesso sono velocissimi , quindi non bastava raddoppiarli , provo a metterci un 300 vediamo che succede!!
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT

Lino

Scusa, ma 78H equivale a 120 decimale; il doppio è 240 che equivale a F0H.

Mi sfugge qualcosa?


Saluti, Lino 

scienziato

Citazione di: Lino il 14 Febbraio 2012, 21:47:20
Scusa, ma 78H equivale a 120 decimale; il doppio è 240 che equivale a F0H.

Mi sfugge qualcosa?


Saluti, Lino 
no no hai perfettamente ragione lino non avevo scritto giusto il valore in esadecimale adesso funziona :)  :up: :up: :up: :up:
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT

Santo iw9hlk

volendo potevi fare una routine dove tramite un pulsante ti incrementava un registro che veniva caricato come numero per il ritardo...
io ti avevo detto che se mi facevi sapere la sequenza delle uscite ti potevo aiutare a compilare il prog.
ma da come vedo già tutto risolto  :up:   :birra:
Nulla è per caso


scienziato

Citazione di: Santo il 15 Febbraio 2012, 06:43:45
volendo potevi fare una routine dove tramite un pulsante ti incrementava un registro che veniva caricato come numero per il ritardo...
io ti avevo detto che se mi facevi sapere la sequenza delle uscite ti potevo aiutare a compilare il prog.
ma da come vedo già tutto risolto  :up:   :birra:
vorrei invece sapere adesso santo guardando uno dei programmi che fa l'effetto luce , " in tutto sono 5 "
le uscite del pic e i corrispondenti valori che lui mette, in modo che posso poi fare altre combinazioni per fare altri giochi , cosi magari esempio 06h oc3h ecc a che pin di uscita corrispondono ?? :up: :up:
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT

berners27

Non conosco in dettaglio il linguaggio che stai usando, però ti suggerisco di vedere se è prevista un'istruzione di waiting, come per il C o il linguaggio dei microcontrollori ST6.

A quanto ho capito il tuo non è un problema hardware ma software e quindi bisognerebbe trovare via software la soluzione.
Tra l'altro la teoria degli algoritmi ci insegna che un computer lo rendi più veloce non mettendoci un processore a decine di GHZ, ma scrivendo algoritmi efficienti (ecco perché Linux computa più velocemente di Windows il risultato per lo stesso problema di calcolo). Ribaltando il criterio allora dovresti scrivere un algoritmo più lento e non mettere un clock più basso.

Questo almeno è il criterio che seguirei per quel poco che ne so di microcontrollori.

scienziato

Citazione di: berners27 il 15 Febbraio 2012, 13:08:48
Non conosco in dettaglio il linguaggio che stai usando, però ti suggerisco di vedere se è prevista un'istruzione di waiting, come per il C o il linguaggio dei microcontrollori ST6.

A quanto ho capito il tuo non è un problema hardware ma software e quindi bisognerebbe trovare via software la soluzione.
Tra l'altro la teoria degli algoritmi ci insegna che un computer lo rendi più veloce non mettendoci un processore a decine di GHZ, ma scrivendo algoritmi efficienti (ecco perché Linux computa più velocemente di Windows il risultato per lo stesso problema di calcolo). Ribaltando il criterio allora dovresti scrivere un algoritmo più lento e non mettere un clock più basso.

Questo almeno è il criterio che seguirei per quel poco che ne so di microcontrollori.
ho gia risolto il problema velocità cambiando il valore sulla runtine rit aumentandolo !! adesso va bene  :up: :up:
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT

Lino

Citazione di: berners27 il 15 Febbraio 2012, 13:08:48
Non conosco in dettaglio il linguaggio che stai usando, però ti suggerisco di vedere se è prevista un'istruzione di waiting, come per il C o il linguaggio dei microcontrollori ST6.

A quanto ho capito il tuo non è un problema hardware ma software e quindi bisognerebbe trovare via software la soluzione.
Tra l'altro la teoria degli algoritmi ci insegna che un computer lo rendi più veloce non mettendoci un processore a decine di GHZ, ma scrivendo algoritmi efficienti (ecco perché Linux computa più velocemente di Windows il risultato per lo stesso problema di calcolo). Ribaltando il criterio allora dovresti scrivere un algoritmo più lento e non mettere un clock più basso.

Questo almeno è il criterio che seguirei per quel poco che ne so di microcontrollori.


Buona giornata.

Mi permetto di inserirmi perchè la tua analisi mi sembra interessante. Però considera che quello utilizzato è un microcontrollore della famiglia base di Microchip di tipo RISC; è stato utilizzato l'assembler che mette a disposizione ben 35 (!) istruzioni elementari e di sicuro non sono disponibili istruzioni di attesa condizionata tranne quella asservita ad un timer interno ad 8 bit. Di conseguenza il più delle volte, se non hai necessità di timing di precisione, sei costretto a fare dei cicli di delay strutturati in base alle necessità. Anche in questo caso bisogna fare attenzione alla nidificazione dei cicli perchè questa famiglia di microcontrollori è dotata di uno stack di solo otto livelli di tipo FIFO ed è sufficiente scambiare un GOTO con un CALL per non raccapezzarsi più.
Nella mia minima esperienza, se non ci sono esigenze particolari e se il ciclo più lungo si compie al massimo nell'arco dei 40-50 millisecondi, preferisco adottare il clock a bassa velocità che ti garantisce un risparmio sia sulle righe del listato che sui componenti.
Scusa se l'ho fatta lunga, saluti, Lino. 

berners27

Citazione di: Lino il 15 Febbraio 2012, 13:31:57
[..]
Scusa se l'ho fatta lunga, saluti, Lino. 


Nono figurati  :-D
Piacerebbe anche a me avere un framework hardware di sviluppo per qualche tipo di micro-controller, ma tra st-6, arduino e altre centinaia di alternative, mi manca una visione di insieme per poter decidere cosa adottare e in base cosa si fanno le scelte.
A me piacerebbe imparare ad usare e programmare le stesse soluzioni che vengono realmente-praticamente-operativamente adottate a livello professionale nell'automazione industriale, che tra le centinaia in commercio forse saranno 3-4 al massimo.
Detto questo, mi pare di aver capito che nella tua risposta hai istanziato al caso particolare del mic in oggetto il criterio generale che ho esposto.

Alinghi

Citazione di: scienziato il 15 Febbraio 2012, 12:21:57
Citazione di: Santo il 15 Febbraio 2012, 06:43:45
volendo potevi fare una routine dove tramite un pulsante ti incrementava un registro che veniva caricato come numero per il ritardo...
io ti avevo detto che se mi facevi sapere la sequenza delle uscite ti potevo aiutare a compilare il prog.
ma da come vedo già tutto risolto  :up:   :birra:
vorrei invece sapere adesso santo guardando uno dei programmi che fa l'effetto luce , " in tutto sono 5 "
le uscite del pic e i corrispondenti valori che lui mette, in modo che posso poi fare altre combinazioni per fare altri giochi , cosi magari esempio 06h oc3h ecc a che pin di uscita corrispondono ?? :up: :up:

Non conosco quel codice scrittto in assembly, conosco un pochino meglio il basic, che a mio avviso è più semplice.
Comunque da quello che ho capito quà ci sono 8 uscite, che vengono accese/spente in sequenza.

Una volta capito il meccanismo, la cosa diventa abbastanza semplice.
In pratica le 8 uscite  corrispondono ad un byte, ovvero un numero binario a 8 bit.

Cioè se invio il numero binario 00000000 avrò tutte le uscite spente, se invio il numero binario 00000001 avrò la prima uscita aacesa e le rimanati 7 spente, se invio il numero binario 10000001 avrò la prima e l'ultima uscita accese e le restanti spente.

In questo il caso il numero però viene scritto in esadecimale, quindi basta convertire il byte da invaiare in un  umero esadecimale.

Esempio prendiamo il programma 1:

PRO1:   MOVLW   00H    carica il valore esadecimale 00 che corrsiponde al valore binario 00000000 nel registro
   MOVWF   06H            invia questo valore nel registro 06H che corrisponde alla portaB quindi gli 8 pin rb0....rb7  assumono il valore 00000000   tutti spenti.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   81H            carica il valore esadecimale 81 che corrsiponde al valore binario 10000001 nel registro
   MOVWF   06H            come prima invia il questo valore a portaB , quindi gli 8 pin assumono il valore 10000001, prima e ultima uscita accese il resto spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   0C3H          carica il valore esadecimale 0C3 che corrsiponde al valore binario 11000011 nel registro
   MOVWF   06H            invia questo valore alla portaB, quindi ora le uscite diventano 11000011, prime 2 e ultime 2 uscite accese. il resto spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   0E7H          carica il valore esadecimale 0E7 che corrsiponde al valore binario 11100111 nel registro
   MOVWF   06H            invia questo valore alla  portaB, quindi ora le uscite diventano 11100111  le prime 3 uscite e le ultime 3 uscite sono accese, le 2 centrali spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   0FFH          carica il valore esadecimale 0FF che corrsiponde al valore binario 11111111 nel registro
   MOVWF   06H            invia questo valore alla  portaB, quindi ora le uscite diventano 11111111  tutte le uscite sono accese
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   0E7H          carica il valore esadecimale 0E7 che corrsiponde al valore binario 11100111 nel registro
   MOVWF   06H            invia questo valore alla  portaB, quindi ora le uscite diventano 11100111  le prime 3 uscite e le ultime 3 uscite sono accese, le 2 centrali spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   0C3H          carica il valore esadecimale 0C3 che corrsiponde al valore binario 11000011 nel registro
   MOVWF   06H            invia questo valore alla portaB, quindi ora le uscite diventano 11000011, prime 2 e ultime 2 uscite accese. il resto spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   81H            carica il valore esadecimale 81 che corrsiponde al valore binario 10000001 nel registro
   MOVWF   06H            invia questo valore alla portaB, quindi ora le uscite diventano 10000001, prima e ultima uscita accese il resto spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   MOVLW   00H            carica il valore esadecimale 00 che corrsiponde al valore binario 00000000 nel registro
   MOVWF   06H            invia questo valore alla portaB, quindi ora le uscite diventano 0000000, uscite tutte spente.
   CALL   RIT                chiama la routine RIT  la quale fà attendere al pic un certo tempo
   btfss PORTA, 0          controlla l'ingresso porta A0, se è a 0 esegue l'istruzione successiva, viceversa la salta e passa a quella dopo
   goto inizio                 istruzione che viene eseguita solo se l'ingresso A0=0, e in pratica rimanda all'inzio del firmware
   GOTO   PRO1             rimanda all'inzio del programma1, quindi ripete tutto il programma 1


trucco:
per semplificare le cose invece di scrivere il valore in esadecimale H, si può scrivere direttamente in binario b  quindi ad esempio al posto dell'istrzuioni:

MOVLW   0C3H
MOVWF   06H

posso scrivere 

    MOVLW  11000011b
    MOVWF   06H

in questo modo mentre scrivo, visualizzo immediatamente i pin di uscita, senza dover mettermi a fare conversioni da esadecimale a binario.
 






Lino

Citazione di: berners27 il 15 Febbraio 2012, 14:49:06
Citazione di: Lino il 15 Febbraio 2012, 13:31:57
[..]


Detto questo, mi pare di aver capito che nella tua risposta hai istanziato al caso particolare del mic in oggetto il criterio generale che ho esposto.


Si, corretto.
Il numero ristretto di istruzioni complica molto la vita, bisogna adeguarsi.

Per l'automazione industriale, che io sappia, vengono massicciamemte utilizzati i PLC, ma non so se parliamo della stesa cosa.

Saluti, Lino

scienziato

Citazione di: Lino il 15 Febbraio 2012, 18:42:42
Citazione di: berners27 il 15 Febbraio 2012, 14:49:06
Citazione di: Lino il 15 Febbraio 2012, 13:31:57
[..]


Detto questo, mi pare di aver capito che nella tua risposta hai istanziato al caso particolare del mic in oggetto il criterio generale che ho esposto.


Si, corretto.
Il numero ristretto di istruzioni complica molto la vita, bisogna adeguarsi.

Per l'automazione industriale, che io sappia, vengono massicciamemte utilizzati i PLC, ma non so se parliamo della stesa cosa.

Saluti, Lino

GRAZIE ALINGHI !! VERAMENTE GRAZIE HO CAPITO PERFETTAMENTE POSSO CREARE TUTTE LE COMBINAZIONI CHE VOGLIO E POI RICHIAMARLE DI CONSEGUENZA CONTROLLANDO IL SET DI PORTE IN INGRESSO !! :dance: :dance: :dance: :dance:

per lino ! i plc li usa un ragazzo in un altra comitiva che fanno carri allegorici per azionare i movimenti con i motoriduttori !! quel ragazzo e ungenio , io per il momento mi diverto a creare le centraline con gli effetti luce !!
grazie ragazzi  :up: :up: :grin: :grin: :grin:
Yaesu ft 1000MP YAGI 7 ELEMENTI 10-15-10 FULL SIZE , 3 el 50 mhz home made, yaesu ft817, yaesu ft100d Kenwood ts140
dipoli 40-80 full size amplificatore fl2100b
YAGI 9 +9  ELEMENTI VHF- 9+19 V-UHF PER SAT

Lino

Citazione di: Alinghi il 15 Febbraio 2012, 16:09:11


trucco:
per semplificare le cose invece di scrivere il valore in esadecimale H, si può scrivere direttamente in binario b  quindi ad esempio al posto dell'istrzuioni:


Preferisco anch'io questa soluzione; la situazione degli I/O è diretta e si evita, per quanto possibile, di fare confusione.
Onestamente la notazione esadecimale la evito proprio perchè non ne ho alcuna dimestichezza e utilizzo, a seconda dei casi, il sistema decimale o quello binario.

Saluti, Lino


Santo iw9hlk

I PLC hanno già la parte hardware pronta, devi solo programmare e montare i moduli che servono, ho dato una sbirciata a "questo mondo" e la cosa è interessante, ma ci vuole una spesa iniziale per l'acquisto del modulo PLC di circa 130 Euro più i vari moduli... é da provare, appena mi ritrovo qualche euro in più!!
Nulla è per caso

Santo iw9hlk

Stavo pensando che per velocizzare il tutto per scienziato può utilizzare una routine con il comando RLF cioè fa lo shift a sinistra del registro o RRF fa lo shift a destra del registroF, e poi questo registro viene messo sulle porte d'uscita.
esempio:

      clrf        outluci             ; cancella il registro outluci
      movlw   b'00000001'    ;carica 1 (in binario) nel registro W
      movwf   outluci               ;copia W (1) in outluci

routine
     ;inserire il controllo per uscire da questa routine tramite pulsante.
     movf      outluci,0        ; copia il contenuto di  outluci  (1) in W
     movwf   PORTB            ; copia   W nelle uscite B
     call        delay             ;ritardo che serve per far accendere le luci +o- veloci
     RLF       outluci,1          ; sposta a sinistra il valore contenuto in outluci cioè da 00000001 diventa 00000010 dopo al successivo 00000100 e così via.
     goto      routine           vai a routine

penso che possa funzionare  può anche caricare il numero  00001001 e poi fa RLF
ci sono tanti modi, non è una cosa complicata far uscire 0o1 dalle porte del pic.



Nulla è per caso