Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Zarith: a lo mejor habría que meter una tercera dimensión 
 
Zarith: algo así como Caótico Malvado de Letras

576

Habi - 20/02/2007 18:15:56 - Yuyus

Sólido.
Calmar.
Contento.
Oro.
Regeneración.

¡Disgusto!

Esa era la palabra que buscaba.

0


K-B-Zón Reloaded (I)

Habi - 13/02/2007 17:15:53 - Chorradas

2


Marchando otro doble

Habi - 11/02/2007 0:48:39 - Tecnoesoterismo

Me he propuesto hacerme esos controladores domésticos que mencioné en el post nº 4 (si no lo has visto, mira el archivo, que para eso está).

El paso esencial es el interconectar el ordenador a la red montada por los cables de la luz, para lo cual pensaba usar un PIC que tuviese UART (USART) para comunicarse con el PC, y llevar por software el protocolo que tuviese esa red (en otro post os contaré el que he diseñado, porque X10 es una guarrería).

De nuevo hoy he ido a comprar mis chucherías, incluyendo un PIC 16F628A (más barato que el 16F84A, y con un montón de mejoras y cosas extras), y un MAX233 (para convertir los niveles de voltaje TTL - RS232) por el que me han clavado un poco más del doble del precio del PIC. En fin, al menos no necesita condensadores externos, como el MAX232.

El programa ha llevado un poco, debido al sistema de interrupciones del PIC para el envío. Al final, sólo uso interrupciones para la recepción; recepción asíncrona y envío síncrono. Más que de sobra para lo que necesito. Hacer que haga un saludo al principio, y un eco de los caracteres recibidos, invirtiendo las mayúsculas y minúsculas para saber que está funcionando, y a correr.

El código es algo así:

;Esto es una prueba del USART para el pic 16F628A

  list  p=16f628a
  include <p16f628a.inc>
 
SalvaW  equ 0x20

  org   0x00
  goto  Inicio

  org   0x04
  btfsc PIR1, RCIF
  call  RxInt
;Otras interrupciones
  retfie

RxInt:
  movwf SalvaW
  movfw RCREG
  xorlw 0x20
  call  Envia
  movfw SalvaW
  return

;--------------------------------------------

Envia:
  bsf   STATUS, RP0
EsperaEnvio:
  btfss TXSTA, TRMT
  goto  EsperaEnvio
  bcf   STATUS, RP0
  movwf TXREG
  return

;--------------------------------------------

Inicio:
  bsf   STATUS, RP0
  movlw B'00100100' ;TXSTA: TXEN, BRGH
  movwf TXSTA
  movlw D'25'   ;SPBRG: 9600 baudios
  movwf SPBRG
  bsf   PIE1, RCIE  ;PIE1: RCIE
  bcf   STATUS, RP0
  movlw B'10010000' ;RCSTA: SPEN, CREN
  movwf RCSTA
  movlw B'11000000' ;INTCON: Hablito interrupciones (general) y periféricas
  movwf INTCON

  movlw 'H'
  call  Envia
  movlw 'o'
  call  Envia
  movlw 'l'
  call  Envia
  movlw 'a'
  call  Envia
  movlw D'13'
  call  Envia
Bucle:
  goto  Bucle

  end

El circuito de prueba y el resultado:

 

Sale "Holala" en el HyperTerminal porque intenta emular un terminal con protocolo definido y se hace un lío con los caracteres de control (retorno de carro en este caso). Oh lalá, es una señal.

Ya falta menos…


Cuando cuento que hago tal o cual cosa pareciera como si esta se hiciese siempre a la primera, como si nunca me equivocase. Nada más lejos de la realidad.

Hoy por ejemplo, tras probar el programa del PIC en el emulador (MPLAB SIM), apañar el tema de las interrupciones, probarlo en el Proteus (Isis), y montar cuidadosamente todas las conexiones en la placa de prototipos, no funcionaba. Y del software no podía ser, ni de la configuración del PIC.

Metí el polímetro y vi unos valores raros de entrada / salida en las patas TX y RX, así que pensé que el problema era del MAX233. Poco después descubrí con horror que no era eso, gracias al olfato. Había cometido uno de los peores errores: había confundido Vdd y Vss en el PIC (le había invertido el voltaje). Afortunadamente son duros y tienen diodos protectores, no se que les hace la gente esa que dice que se los carga. En cualquier caso, una vez subsanado funcionó todo perfectamente.

La única secuela ha sido esta:

Del calor de la corriente disipada se ha fundido un poco el plástico de la placa de prototipos, ese era el olor que detecté.

Por si alguien quiere hacer cosas con la electrónica, os daré unos consejos:

4


Tentetieso

Habi - 07/02/2007 0:17:22 - Yuyus

Una de mis aficiones es poner alguna palabra aleatoria en el navegador, y después de elegir una web ir siguiendo links aleatoriamente. Yo soy así de raro.

Así fue como ayer encontré la siguiente imagen en la wikipedia: IMAGEN A MIRAR.

No sigas leyendo hasta que no la hayas visto.

...

...

...

¿Ya? Bien. Seguramente no habrás pensado lo mismo que yo pensé. Esta gente ha convertido algo 3D en una secuencia 2D. Así que pensé en hacer lo contrario.

La imagen es 213x231 con 87 fotogramas. Si las fotos están en el plano XZ y van bajando sobre el eje Y, triplicamos la distancia en tiempo, hacemos que el color blanco sea transparente y formamos una nube de puntos en 3D con los pixels... ¿qué tenemos?

      

Estas son un par de vistas, con un corte. En la segunda vemos la pastilla que puso de referencia el tío.

 

Aprovechando la nube de puntos, desde este ángulo podemos ver al cerebro dentro de un cráneo traslúcido.

Ahora es tarde y hay que dormir... mañana tocará experimentar; haciendo visibles sólo determinadas intensidades, etc.

0


Hipersensibilidad

Habi - 27/01/2007 18:23:03 - Tecnoesoterismo

Hace tiempo, navegando por Internet, vi una Web en la que hacían un medidor de radioactividad casero muy simple, usando una cámara iónica de fabricación casera y un transistor Darlington. Me apunté el esquema.

Hoy decidí hacer algo parecido.

Lo primero fue el detector. Como llevo MESES esperando a tener un bote de metal decente, he decidido no esperar más y hacerlo con la carcasa de un condensador electrolítico gordo, debidamente vaciado. No fue fácil; es difícil vaciarlo, la soldadura no agarra y encima el plástico derretido ese de pistola funde antes que el estaño. Menudo show. En cualquier caso, no es más que un bote con un electrodo (cacho alambre) dentro, y cubierto con albal para que quede cerrado. El propio aire será el gas a ionizar (CO2, neón o algo así hubiese sido mejor, pero pasando).

Por supuesto es un sensor pequeño, comparado con uno hecho con un bote. Al haber menor distancia y volumen, el aire se ionizará antes y el sensor será mucho más sensible (demasiado, como veremos).

En el circuito, al no encontrarse por estas latitudes el MPSW45A, le he puesto un BC517, que amplifica 30.000 en vez de 25.000. Y por si fuera poco, la resistencia interna de mi multímetro cutrillo no es 10MOhm, sino bastante menor, no la pone ni en el manual (sospecho que es 1KOhm).

Al ponerlo en marcha, alcanzaba su valor (se estabilizaba) rápido, pero parecía que a la mínima oscilaba demasiado sin venir a cuento. Creía que sufría de histéresis del transitorio de encendido el Darlington por la construcción del sensor...

...Y me equivoqué. Lo dejé puesto mientras chateaba, y al girar la cabeza vi que estaba quieto. Así un buen rato. Al levantarme se movió. Entonces entendí; me quedé quieto y él también. Y al moverme, volvió a cambiar.

Estaba detectando la perturbación de mi campo eléctrico en la habitación. La polla. No quiero imaginarme que lecturas dará esto con una muestra radioactiva de verdad. Por supuesto, puedo cambiar de escala y/o cambiar las resistencias, pero esto me ha llegado.

5


¡Que alguien les detenga!

Habi - 25/01/2007 22:04:22 - Yuyus


Y hoy va de imágenes; subí la del monigote.

0


Maná maná (8)

Habi - 25/01/2007 1:08:41 - Tecnoesoterismo

Querido diario:

[...]

Por fín me llegó ese programador de PICs desde Argentina, que es el lugar donde se marchó la madre de Marco para no verle nunca más. Menudo coñazo de niño y de serie; sin embargo la de Heidi, que no era mucho mejor, me la vi casi entera.

Un bonito sobre marrón, con un sello automático por valor de 15,75$ el envío... Si me costó 21€... ya se sabe el resto. Dentro del sobre, otro sobre protector acolchado, y dentro de este último, por fín, un plástico con el grabador y un CD de regalo en su fundita rígida que ya miraré mañana.

 

A la vuelta de la cena, sobre las 22:15, empiezo a jugar; pruebo a leer el 16F84A que tenía preparado; todo 0, perfecto. Es hora de hacer un programa.

Con el manual en pdf de ese modelo para mirar como es su ensamblador y el IDE de MicroChip, escribo esto:

;Esto es una prueba para el puto pic 16F84A

 list p=16f84a
 include <p16f84a.inc>

ContadorP equ 0x20
ContadorG equ 0x21

 org 0x00
 goto Inicio

 org 0x04
 retfie

PausaPeque:
 clrf ContadorP
BucleP:
 decfsz ContadorP, F
 goto BucleP
 return

PausaGrande:
 movlw 0x82
 movwf ContadorG
BucleG:
 call PausaPeque
 decfsz ContadorG, F
 goto BucleG
 return

Inicio:
 bsf  STATUS, RP0
 clrf TRISB
 movlw B'01010101'
 bcf  STATUS, RP0
 movwf PORTB
Bucle:
 call PausaGrande
 movlw 0xFF
 xorwf PORTB, F
 goto Bucle
 
 END

Al principio no me ensambla, porque puse una directiva res en una sección udata. No genero código objeto y el ensamblador es un poco tocahuevos, así que lo cambio por equ, y compila a la primera. El debugger integrado es simple, pero eficiente, y compruebo que el programa funciona perfectamente en el emulador. ¡Es hora de grabarlo en el PIC!

Ahora toca construir el circuito. Descubro que no tengo resistencias de 330 ni de 220 Ohmnios para el LED. En fin... uso una de 470, porque por debajo lo más cercano que tengo es de 68. Estabilizo el cristal de 4 Mhz con dos condensadores cerámicos de 22 pF (no tengo de 27, y para esto da igual), alimento por VDD y MCLR, pongo masas y el LED.

También funciona a la primera. Justo a tiempo, son las 23:05, hay que sacar al perro.

[...]

Es tarde, pasan de la una y cuarto. Subo este post y el video, me despido de Z, y me voy a dormir. Mañana subiré alguna foto del monigote siniestro de masilla epóxica. Pero ahora toca soñar con Nu.

Adiós, querido diario. Hasta mañana.

2


De compras

Habi - 20/01/2007 15:31:02 - Chorradas

Hay gente que disfruta yendo de compras. Comprarse ropa, cacharritos electrónicos modernos o chucherías. Yo no, será que soy muy utilitarista en esos sentidos.

Con lo que disfruto es yendo a tiendas de componentes electrónicos. Me gusta coger yo mismo las resistencias y condensadores, y al final volverme tan feliz con una bolsita de componentes, como si fuesen los regalices, gominolas y nubes que me compraba de pequeño.

Aunque creo que disfruto más con las conversaciones con los dependientes, pidiéndoles integrados simples de los que no han oído hablar en la vida ni pueden encontrar equivalentes, o simplemente preguntándome porqué trabajan ahí. Por ejemplo, cuando fui a comprar más LEDs para mi foco IR:

Habi dice: Hola... quería unos LEDs infrarrojos, como los que me llevé el otro día. Eran de 5mm, en torno a los 940nm...
Infraser dice: Euuu... infrarrojos... pero... ¿emisores o receptores?
Habi piensa: LED = light EMITTING diode. ¿Qué parte no ha entendido? ¿Cree que le estoy pidiendo un fototransistor, una LDR o algo así?
Habi dice: Emisor, con E de LED.

O mi preferida, la de hoy:

Habi dice: Buenos días... [...] También quiero un potenciómetro lineal de 10k, tipo trimmer...
Lechón dice: ¿Eh? ¿Trimmer? Pero... ¿lineal?
Habi dice: Sí.
Lechón dice: ¿Como este?
Lechón le enseña a Habi un potenciómetro de toda la vida, no un trimmer.
Habi dice: No, uno de tipo trimmer, de esos que no tienen eje, sino que se ajustan con destornillador.
Lechón dice: ¿De esos multirrosca azules?
Habi dice: ¿Multirrosca?
Lechón dice: ¿De cuanto era?
Habi dice: De 10k...
Lechón se va a por algo y Habi piensa: ¿Multirrosca? ¿Habrá querido decir multivuelta? ¿Y azules? ¿Los identifica por el color del plástico de fuera? O_o
Lechón vuelve con un trimmer (azulito) y dice: Estos se llaman de multirrosca, no... ¿como has dicho? ¿Trimmer?.
Habi mira el trimmer, lee lo que está escrito, hace una foto y la pone en el blog:

También me he comprado lo de la foto anterior a esta. Para las malpensadas diré que no es un consolador, sino una bomba de vacío. Esto me recuerda a la historia de una compañera de instituto y un botellín que al final hubo que romper. Pero me estoy desviando. Esto es para desoldar; tenía una punta de pera medio caducada que me regalaron, pero la goma estaba hecha polvo y no me la chupaba bien (la soldadura). Así que me he modernizado.

Hoy también he cogido unos conectores USB para el foquito IR, y un regulador lineal (el 7805 de arriba). A disfrutar de ellos.

6


Me abro

Habi - 19/01/2007 23:48:54 - Yuyus

Otra revelación... Irmiá quiere ser libre, aunque no le gusta la idea de ser visitado por hordas...

En cualquier caso, Habi Hablóg está abierto al público, como bien podéis ver en http://www.habisoft.com/.

También me he decidido a levantar el veto a arañas y bots, por eso he puesto también un sistema de validación para comentarios.

Antes de que lo preguntéis, también permito que este blog sea linkado desde donde sea.

4


:6

Habi - 18/01/2007 23:01:19 - Tecnoesoterismo

Volvamos atrás unos cuantos años. Uno podía encontrarse con un montón de plataformas distintas; CPCs, PCWs, Spectrums, Commodores, MSXs y algunos otros casi desconocidos por estas latitudes, como los BBC Micro, Apple II, Altair, IMSAI 8080, …

Un gran número de plataformas, sí. Cada una diferente de la otra, sí. Con sus características incompatibles, sí. Cada una con una versión de BASIC (o algo peor) distinta, sí.

Como no tenían demasiada potencia, el portar un juego a varias plataformas era un trabajo de chinos, pues se debía optimizar para cada plataforma, y eso lo sabían los Programadores (sí, con mayúsculas). Pero también es cierto que para ciertas aplicaciones no hacía falta más que un modo de texto, o con gráficos llamados desde de una interfaz común. ¿Por qué no hacer algo común para todos?

Y así fue como que en medio de ese caos surgió el CP/M. Un sistema operativo para gobernarlos a todos, un sistema operativo para encontrarlos, un sistema operativo para atraerlos a todos y atarlos en las tinieblas.

Los únicos requisitos: 80 columnas (o apaño equivalente), unidad de disco (idem) y tener un Z80 (8080) para ejecutar código. Commodore creó el Commodore 128 con un Z80 como coprocesador sólo para poder ejecutar el CP/M, y de igual manera se crearon extensiones para el Apple II y similares que tenían arquitectura Motorola (650x). Incluso el Spectrum +3, con unidad de disco, tuvo su versión.

Un mismo programa, una vez optimizado se ejecutaba en todos los ordenadores. Pues todos tenían el mismo sistema operativo, el mismo formato de ejecutable y un procesador compatible. Y todos se regocijaron.

Además, traía el Mallard BASIC, que era un intérprete de BASIC igual para todo el mundo. Un gran adelanto, sin duda. Aplicaciones como WordStar o dBase surgieron para CP/M. Hubo incluso compiladores de Pascal de Borland. Después todos ellos se portaron a DOS, pero eso es otra historia.

El fin de los 8 bits fue rápido y silencioso.


Hoy en día la situación es justo la inversa. Se tiende a una sola plataforma, el PC (bastante chapucera, el contar sus miserias se merece otro post). Sin embargo, nos encontramos que hay una infinitud de sistemas operativos.

Desde la humilde familia DOS (basado en CP/M) y sus variantes, la familia Windows y OS/2, la infinitud de distribuciones de Linux y núcleos BSD hasta cosas más exóticas como TriOS, DragonFly BSD, ReactOS, Plan 9, MenuetOS, y antiguallas como Xenix, Amiga OS o HP-UX. Incluso ahora se tiene el Mac OS, pues la arquitectura PPC ha caído (impío Apple despiadado; adios 6502, adios 680x0, adios PPC, ...). Aunque que se usen, el Windows, Linux (y sus 12.000 manejadores de ventanas incompatibles entre sí), Mac OS, FreeBSD / OpenBSD y poco más.

Una sola plataforma, multitud de sistemas operativos, multitud al cuadrado por lo tanto de formatos binarios y linkados dinámicos cuando el hardware que subyace es el mismo. Hacer hoy en día un programa realmente portable implica que ha de ser intrínsecamente lento. Por las tremendas capas de emulación necesarias para proporcionar un entorno lo más abstracto posible (y la gran cantidad de recursos que consumen), por el mínimo común múltiplo de los puntos fuertes de cada sistema operativo y por el máximo común divisor de los débiles. Es independiente de lo que optimice el compilador.

Tener competencia en el hardware haría bajar los precios del mismo (sobre todo en marcas), lo que beneficia a los usuarios. El que haya un sólo sistema operativo hace no sólo que todo esté más optimizado, sino más accesible, pues se da el caso actualmente de aplicaciones y juegos existentes para algunos siestemas operativos  y no para otros. Esta unicidad también beneficiaría al usuario.

Dejando eso a un lado, lo peor es el desarrollo. Donde antes había un Programador, ahora hay 10 infraseres que no valen apenas 1/10 del Programador y les cuestan a la empresa 1/10 del mismo (¡en conjunto!); o aunque no sean infraseres, se les obliga a serlo, quitándoles el diseño, la iniciativa y el sueldo. Y se autoengañan creyendo que metiendo más gente se desarrollará mejor y antes. Es como pretender ganar una carrera a un coche de fórmula 1 con un Smart, y al ver que no se puede, poner más Smarts a correr; al final se consigue, pero trivialmente porque hay tantos coches en el circuito que ninguno puede moverse.

Knuth se quejaba del gran daño que produjo el BASIC a los futuros programadores. Yo creo que es más profundo, que el arte de programar se jodió en cuanto se convirtió en un puto marketing, como todo.

Hoy cambiaré mi sesión de Prukogi por otro mantra igualmente poderoso, del maestro Nicklaus Wirth: “Software gets slower faster than hardware gets faster”. Repeat with me, please...

Qué gran verdad. Y qué triste.

1


Reglas del 10:
10 últimos   10 después   10 antes   10 primeros