Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 08 marzo 12, 09:50   #1 (permalink)  Top
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
dove sbaglio?

salve a tutti,

volevo realizzare un sontrollo servo oscillante con una velocità maggiore, la realizzazione è piuttosto semplice, c'è pure esplicitamente suggerita negli appunti del tanzilli:

PIC appunti di utilizzo

... solo che piuttosto che incrementare di un unità alla volta volevo muovermi a passi di 10 sia in senso crescente che decrescente:

in sostanza le istruzioni di INCF e DECF le ho sostituite con...

MOVF AL,W
ADDLW 10

e

MOVLW 10
SUBLW AL

Il problema è che il servo fa un avanti e un indietro e poi si blocca, come se la seconda GOTO MAINLOOP non venisse mai eseguita.

;-----------------------------------------------------
; SERVO.ASM - Dimostrativo pilotaggio servocomando
;-----------------------------------------------------
PROCESSOR 16F84A
RADIX DEC
INCLUDE "P16F84A.INC"
__CONFIG 11110100010001B


AL EQU 32 ;angolo
DL EQU 33 ;direzione
CL EQU 34 ;contatore ritardo

ORG 0
BSF STATUS,RP0 ;Attiva banco 1
CLRF TRISA ;Rende PORTA un'uscita
CLRF TRISB ;Rende PORTA un'uscita
BCF OPTION_REG,PSA ;prescaler a tmr0
BCF OPTION_REG,T0CS ;clock interno
BCF OPTION_REG,1 ;Prescaler /64
BCF STATUS,RP0 ;Ritorna al banco 0
MOVLW 120 ;angolo iniziale 1,5mS
MOVWF AL
CLRF DL

MAINLOOP
BTFSS INTCON,T0IF
GOTO $-1 ;attende overflow timer
CALL SERVO ;emette singolo impulso


BTFSC DL,0 ;controlla se direz=0
GOTO MAIN2

MOVF AL,W
ADDLW 10

MOVWF AL
XORLW 220 ;controlla se =220
BTFSC STATUS,Z
BSF DL,0 ;se si cambia direzione

MOVLW 0
movwf TMR0
BCF INTCON,T0IF ;resetta bit overflow

GOTO MAINLOOP ;e torna a mainloop
MAIN2
MOVLW 10
SUBLW AL

MOVWF AL
XORLW 20 ;controlla se =20
BTFSC STATUS,Z
BCF DL,0 ;se si cambia direzione

MOVLW 0
movwf TMR0

BCF INTCON,T0IF ;resetta bit overflow

GOTO MAINLOOP ;e torna a mainloop

;-----------------------------------------------------
; Genera impulso di comando per un servocomando
; standard (per clock 4MHz e PIC 12F/16F).
; Input: AL da 0 a 255 ( uS = 900 + 5*AL )
; Usa: AL,CL ( AL = (uS-900)/5 )
; Output: pin RA0 (Impulso da 900 a 2175 uS)
;-----------------------------------------------------

SERVO BSF PORTB,1
MOVLW 178
MOVWF CL
GOTO $+1
GOTO $+1
DECFSZ CL,F
GOTO $-2
NOP
MOVF AL,W
MOVWF CL
BTFSC STATUS,Z
GOTO $+5
GOTO $+1
GOTO $+1
DECFSZ CL,F
GOTO $-2
BCF PORTB,1
RETURN

END
faustog_2 non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
aiuto..non capisco dove sbaglio tommy88 Aeromodellismo Volo Elettrico 34 25 febbraio 10 07:02
Help!! Cono..dove sbaglio? zumbit Elimodellismo Acrobazia 5 02 marzo 09 12:55
Dove sbaglio? Odi CNC e Stampanti 3D 6 04 settembre 05 00:08
Dove sbaglio maxkh Elimodellismo Principianti 0 12 gennaio 05 12:47



Tutti gli orari sono GMT +2. Adesso sono le 00:39.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002