| | #1 (permalink) Top |
| UserPlus |
salve, dopo aver realizzato il regolatore di velocita' per motori brushed proposto nella sezione schemi elettrici, e aver visto che a basse velocita' non mi soddisfa un granche', ho deciso di riprendere lo studio del 16f84, e dal sorgente tentare di capire cosa fa' e se e' possibile migliorarlo...... premetto, non ero per niente bravo un paio di anni fa' quando studiai il pic, e non lo sono ora, quindi potrei anche sparare delle emerite min....te per semplificare ho diviso il sorgente in 5 macroblocchi : 1) inizializzazione e mainloop 2) funzione mnext 3) funzione mnow 4) onmotor 5) funzione delay per tentare di dissiparmi i dubbi ho realizzato pure lo schema a blocchi del sorgente.....e' in powerpoint... se serve lo converto in jpg (per chi e' piu' bravo di me', e' giusta la via che ho intrapreso ?????) [attachmentid=1502] e allora.... mambo.... 1) a cosa serve la variabile SHIFT, impostata ma mai utilizzata? il ritardo l' ho calcolato sulla base dei commenti del sorgente originario, ma come vedremo piu' avanti non sono d' accordo! ma le variabili, quanto possono essere grandi ??? 8 bit (dec 255) o 14bit (dec 16383) 2) movf DMCount,F btfss STATUS,Z queste 2 righe, non riuscivo a capire cosa facessero, poi girovagando su google, ho trovato una spiegazione : si sposta il contenuto della variabile DMCount su se stessa, in modo che se e' uguale a 0, viene settato il bit Z del registro STATUS. e' corretta questa interpretazione? ma il bit Z viene impostato nuovamente a 0 subito dopo essere interrogato? per ogni ciclo dicontrollo ove l' ingresso e' alto si somma 34 al valore di motnext per un totale massimo (se il valore puo' essere max 16383) di 481 step, ma siccome il tempo dell' ingresso on e' 1millisecondo di default e 1 variabile in base alla posizione dello stick, dovremmo levare un valore che non vedo levato da nessuna parte!!! :-( in tutto cio' , non ho capito a cosa si riferisce motres(0).... a indicare se il ciclo precedente era di mnow o mnext? 3) controlla lo stato di motnext, se diverso da 0 accende il motore, controlla che motnext non sia arrivato a 0, se no lo spegne, setta DMCount = 10 e MOTRES=0 4) onmotor, decrementa motnext e accende il motore. 5) delay ???? per prima cosa, imposta il timer 0 a 231 e count a 1,,,,,, ma il timer non AVANZA di un passo ogni 16 Hz? (Fosc/4)/prescaler quindi impostandolo a 231, avremo che il bit Z del registo status, andra a 1 dopo 384 Hz ((255-231)*16) circa 0,1millisecondi con quarzo da 3,8mhz ogni volta che vi e' il bit Z settato, riassegna al timer il valore 231, e decrementa count, ma count e' 1, quindi diventa subito 0, e cio ci fa' uscire immediatamente dal ciclo, ma allora che senso ha avere la variabile count? bene , per stasera e' tutto!!!!!.... non mi sparate, ma ho una gran confusione, e se non ho sbagliato niente, il sorgente non dovrebbe funzionare..... ma sicuramente ho sbagliato e non vedo dove, mi illuminate?
__________________ 73 de davidea!!! |
| | |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| regolatore con 16f84 | fedor60 | Circuiti Elettronici | 10 | 11 marzo 08 18:25 |
| regolatore con 16f84 | fedor60 | Circuiti Elettronici | 2 | 12 aprile 06 22:19 |
| Regolatore con pic 16f84 | dbkill | Circuiti Elettronici | 2 | 01 giugno 05 12:23 |
| Regolatore pic 16f84 | Angqwe | Circuiti Elettronici | 5 | 28 novembre 03 21:55 |
| Regolatore pic 16f84 | Kayser_Soze | Circuiti Elettronici | 5 | 27 novembre 03 15:12 |