pregunta muy basica, expreicon decimal(0x00)

buenos dias gente, les queria hacer una pregunta muy basica pero que no termino de entender, busque y lei mucho pero no lo logre entender.
mi pregunta es si una exprecion como por ejemplo 0x00 en el trisport B de un microcontrolador, pone a 0 todos los pin de el puerto B esto hablando en lenguaje humano.
que pasa cuando es por ejemplo: 0x02, 0x04, 0x03, 0x24 etc.

aprovecho tambien para preguntarles sobre esta parte de de el programa de una camara ip con movimiento, en donde estan las ordenes para mover los motores que hacen los movimientos pant/tilt aca les dejo la parte de el programa,
lo que yo necesito es interpretar esas señales con otro micro y mover otros motores segun la orden que sea, pero no logro entender los 0x03 y esas cosas, espero que me puedan ayudar
Código:
function up_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	up.src = up_down.src;
	if (ipcam[current].CameraFlip & 0x01)
		ipcam[current].DecoderControl(TILT_DOWN);
	else	
		ipcam[current].DecoderControl(TILT_UP);
}

function up_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	up.src = up_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function down_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;

	down.src = down_down.src;
	if (ipcam[current].CameraFlip & 0x01)
		ipcam[current].DecoderControl(TILT_UP);
	else	
		ipcam[current].DecoderControl(TILT_DOWN);
}

function down_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;

	down.src = down_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function left_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	left.src = left_down.src;
	if (ipcam[current].CameraFlip & 0x02)
		ipcam[current].DecoderControl(PAN_RIGHT);
	else	
		ipcam[current].DecoderControl(PAN_LEFT);
}

function left_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	left.src = left_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function right_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;

	right.src = right_down.src;
	if (ipcam[current].CameraFlip & 0x02)
		ipcam[current].DecoderControl(PAN_LEFT);
	else	
		ipcam[current].DecoderControl(PAN_RIGHT);
}

function right_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	right.src = right_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function leftup_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	leftup.src = leftup_down.src;
	if ((ipcam[current].CameraFlip & 0x03) == 0x03)
		ipcam[current].DecoderControl(PTZ_RIGHT_DOWN);
	else if (ipcam[current].CameraFlip & 0x02)
		ipcam[current].DecoderControl(PTZ_RIGHT_UP);
	else if (ipcam[current].CameraFlip & 0x01)
		ipcam[current].DecoderControl(PTZ_LEFT_DOWN);
	else		
		ipcam[current].DecoderControl(PTZ_LEFT_UP);
}


function leftup_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	leftup.src = leftup_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function rightup_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	rightup.src = rightup_down.src;
	if ((ipcam[current].CameraFlip & 0x03) == 0x03)
		ipcam[current].DecoderControl(PTZ_LEFT_DOWN);
	else if (ipcam[current].CameraFlip & 0x02)
		ipcam[current].DecoderControl(PTZ_LEFT_UP);
	else if (ipcam[current].CameraFlip & 0x01)
		ipcam[current].DecoderControl(PTZ_RIGHT_DOWN);
	else		
		ipcam[current].DecoderControl(PTZ_RIGHT_UP);
}


function rightup_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	rightup.src = rightup_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function leftdown_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	leftdown.src = leftdown_down.src;
	if ((ipcam[current].CameraFlip & 0x03) == 0x03)
		ipcam[current].DecoderControl(PTZ_RIGHT_UP);
	else if (ipcam[current].CameraFlip & 0x02)
		ipcam[current].DecoderControl(PTZ_RIGHT_DOWN);
	else if (ipcam[current].CameraFlip & 0x01)
		ipcam[current].DecoderControl(PTZ_LEFT_UP);
	else		
		ipcam[current].DecoderControl(PTZ_LEFT_DOWN);
}


function leftdown_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	leftdown.src = leftdown_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

function rightdown_onmousedown() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	rightdown.src = rightdown_down.src;
	if ((ipcam[current].CameraFlip & 0x03) == 0x03)
		ipcam[current].DecoderControl(PTZ_LEFT_UP);
	else if (ipcam[current].CameraFlip & 0x02)
		ipcam[current].DecoderControl(PTZ_LEFT_DOWN);
	else if (ipcam[current].CameraFlip & 0x01)
		ipcam[current].DecoderControl(PTZ_RIGHT_UP);
	else		
		ipcam[current].DecoderControl(PTZ_RIGHT_DOWN);
}


function rightdown_onmouseup() 
{
	if (ipcam[current].MonitorStatus != 2)
		return;
	
	rightdown.src = rightdown_up.src;
	ipcam[current].DecoderControl(PTZ_STOP);
}

muchas gracias!:D

EDITO: para los que no saben pant/tilt, significa pant:movimiento horizontal tilt: movimiento vertical (o al reves no me acuerdo bien)
 
Última edición:
En los registros Tris recuerda que cero(0) pone el bit en cuestion como salida y uno(1) lo pone como entrada asi que un valor como 0x03 pone los bits 0y1 como entradas y el resto como salidas.
Ahora sobre tu programa no lo lei completo (que flojera la verdad) pero al parecer los valores 0x02 y 0x03 son mascaras para hacer algun tipo de comparacion y de ahi tomar alguna decision.
 
hi again germann, es bueno saber que sigues trabajando en tu proyecto.
que valor tienen las constantes TILT_DOWN, TILT_UP, PTZ_STOP, etc?
al parecer estos valores son los que se utilizan para controlar los movimientos
de la camara.

Los 0x03 a los que haces referencia paracen un combinacion de dos banderas.

(CameraFlip & 0x01) debe ser una bandera que invierte el eje "y" arriba y abajo
(CameraFlip & 0x02) debe ser una bandera que invierte el eje "x" izquierda y derecha

(ipcam[current].CameraFlip & 0x03) pregunta si tiene que invertir los dos ejes x,y
(ipcam[current].CameraFlip & 0x02) pregunta si tiene que invertir el eje x
(ipcam[current].CameraFlip & 0x01) pregunta si tiene que invertir el eje y

Si esto se esta transmitiendo por TCP/IP en mi opinion,
lo normal es que un protocolo sea independiente del dispositivo,
por lo que considero poco probable que el valor de las constantes
reflejen las señales de control de la camara.
:)
 
gracias por sus respuestas!!
unick, yess! hi again jaja, sigo con el proyecto, me esta tomando bastante tiempo ya que cuando tube acceso al blokytrnonick note que los servos estaban dañados, intente repararlos, pero no hubo caso, tube que hacer otra plataforma movil desde 0, sumado a que el micro de el bloky tiene tantos programas predefinidos que hacen que la memoria en donde se programa manualmente sea muy chica y de pocas posibilidades, eso hace que tenga que programarlo en otro lenguaje, lo que me llevo a aprender basic pro, voy bastante bien, ya logre hacer mis propios programas, mañana me llega el programador que compre (un pickit2 clone) lo que me bajo el presupuesto para la camara ip :( pero bueno, era necesario, gracias a este proyecto y a ustedes estoy aprendiendo muchisimo, bueno, no los quiero aburrir mas con mis sucesos.

unickfrien: si definitivamente estas acertada, con respecto a si esas ordenes son o no las que llegan a los motores, no me interensa ya que las ordenes que necesito son las que llegan al driver de los motores no la de los motores al fin, (para poder tener los motores de la camara y los de la bace independientes mediante el enable de el driver) espero que me ayas entendido,
ahora mi pregunta concreta,
por que da esas dos posibilidades:
up.src = up_down.src;
if (ipcam[current].CameraFlip & 0x01)
ipcam[current].DecoderControl(TILT_DOWN);
else
ipcam[current].DecoderControl(TILT_UP);

de tilt_down y tilt up
seria abajo y arriba, no logro entender en donde esta la orden concreta de el movimiento, abajo, arriba , derecha, isquierda,
solo se el eje.

espero no haberte cansado con tantas preguntas, ya se que hasta que no tenga la camara no puedo saber concretamente todo, y muchas preguntas serian injustificadas, pero trato de adelantar lo que mas puedo hasta que me de el presupuesto :? y pueda comprar la camara

edito: el pickit clone2 tiene analizador logico, que me ayudaria a la hora de analizar las señales,

MUCHAS GRACIAS!!
 
Hi Germman,
Bueno yo tengo aqui una camara de domo,
como la camara da vueltas 180 grados, los ejes se invierten cuando
da la va de 0 a 180 grados. No se si se el caso de tu camara?
:)

Por cierto ese programa es del html de la camara?
lo que alcanzo a enteder con el codigo es lo siguiente
la PC envia varios comandos a la camara, ejemplo

PTZ_STOP: detener movimiento en cualquier eje
TILT_UP: mover hacia arriba
TILT_DOWN: movero hacia abajo

creo que esto es asi por que todos los eventos _OnMouseUP del mouse
envian el comando PTZ_STOP.

y los enventos _OnMouseDOWN, envia un comando de movimiento
TILT_UP
TILT_DOWN
PAN_LEFT
PAN_RIGHT
PTZ_RIGHT_DOWN
PTZ_RIGHT_UP
PTZ_LEFT_DOWN
PTZ_LEFT_UP

esto significaria que el robot solo se mueve cuando un boton,
esta siendo presionado y cuando se libera el boton se detiene, esto es asi?


que bueno que sigues adelante con este proyecto, te aseguro que vas aprender
mas de lo que necesitas para armar tu robot.
:)
 
Última edición:
Atrás
Arriba