• Sábado 20 de Abril de 2024, 03:09

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - jaumegs

Páginas: [1] 2
1
Dudas informáticas / Bitrate de video entrelazado y progresivo
« en: Jueves 16 de Diciembre de 2010, 14:22 »
Tengo una duda respecto al vídeo entrelazado.

Entiendo que cada cuadro se divide en dos, uno con las líneas impares y otro con las pares. Lo que no entiendo correctamente es cómo se muestran las distintas divisiones.

Pongamos el caso del formato PAL: 720x576 pixels 25 Hz y profundidad de color de 24 bits.

La información al respecto del vídeo entrelazado menciona que la resolución vertical es menor que para el caso del vídeo progresivo. También mencionan que se necesita menor bitrate para el entrelazado.

Esto me confunde, pues según lo entiendo yo, la única diferencia es que cada fotograma de 720x576 se muestra mitad y mitad a 50 Hz. Esto significa que la resolución de la imagen y el bitrate son exactamente los mismo...

Otra opción, la cual no he leído explícitamente en ninguna parte, es que las imágenes sean de 720x288, mostrando dos a la vez obteniendo una resolución aparente de 720x576. En este caso la resolución vertical y el bitrate se dividen por dos, coincidiendo con los comentarios que he leído.

La primera explicación supone que cada cuadro (fotograma) de 720x576 se divide en dos campos de  720x288 pixels cada uno y se muestran en el siguiente orden:

pintamos las líneas impares del campo 1
pintamos las líneas pares del campo 1
pintamos las líneas impares del campo 2, se sobreescriben las del campo 1
pintamos las líneas pares del campo 2, se sobreescriben las del campo 1
...

La segunda explicación supone que se cogen dos campos de 720x288 cada uno, siendo cada campo un fotograma del vídeo y se superponen en una pantalla de 720x576, ocupando un fotograma las líneas impares y el otro las pares.

pintamos fotograma 1 en las líneas impares
pintamos fotograma 2 en las líneas pares
pintamos fotograma 3 en las líneas impares, se sobreescribe en fotograma 1
pintamos fotograma 4 en las líneas pares, se sobreescribe en fotograma 2

Para el primer caso tiene lógica eso de la duplicación de frecuencia. Nosotros enviamos las imágenes a 25 Hz y la pantalla las muestra a 50 Hz (las divide en dos y las muestra por separado). Sin embargo, para el segundo no...

¿Alguien puede aclararme esta duda?

Gracias.

2
Visual Basic 6.0 e inferiores / Implementación de Rnd y Randomize
« en: Miércoles 1 de Diciembre de 2010, 14:17 »
Necesito implementar las funciones Rnd y Randomize de Visual Basic en un lenguaje más rápido para un ejercicio recreativo de criptografía. Es preciso que sean las mismas funciones y que devuelvan los mismos valores.

Por ahora tengo lo siguiente:

Código: C
  1.  
  2. #define  X0  0x50000L    // 327680
  3. #define  A   0x43fd43fdL // 1140671485
  4. #define  C   0xc39ec3L   // 12820163
  5. #define  M   0xffffffL   // 2^24 - 1
  6.  
  7. long seed = X0;
  8.  
  9. float Rnd (long Number)
  10. {
  11.    if (Number > 0)
  12.    {
  13.       seed = (seed * A + C) & M;
  14.    }
  15.    else if (Number < 0)
  16.    {
  17.       // No estoy seguro de esta parte...
  18.    }
  19.    return (float) seed / (float) 16777216.0;
  20. }
  21.  
  22.  

El resultado de llamar a Rnd() con un argumento nulo o positivo es el esperado, sin embargo, no se como implementar Rnd() cuando el argumento es negativo ni tampoco Randomize().

He encontrado una web que supuestamente explica el funcionamiento de ambas funciones, pero o yo no lo entiendo o la explicación de Randomize es incorrecta. La dirección es la siguiente  http://www.experts-exchange.com/A_11114.html.

¿Alguien tiene idea de como implementar Rnd() y Randomize() de Visual Basic en C?

Gracias.


Nota del administrador: Modificado el enlace al artículo ya que http://www.15seconds.com/issue/051110.htm ha dejado de funcionar.

3
C/C++ / ¿Parar ejecución o capturar el error?
« en: Viernes 19 de Noviembre de 2010, 15:16 »
Una hipotética biblioteca C me ofrece una función para crear un objeto en memoria (no confundir con el término objeto de la POO). Esta función reserva la memoria necesaria para su propósito mediante otra biblioteca o una llamada al sistema; el mecanismo exacto no es importante. Si no consigue reservar la memoria a la primera lo intenta automáticamente unos milisegundos más tarde o simplemente espera a que haya memoria disponible (no está pensada para aplicaciones a tiempo real).

Supongamos que tras una llamada correcta (parámetros y contexto adecuados) no consigue reservar memoria.

¿Cuál debe ser la respuesta de dicha función? ¿Abortar la ejecución o devolver un código de error?

Mi razón me lleva a las siguientes conclusiones:

Si la tarea que está realizando el programa es crítica o no lo es pero tampoco tiene otras tareas que realizar, retornar un código de error no tiene demasiado sentido, pues el programa quedará paralizado. En este caso abortar la ejecución parece la opción más sensata.

Sin embargo, si la tarea no es crítica y hay otras por hacer, retornar un código de error permite al programa seguir con su trabajo e informar al usuario del suceso y darle la opción de recuperar el error.

Sea cual sea el caso, la función no tiene forma de conocerlo, así que abortar la ejecución puede ser una medida demasiado drástica.

Estoy confuso. Los nuevos lenguajes de programación y librerías tienden a incorporar mecanismos de captura y recuperación de errores, pero muchos programadores con experiencia son detractores de tales medidas.

Claro está que hay situaciones extremas que obligan a tomar una u otra opción sin discusión. Por ejemplo, el sistema de seguridad de una central nuclear no puede abortar la ejecución así por la buenas ni un sencillo programa tipo ls o dir necesita hacer filigranas si es incapaz de leer el sistema de archivos. Pero en el resto de situaciones no se que camino tomar.

¿Qué me recomiendan?

Gracias.

4
Microcontroladores / Simulador Proteus
« en: Miércoles 23 de Agosto de 2006, 23:57 »
Hay "parches" (o lo que se puedan llamar) para el simulador Proteus, que le añadan funcionalidades extra como la capacidad de simular mas integrados (como los 8086/8088, Z80 (que y a lo imcluye pero no tiene capacidad de simulación))...?

Saludos

5
Microcontroladores / Señal De Video Pal
« en: Viernes 18 de Agosto de 2006, 22:48 »
Conoceís alguna web en español (o catalán) que describa con detalle el protocolo del estándar PAL (la señal de vídeo que reciven los televisores(Phase Alternating Line)).

Todo lo que he encontrado son borradores superficiales y además en inglés, los entiendo medianamente, pero hay conceptos que no entiendo, y no estaría de mal una explicación en mi idioma :D

Y si no es mucho pedir, como alternativa, también podría ser una descripción del protocolo usado en la transmisión de vídeo a los monitores de ordenador (VGA). De éste último no he buscado mucha información, pero ya puestos a pedir... :devil:

Saludos

6
Microcontroladores / Bootloader
« en: Lunes 14 de Agosto de 2006, 00:55 »
Lamento hacer este tipo de preguntas, pero... Qué es un Bootloader? Se refiere a lo mismo que el termino en informática (programa bootable para iniciar el PC)?

Saludos

7
Microcontroladores / Pequeña Cuestión
« en: Lunes 14 de Agosto de 2006, 00:30 »
Qué es mejor, dejar los puertos e/s no usados de los PIC como entrada, o como salida?

Saludos.

8
ASM (Ensamblador) / Memoria Caché
« en: Lunes 20 de Febrero de 2006, 18:07 »
És posible acceder directamente a la memoria caché de un procesador pentium?
Si es así, qué funciones están implicadas?

SALUDOS

9
Microcontroladores / Archivos Generados Por El Mpasm
« en: Miércoles 15 de Febrero de 2006, 20:43 »
Cómo se interpretan los archivos .HEX que crea el MPASM?

SALUDOS

10
ASM (Ensamblador) / Sobre El So
« en: Martes 31 de Enero de 2006, 18:51 »
Hola,
Es para ver como va el SO que esta desarroyando bob esponja y haber si se puede montar una sección el el FTP para publicarlo, si quiere claro.

SALUDOS ;)

11
C/C++ / Manejo Del Dico Flexible En C
« en: Miércoles 18 de Enero de 2006, 00:02 »
Que libreria incluye funciones para leer y escribir el disco flexible sector por sector?, es decir, especificando cara, pista y siector.

P.D.- Para dev-c++ o borland cpp compiler 5.

SALUDOS

12
C/C++ / Compilar Un Binario
« en: Martes 17 de Enero de 2006, 23:58 »
Cómo puedo compilar  un archivo binario "puro"?, es decir, que no saque un .exe, sino un .bin o sin extensión y que se comporte como tal.

Un archivo de este tipo puede ser ejecutado, por ejemplo, como un programa de arranque? Me refiero a si crearia conflictos al no encontrar las interrupciones. Imagino que si, pero, sería posible compilar desde el GCC (por ejemplo) archivos binarios que no utilicen interrupciones ni características específicas de un SO?

SALUDOS

13
Microcontroladores / Fallo - Rs232
« en: Domingo 8 de Enero de 2006, 17:34 »
Hola,

Se que esto se pide mucho por aqui, pero no me queda otro remedio...

Miren, este codigo (sacado del FTP del foro, un poco modificado) teóricamente tocaría funcionar para la transmisión y recepción serie...

Lo alucinante es que antes me funcionaba, bueno, me explico...
HAce unos dias formatee el ordenador... y me olvidé de guardar todos los programas para los PIC. Entre ellos, un programa que me funcionaba muy bien, era este mismo código(un poco mas modificado). Este código funcionaba bien, pero no se porque ahora no hay forma...

Lo he probado en simuladores y funciona bien, no da ningún error. Puedo pensar que es el hardware... pero estoy mas que arto de montarlo y desmontarlo...

Código: Text
  1. ;------------------------------------------------------------------------------
  2. ; DECLARACIÓN DE VARIABLES
  3. ;------------------------------------------------------------------------------
  4.  
  5. #Define    RxD  PORTB,4  &#59; Receive Data
  6. #Define    TxD   PORTB,5  &#59; Transmit Data
  7.  
  8. tempData1  EQU  0x44
  9. counter2  EQU  0x45
  10. counter1  EQU  0x46
  11.  
  12. ;------------------------------------------------------------------------------
  13.  
  14. RS232_setUp:
  15.   bsf STATUS,RP0  &#59; Segundo banco
  16.  
  17.   bsf RxD    &#59; Configura la entrada
  18.   bcf TxD    &#59; Configura la salida
  19.  
  20.   bcf STATUS,RP0  &#59; Primer banco
  21.  
  22.   return    &#59; Retorna donde fue llamada
  23.  
  24. ;------------------------------------------------------------------------------
  25.  
  26. RS232_readData:
  27.  
  28.   movlw 0x08
  29.   movwf counter1
  30.  
  31. waitBegin
  32.  
  33.   btfsc RxD  &#59; Bit de START?
  34.   goto waitBegin  &#59; No, sigue esperando
  35.       &#59; Si, sigue el programa
  36.  
  37.   call wait_mc100  &#59; Espera a que termine el bit de START
  38.   call wait_mc50  &#59; Espera medio bit para leer el primer bit de
  39.       &#59; datos medio bit retrasado
  40. readBit
  41.  
  42.   bcf STATUS,C  &#59; Supone que es &#34;0&#34;
  43.   btfsc RxD  &#59; Es &#34;0&#34; realmente?
  44.   bsf STATUS,C  &#59; No, es &#34;1&#34;
  45.  
  46.   rrf tempData1,F
  47.   call wait_mc100
  48.  
  49.   decfsz counter1,F&#59; Ha leido todos los bits de datos?
  50.   goto readBit  &#59; No, lee el próximo bit
  51.  
  52.   call wait_mc200  &#59; Si, espera al bit de STOP
  53.   movf tempData1,W&#59; Pone el resultado en el acumulador
  54.  
  55.   return    &#59; Retorna donde fue llamada
  56.  
  57. ;------------------------------------------------------------------------------
  58.  
  59. RS232_sendAsciiNumber:
  60.   addlw '0'
  61. RS232_sendData:
  62.   movwf tempData1  &#59; Guarda el contenido del byte a trans-
  63.       &#59;   mitir
  64.   movlw 0x08  &#59; Número de bits a transmitir
  65.   movwf counter1
  66.   bcf TxD  &#59; Bit de START
  67.   call wait_mc100
  68.  
  69.  sendBit    &#59; Comienza a enviar tempData1s
  70.   rrf tempData1,F  &#59; Lleva el bit que se quiere enviar al
  71.   btfss STATUS,0  &#59;  Carry para deducir su valor. ¿Es un
  72.       &#59;  &#34;1&#34;  el bit a transmitir?
  73.   goto sendZero  &#59; No, pues envía un &#34;0&#34;
  74.  
  75.  sendOne
  76.   bsf TxD  &#59; Transmite un &#34;1&#34;
  77.   goto endSendBit
  78.  
  79.  sendZero
  80.   bcf TxD  &#59; Transmite un &#34;0&#34;
  81.  
  82.  endSendBit
  83.   call wait_mc100  &#59; Este es el tiempo que estará en alto
  84.       &#59;   o bajo
  85.   decfsz counter1,1&#59; Comprueba que es el último bit
  86.   goto sendBit  &#59; Como no es el último bit repite la
  87.       &#59;   operación
  88.   bsf TxD  &#59; Envía dos bits de stop
  89.   call wait_mc200
  90.  
  91.   return    &#59; Retorna donde fue llamada
  92.  
  93. ;------------------------------------------------------------------------------
  94.  
  95. wait_createMc:
  96.   movwf counter2  &#59; Aporta 1 ciclo de máquina
  97.  
  98. waitLoop
  99.   decfsz counter2,1&#59; Aporta 1 c.m. cuando no se salta, y
  100.       &#59;  2 c.m. si se salta.
  101.   goto waitLoop  &#59; Aporta 2 ciclos de máquina
  102.  
  103.   return    &#59; Aporta 2 ciclos de máquina
  104.  
  105.  
  106. ;------------------------------------------------------------------------------
  107. ; RETARDOS
  108. ;------------------------------------------------------------------------------
  109.  
  110. wait_mc50:    &#59; La llamada &#34;call&#34; aporta 2 c.m.
  111.   nop    &#59; Aporta 1 ciclo de máquina
  112.   movlw 0Eh  &#59; Aporta 1 ciclo de máquina
  113.   goto wait_createMc&#59; Aporta 2 ciclos de máquina
  114.  
  115. wait_mc100:    &#59; La llamada &#34;call&#34; aporta 2 c.m.
  116.   movlw 1Fh  &#59; Aporta 1 ciclo de máquina
  117.   goto wait_createMc&#59; Aporta 2 ciclos de máquina
  118.  
  119. wait_mc200:    &#59; La llamada &#34;call&#34; aporta 2 c.m.
  120.   nop    &#59; Aporta 1 ciclo de máquina
  121.   movlw 40h  &#59; Aporta 1 ciclo de máquina
  122.   goto wait_createMc&#59; Aporta 2 ciclos de máquina
  123.  

Bueno, aquí les dejo el código haber si me pueden hechar una mano.

SALUDOS

14
Microcontroladores / Calentar Un Alambre
« en: Martes 27 de Diciembre de 2005, 13:37 »
Hola,

Esta pregunta no está relacionada con la programación, pero ya que alguno de ustedes sabe electrónica me atreveré a preguntarlo.

Miren, yo quiero alguna fórmula o el método de cálculo para averiguar a que augmento de temperatura tiene un conductor de diámetro D, longitud x, resistencia R, material (alambre, supongo que acero galvanizado) al hacer correr una corriente I atraves de él.

Bueno, supongo que si existe tal fórmula tendra estas variables, sino simplemente expondré mi caso.

Tengo un transformador con salida de 24V 2,5A, quiero calentar a unos 200º-300º un alambre de 0,4mm y 60cm de largo.

Lo que necesito saber es la corriente que he de hacer circular por el alambre para que suba a esa temperatura sin llegar a ponerse incandescente.

P.D- Esto no tiene nada que ver con el tema de estos foros, pero les agradeceria respuestas.

SALUDOS

15
C/C++ / Problema En Devcpp
« en: Viernes 23 de Diciembre de 2005, 18:54 »
Saludos,
Estoi iniciandome en C++, con el compilador DevCpp.

Al compilar, crea ejecutables del orden de 450Kb, cosa que no me pasaba cuando compilaba en C... y si compilo el mismo programa en otro compilador, me crea ejecutables muchisimo mas pequeños.

Como puedo hacer que no me cree esos ejecutables tan grandes?

SALUDOS :hola:

16
Hardware / Procesador 486
« en: Miércoles 21 de Diciembre de 2005, 00:49 »
Bueno, esta no es exactamente una pregunta sobre un tema de ensamblador, pero va ligada.

He estado buscando por la red y no he encontrado por ningún lugar alguna web que de un datasheet o simplemente que función desempeña cada uno de los pines de un 486(DX2, por lo que he encontrado, hay pequeñas variaciones según el modelo).

Eso de que no he encontrado nada no es del todo cierto, pues he encontrado esto:
http://home.wtnet.de/~akstiefler/486/knifflig.html
pero como podeis ver está en alemán.

Solo observando el título se ve que se refiere a AMD, y a los procesadores 5x86.

Yo he interpretado que esto se debe tratar de un 486, una razón es que me apareció al buscar "486" en el google, y otra es porque coincide en el número de pines.

Bueno, la pregunta es:

Es esto realmento lo que ando buscando?

SALUDOS

17
ASM (Ensamblador) / Interrupciones. Que Son?
« en: Sábado 10 de Diciembre de 2005, 20:27 »
Que son exactamente las interrupciones? Bueno, entiendo su función, como se usan... Tienen un cierto parecido con las llamadas "call" a una función, pero como que ya estan cargadas en memoria, no pueden ser llamadas por un "call" al no ser que sepas su posición en memoria...

Bueno, eso es lo que entiendo yo de ellas :huh:

Puedo hacer yo una interrupcion? Por ejemplo... crear una interrupcion (0x34) cargarla en memoria y al introducirla en mi programa que ejecute esa funcion...
Cómo puedo hacerlas?

Cuanta mas información mejor ;)

SALUDOS

18
Microcontroladores / Ultrasonidos Con Pic
« en: Viernes 9 de Diciembre de 2005, 23:59 »
He estado mirando i no encuentro por ningún lugar el esquema de un circuito de ultrasonidos. El circuito ha de incluir un transmisor y un receptor, controlados por un PIC (16f84 si puede ser).

Mi intención es crear un "radar" de corta distancia de ultrasonidos, movido por un motor PaP para así poder hacer una imagen de 360º, para eso necesitaria que el programa del PIC cronometre, lo mas preciso posible, el tiempo que tarda en recibir un eco después de transmitirlo.

Bueno... el programa puedo hacerlo yo, pero no se como conectar dos módulos de ultrasonidos a un PIC, ni tampoco su funcionamiento.

SALUDOS :alien:

P.D.-perdón por el rollo que os he contado... :kicking:

19
ASM (Ensamblador) / Paginas De Viedo
« en: Viernes 9 de Diciembre de 2005, 23:50 »
Hola,

Qué es eso de las páginas de video (no los modos...) :huh: ? (Lo pide como parámetro en varias funciones de video de la BIOS)

SALUDOS :ph34r:

20
ASM (Ensamblador) / Apagar El Ordenador
« en: Jueves 8 de Diciembre de 2005, 23:37 »
Como puedo hacer para apagar el ordenador? es decir, que se apague completamente y automáticamente , sin necesidad de darle al botón.

Sin SO...

SALUDOS

21
ASM (Ensamblador) / Problema: Pierdo El Cursor... :-s
« en: Miércoles 7 de Diciembre de 2005, 18:15 »
Bueno, suena estraño, pero no lo es tanto...
Mi problema es que al introducir texto directamente en la memoria de video (0B800:XXXX) me va divinamente... pero el problema está en que el cursor... como lo diria... No se mueve :alien: ! Se queda donde eantes...

Como puedo indicarle a que posición debe ponerse? Cual es la dirección de memoria RAM (si es que la tiene) para este fin?

SALUDOS

22
ASM (Ensamblador) / No Logro Entender La Fat
« en: Martes 6 de Diciembre de 2005, 02:39 »
He intentado hacer un programa que me lea la disquetera desde un disco bootable(sin SO), lo que quiero es que lea un diskette con el formato FAT12(reconocible en DOS y WINDOWS).

Entiendo la teoria de la FAT12 y la FAT16 pero no se apricarlo en un programa... :(

Sabeis de webs que hablen sobre ello aplicado en ASM, a ser posible en español?
O algún ejemplo...

SALUDOS :P

23
ASM (Ensamblador) / Ver El Código Máquina De Un Programa
« en: Martes 6 de Diciembre de 2005, 00:11 »
Cómo puedo ver el código máquina de un programa sin tener que recurrir a un editor hexadecimal? Es decir, algo similar a esto:

Código: Text
  1.  
  2. Offset         C.M.              Mnemónicos....
  3. 00000000    45                inc bp
  4. 00000001    42                inc dx
  5. 00000002    334339         xor ax,[bp+di+0x39]
  6. 00000005    3032            xor [bp+si],dh
  7. 00000007    3937            cmp [bx],si
  8. 00000009    3833            cmp [bp+di],dh
  9. 0000000B    363232         xor dh,[ss:bp+si]
  10. ...                ...                 ...
  11.  
  12.  

SALUDOS

24
C/C++ / Asm Y C
« en: Domingo 4 de Diciembre de 2005, 13:04 »
Como puedo introducir código en ensamblador dentro de un programa en C?

Sabeis de alguna web que lo explique o ponga ejemplos(en español)?

SALUDOS ;)

25
ASM (Ensamblador) / Interrupciones
« en: Sábado 3 de Diciembre de 2005, 17:44 »
Me ha surgido una duda.

En los microcontroladores PIC, existen las interrupciones(faltaria más :P ), al aparecer una interrupción, como por ejemplo un cambio de estado en una de sus patillas(no es en todas, pero es irrelevante), el microcontrolador lo que hace es direccionar el IP del programa a la dirección 0x04 i seguir por alli el programa(en esa dirección se escribe un pequeño código que interprete que ha provocado tal interrupción, y hacer lo que sea necesario).

Mi duda es la siguiente: ¿Cómo lo hacen los PCs(Intel)?,¿Existen esas interrupciones?, Por ejemplo, si pulso una tecla del teclado, en vez de tenerlo que mirar constantemente, se transfiere el IP a algun lado, o que sucede?

He leido que si que existen en los PCs, pero no he encontrado ejemplos de ello.

Nota: No me refiero incluir INT 0x10 en el código.

SALUDOS :smartass:

Páginas: [1] 2