Le 68000 représentait un changement majeur dans la gamme de processeur motorola. En effet un processeur 16 bits à 8 mhz, c'était largement plus rapide que le 6800, un processeur 8 bits, principal processeur de la marque. En effet il existait uniquement des versions à 1, 1.5 et 2 mhz. Il était doté d'une gamme de contrôleurs de périphériques variés comme le PIA 6821 (2 ports parallèles 8 bits) ou le ACIA 6850 (un port série). Les fréquences d'horloges maximums pour ces contrôleurs étaient alignés sur celles du 6800.
Les concepteurs du 68000 ont doté de la possibilité de se "ralentir" en générant un signal d'horloge qui dure 10 cycles d'horloge. L'objectif était de pouvoir utiliser les contrôleurs du 6800, soit pour une raison de coût, soit pour bénéficier dès la sortie du processeur de toute une gamme de contrôleurs.
De nombreux micro-ordinateurs grand public ont bénéficiés de cette caractéristique, comme le mac d'apple qui contenait un VIA 6522 ou l'atari ST qui avaient deux ACIA 6850.
mercredi 21 mai 2008
Le 68000 et les périphériques 6800.
De delphi à linux, programmation des timers
Le composant TTimer sous delphi est un composant capable de faire un appel régulier et répétitif à une procédure utilisateur.
Le délai entre les appels est réglable. Le principe de fonctionnement est simple : il s'agit de créer une fenêtre non visible, associée à une procédure de fenêtre (wndproc) capable de gérer le message WM_TIMER. En initialise les appels ensuite avec une api praticulière de windows. Le noyau Windows va,à partir de là, envoyer régulièrement un message WM_TIMER à cette fenêtre.
Ceci étant vu, je vais vous proposer maintenant de reproduire ce type de comportement sur linux.
Ce système peut quand à lui répondre à des signaux extérieur à l'application. Ces signaux peuvent être détournés par le programme vers une fonction de gestion. Si le programme ne le fait pas, le noyau tue l'application. C'est ainsi que fonctionne CTRL+C qui envoie à l'application courante un SIGINT, le signal d'arrêt du programme. Si le programme n'a pas de gestion particulière de ce signal, le noyau va effectivement stopper le programme. Si le programme gère ce signal, le programmeur devra prévoir une stratégie de sortie.
Revenons au timer. Il existe un signal SIGALRM qui est envoyé régulièrement par le noyau à une application. Ce signal sera envoyé sur demande de l'application. Bien entendu, comme tout signal, s'il n'est pas géré par l'application, il provoquera l'arrêt du programme. Si on le détourne vers une fonction, cette fonction sera appelée régulièrement.
Voici un exemple de source C sur l'utilisation des alarmes sous linux:
/*
=============================================================================
Name : timer.c
Author : OT
Description : Comment coder l'équivalent du TTimer de delphi en c sous linux ?
=============================================================================
*/
#include stdio.h>
#include stdlib.h>
#include signal.h>
#include sys/types.h>
#include unistd.h>
#include errno.h>
#include sys/wait.h>
void evenementTimer() {
printf("Top timer\n");
alarm(1);
}
int main(void) {
signal(SIGALRM, evenementTimer);
alarm(1);
// c'est mal de faire une attente active....
for (;;) {
}
}
Le bus I2C et la télévision
Dans un précédent article j'avais fait une brève présentation du bus I2C. Je vais vous présenter
maintenant quelques composants I2C utilisés en télévision. Il s'agit juste d'une liste très courte, le nombre de composants I2C est en effet très important.
Cela veut dire que toutes ces fonctions sont contrôlables par un microprocesseur ou par un pc.
STV942x : contrôleur OSD (incrustation vidéo)
TDA933x : processeur vidéo (contrôle de luminance et chrominance, balayage vertical 50,60,100 et 120 hertz, balayage horizontal)
SAA5243/45 : décodeur télétexte
SAA9055P : décodeur numérique SECAM
SAA9062/63/64 : contrôleur de déviation
SAB3035/36/37 : syntonisateur
SAA9068 : contrôle du PIP (picture in picture)
TDA8405 : contrôleur son stéréo
TDA8440 : commutateur audio / video
TDA8461 : Décodeur PAL/NTSC
jeudi 8 mai 2008
Google, webservices et cartographie
Google webservices et cartographie
L'api la plus connue de google maps est la librairie javascript qui permet de faire du mashup avec leurs cartes. Il existe toutefois d'autres possibilitées pour exploiter leurs données. On peut facilement géolocaliser une adresse postale et la convertir en coordonnées géographiques.
Une simple requete http GET suffit :
http://maps.google.com/maps/geo?q=2+rue+victor+hugo+26000+valence+fr&output=csv&key=placer ici votre clé google maps api
Le format de retour est un fichier csv d'une ligne et de 4 colonnes
La colonne 1 correspond à un code retour d'erreur ou de succès
| Code statut de la requète | Description |
| (200) G_GEO_SUCCESS | Aucune erreur ne s'est produite. L'adresse a été analysée avec succès et ses coordonnées GPS (Latitude, Longitude) ont été retournées. |
| (400) G_GEO_BAD_REQUEST | La demande n'a pu être analysée avec succès. |
| (500) G_GEO_SERVER_ERROR | La demande n'a pu être traitée avec succès. La raison exacte de l'échec est inconnue. |
| (601) G_GEO_MISSING_QUERY | Le paramètre "q" de la requète HTTP est manquant ou n'a aucune valeur. Pour les demandes de "géocodage", cela signifie qu'une adresse vide a été indiquée dans la requète. Pour les demandes de directions, cela signifie qu'aucune question n'a été indiquée dans la requète. |
| (601) G_GEO_MISSING_ADDRESS | Synonyme de G_GEO_MISSING_QUERY. |
| (602) G_GEO_UNKNOWN_ADDRESS | Aucun lieu géographique correspondant à l'adresse indiquée n'a pu être trouvé. Cela peut être dû au fait que l'adresse est relativement nouvelle, ou qu'elle est peut être incorrecte. |
| (603) G_GEO_UNAVAILABLE_ADDRESS | Les coordonnées GPS (Latitude, Longitude) pour l'adresse donnée ou l'itinéraire demandé n'ont pu être retournées pour des raisons légales ou contractuelles. |
| (604) G_GEO_UNKNOWN_DIRECTIONS | GDirections n'a pas pu calculer d'itinéraire entre les points mentionnés dans la requète. Soit parce qu'il n'y a aucun itinéraire disponible entre les deux points, soit parce que nous ne disposons pas des données couvrant cette région. |
| (610) G_GEO_BAD_KEY | La clef indiquée est invalide ou n'est pas attribuée au domaine pour lequel elle a été donnée. |
| (620) G_GEO_TOO_MANY_QUERIES | Le nombre de requètes, pour la clef donnée, a dépassé le quota des demandes autorisées pour une période de 24 heure. |
La deuxième est un code de précision (de 1 à 8)
Si vous faite une demande sur une ville, sans nom de rue vous aurez une valeur plus faible que si vous demander aussi une rue
| Code | Description |
| 0 | Localisation impossible. |
| 1 | Niveau d'exactitude : Pays. |
| 2 | Niveau d'exactitude : Région (état, province, préfecture, etc.). |
| 3 | Niveau d'exactitude : Région secondaire(comté, municipalité, etc.). |
| 4 | Niveau d'exactitude : Ville (ville, village). |
| 5 | Niveau d'exactitude : Code (code postal). |
| 6 | Niveau d'exactitude : Rue. |
| 7 | Niveau d'exactitude : Intersection. |
| 8 | Niveau d'exactitude : Adresse. |
La troisième est la latitude
La dernière est la longitude
Une variante permet de récupérer une fichier xml. Il suffit de changer csv par xml dans la requete. On a alors quelques informations complémentaires
comme la région et le département.
dimanche 4 mai 2008
Les processeurs coldfire
La famille des processeurs coldfire a été conçue par motorola. Il s'agit d'une puce de type risc dont le jeu d'instruction est inspirée du 68000. D'ailleur le tout premier coldfire etait compatible avec le 68040. Les coldfires suivant contenaient un jeu d'instruction simplifié par rapport à l'original.
Il existe de nombreuses variantes de ce processeur. Le 5407 contient des périphériques de base comme des ports parallèles, séries et I2C. D'autres versions plus avancées contiennent des périphériques PCI, USB, ethernet et bus CAN. On trouve aussi de nombreux outils libres comme gcc ou le Coldfire Emulator. On peut aussi faire fonctionner linux dessus.
uCLinux et Coldfire
Coldfire Emulator
Le bus I2C
Le bus I2C ( Inter Integrated Circuit ) a été inventé par Philips semiconductors pour simplifier l'interconnection de dispositifs électroniques controlés par un micro-controleur. Son usage initial était les domaines de l'électronique grand public comme la télévision, la vidéo ou le son.
Il s'agit d'un bus série, ce qui explique que la partie électrique est très simple, puisque que l'on a un signal d'horloge et un signal données/adresses. Le nombre d'adresses est 127 ce qui semble peu, mais reste suffisant pour la plupart des applications.
De nos jours ce bus est présent dans les pc pour le contrôle de carte TV par exemple (le tuner). On le trouve aussi dans de nombreux micro-contrôleurs.
Télécharger des objets
![]()
Après le téléchargement de fichiers numériques, voici comment télécharger des objets physiques. Non, il ne s'agit pas d'une forme avancée de site de vente, qui viendrait vous livrer en moins de 30 minutes, mais d'un projet de université de Cornell pour la réalisation d'une imprimante 3D. L'aspect intérressant c'est que tous les plans et schémas de réalisation sont téléchargeables sur leur site en "open source". La documentation et les exemples de réalisations sont fournis.
à voir
fab@home
