Robotica.Kimchi.ASM.Interf


Il programma, scaricabile qui, e' abbastanza leggibile. Suggerisco di scaricarlo, aprirlo con il notepad e affiancarlo a questa finestra in modo da seguirne la descrizione. Nei settaggi iniziali viene dichiarato questo INCLUDE, un file in cui vengono assegnate le variabili specifiche per questo microcontrollore. Segue l'elenco delle variabili usate con il numero di byte usato. Dopo i setteggi TRISA e TRiSB, in cui vengono dichiarati pin di ingresso e uscita, si passa (linea 47) al settaggio dei pin. In effetti uso queste linee per indicare la funzione dei vari pin.
Il programma inizia con il commento ;startup a cui segue l'accensione del led ed un piccolo ritardo che serve per indicare che il programma e' partito. Il MainLoop e' un ciclo chiuso che esce (SetDir) solo nel caso in cui sia presente una tensione sul pin RB6, usato come clock. SetDir, che e' il nocciolo del programma, inizia cancellando Verif1 e 2 che saranno usati per contare e dunque verificare il numero di "1" presenti nel treno arrivato. Scorrendo il programma si vede come vengano settati i bit delle variabili e quindi anche come e' composto il treno di bit in arrivo.

p = pinza: primo bit=muovi, secondo = apri o chiudi
dir = direzione: avanti - indietro - destra - sinistra
c = CENT: se attivato quando curva si ferma se le ruote sono allineate
a = Fast Servo: se attivato i servo si muoveranno al massimo delle loro capacita'
verif = 6 bit di verifica
Dopo la verifica si passa alla trasmissione del segnale. Un "fischio" di 35ms anticipera' il treno trasmesso. Il motivo e' da ricercare nel sistema di controllo del robot:
quando il programma del robot sta' muovendo le ruote o i servo non puo' contemporaneamente controllare cosa arriva all'antenna. Il programma, dunque, controllera' l'antenna, settera' i servo, li muovera' e ricontrollera' l'antenna....
Il programma si conclude con le subroutine di timers e LoadServo.

Contattatemi pure per chiarimenti.