SPI – Serial Peripheral Interface
Quan parlava de GPIO vaig parlar d’aquest protocol capaç de corre sobre ports d’aquest tipus. Doncs bé aquí en teniu una petita definició del que fa i com funciona aquest protocol.Un lloc on podem trobar sovint busos SPI són PDAs i en telèfons mòbils.
Definició
El bus SPI és del tipus serie i sincron, usa 4 cables i s’usa en molts microprocessadors de periferics. Els ports amb suport SPI suporten un ample de banda mitja/baix (1 megabaud) entre les seves CPUs i els altres dispositius que hi poden haver connectats al bus.
Com funciona
El bus SPI és relativament simple d’implementar per dispositius externs de poca velocitat i no ens calen gaire cables per establir la comunicació. L’interface d’aquest bus la va definir Motorola a l’estàndard de microcontroladors MC68HCxx. Usa un rellotge per marcar el sincronisme de la línia de dades tan d’entrada com de sortida del microcontrolador i la informació es mou en blocs de 8 bits.
El bus SPI usa una inteficie master/slave, com és normal en comunicacions serie síncrones és el master el que marca el rellotge. Un fet interessant en aquest tipus de busos és que podem rebre i enviar informació dels dispositius de forma simultanea, per tant es tracta d’un protocol full-duplex.
Una mica més endintre
Les senyals que usa el bus són:
- SLCK serial clock, sempre controlada pel master
- MISO master-in slave-out data
- MOSI master-out slave-in data
En una aplicació normal haurem de connectar la soritda de SCLK del microcontrolador a la entrada SLCK del convertidor. La MISO al pin DOUT del convertidor, la MOSI al pin DIN. Cada IC (circuit integrat) del bus SPI té una senyal CS (chip-select), cal activar la senyal per tal d’habilitar el dispositiu en el bus. Per tal de fer això podem usar qualsevol de les línies de sortida estàndard del microcontrolador. Cal però que pensem que si tenim n ICs connectats al bus, caldràn n senyals per activar els ICs. A més si compartime la senyal de rellotge i les línies de dades haurem d’habilitar la senyal de CS corresponent en cada cas.
Valoració
Com podeu veure el disseny del bus i el prtocol d’ús són molt senzills. Tan que si fem servir massa dispositius connectats a la mateixa línia de dades la cosa es fa una mica pesada de tractar. Malgrat això per moltíssimes aplicacions és una bona idea usar-lo.
Exemple d’ús
La gent de maxim tenen un document tècnic (local) molt bo on en poques ralles ens explique com comunicar un termometre digital, concretament el DS1620, només amb 3 cables a través d’un bus SPI. L’esquema del sistema és força senzill i us dona una idea de la simplicitat que suposa connectar aquest sensor de temperatura al bus SPI.
Fonts
GPIO – General Porpuse Input/Output
Aquest acrònim s’acostuma a usar en dispostius incrustats, els dispositius GPIO ens facilitat ports d’entrada i sortida (I/O) que es poden configurar indiferenment com a ports d’entrada o de sortida. Sobre aquests ports podem fer correr protocols de BUS, com per exemple I²C, SPI and SMBus. Sovint el fet d’usar xips GPIO és una solució més econòmica que l’ús de micro-controladors.
Com que aquesta explicació queda molt generècia, el millor és parlar d’un exemple ben senzill de perquè serveix un GPIO en un dispositu embedded. El Linksys WRT54G per exemple, té un GPIO que no usa tots els seus PINs. Per tant, és un dispositiu que tots tenim a l’abast i amb el que a través d’un linux podem començar a jugar amb el GPIO. A comesfa.org hi ha un artícle titulat: Connexió d’un relé a un Linksys WRT54G on s’usa aquest GPIO del que us parlava per connectar-hi un relé a través del qual podem encendre i apagar dispositus.
Un petit trick que sovint podem fer amb els pins del GPIO és connectar-hi directament un LED, sovint si configurem el pin com a sortida i connectem l’altre pota del LED la posem a massa n’hi ha prou per fer encendre i apagar el LED quan volguem. De totes formes si no voleu sucarrimar el LED, us recomano mirar amb el tester quina tensió dona el pin en estat activat, ja que mai se sap què hi pot haver. Si mireu l’article anterior que us he dit de comesfa, veureu un tros de codi en C que mostra fins a quin punt serà de senzill controlar que el LED s’ensengui o s’apagui.
winmail.dat en linux
Més d’un cop he rebut un adjunt als correus que provenen d’usuaris d’Outlook, aquest adjunt del que ús parlo és el winmail.dat. Sovint els he fet re-enviar l’adjunt perquè això és un format que no podia obrir des del meu client de correu (MUA). Avui m’ha tornat ha passat però tenia molt d’interés en saber què hi havia dins d’aquell fitxer (winmail.dat) així que he trobat una eina per linux, el tnef, que em permet desempaquetar aquest format MIME (Multipurpose Internet Mail Extensions) propietat de Microsoft, concretament el format és el ms-tnef (Transport Neutral Encapsulation Format). Perquè ens fem una idea i fent un símil amb el món linux/unix vindria a ser un tar amb algunes funcions més sobretot orientades a incorporar informació RTF (Rich Text Format).
XML-RPC ping – NP_PingPong
Ja fa uns mesos que em fallaven els pings cap a technorati per tant, els articles que escribia no s’estaben indexant a aquest buscador de tags. Així que gràcies al propi technorati he trobat un plugin pel blogcms que em permet fer-ho de forma més neta que fins ara. Fins ara ho feia amb un programa amb PHP que havia jo mateix, una mica cutre per dir-ho clar. Així que ara uso aquest plugin que es diu NP_PingPong que ho fa de forma integrada en l’entorn del blogcms.
Feedyes – obtenim feeds RSS de sites que no tenen feeds
Sempre m’he volgut sindicar a mini-itx però no disposa d’enllaç a un fitxer XML amb els feeds en format RSS ni ATOM. Així que el meu bloglines sempre ha estat esperant que això passes, de fet, la cosa no ha canviat. Però per fi he trobat un servei web que genera feeds automàticament d’altres sites que no ho tenen i a més gratuït, estic parlant de Feedyes en un 1s m’he donat d’alta i he generat els feeds de la web mini-itx. Així que si algú més s’hi vol sindicar ja ho sap. El sistema és força intuitiu tot i que us recomano que lliu el que diuen els passos per crear un feed sinó potser us passeu 1min com jo pensant on heu d’apretar per seguir, el que fa no llegir les coses.
nova versió del devilspie
A finals del 2004 vaig parlar del devilspie una eina que em permet llençar les aplicacions als workspaces. Doncs bé la qüestió és que la nova versió del Devil’s pie ha canviat totalment el format de configuració i totes les configuracions que tenia montades per la versió antiga no m’han servit per res.
L’antiga sintaxis es basava en XML l’actual s’assembla més a un algoritme. Abans tot estava en un fitxer de configuració i ara s’han de crear fitxers amb l’extenció .ds dins el directori ~/.devilspie i dins podem veure coses com aquestes:
(if (contains (window_name) "Firefox") (set_workspace 4))
La configuració anterior envia el firefox a l’area de treball 4, un altre idea perquè quedi clar el senzill que és d’usar, carreguem l’asmn perquè estigui present a totes les arees de treball:
(if (contains (window_name) "aMSN") (pin))
Ara uns links cap als manuals de veritat: