Le programme en assembleur est commenté chaque fois que nécessaire. Le Fichier principal se nomme Camrecorder.asm, il est accompagné de 4 fichiers de bibliothèques :
-
I2C_cam.asm qui gère de manière logicielle le bus I2C, étant donné que le BUS hard sur le micro est occupé par le disque dur.
-
IDE_cam.asm se charge de prendre en charge les opérations de lecture/écriture sur le disque dur.
-
Uart_cam.asm qui simule un second port RS232 pour la communication avec la caméra.
-
Math_cam.asm qui est constitué de quelques routines mathématiques nécessaires au fonctionnement de Camrecorder.
Pensez à mettre ses fichiers ainsi que celui de définition "M32def.inc" dans le même répertoire.
Créez un nouveau projet sous AVR studio et flashez avec le fichier .Hex obtenu. La programmation des fusibles de l'ATMEGA32 est présentée dans la section correspondante.
Il serait beaucoup trop long et fastidieux de développer totalement le fonctionnement point par point du programme. Cependant voici quelques explications :
Après la mise sous tension, le programme effectue la classique initialisation des périphériques du microcontrôleur ainsi que celle des variables système. Dans le même temps le module caméra est paramétrée pour fonctionner à 115200 Bps
Ensuite le programme va vérifié si le disque dur connecté est vierge ou à déjà fonctionné au paravent. Un disque déjà utilisé comporte la trame de caractère "Camrecorder V1.0" en tout début de secteur 1.
- Si le disque est nouveau ou ne contiens pas la chaîne de caractères mentionnée au paravent, le programme le formate suivant une architecture bien précise; Tout d'abord il crée dans différents secteurs les informations "par défaut" pour le fonctionnement de Camrecorder. . Le secteur de boot contiens une sauvegarde des informations inhérentes au disque dur et se termine par la même chaîne de caractères qui compose son début.

Le second est constitué de la chaîne d'exclusions horaire :

une journée représente une successions de bit représentant chacun une tranche d'un quart d'heure
Dans le cas ou le média est reconnu valide et prêt à fonctionner, le logiciel charge en mémoire RAM toutes les informations contenues dans les secteurs de boot en respectant l'architecture suivante :

Ensuite une vérification du secteur courant, sauvegardé dans la ram de l'horloge I2C à lieu. Un système de doublon augmente la fiabilité du système en cas de coupure de courant au moment même de l'inscription de ces informations. Dans le pire des cas Camrecorder ne restera pas en sommeil : une nouvelle configuration sera crée avec comme mode par défaut : magnétoscope.
Le logiciel effectue en permanence un contrôle du mode d'enregistrement choisi. En mode magnétoscope des snapshoot sont réalisés en un laps de temps le plus court possible. Le mode externe est composé de 2 sous menu :
- algorithmique : le déclenchement de l'enregistrement prends effet si une différence de taille d'image à lieu d'une capture à une autre.
- mode externe : un niveau bas sur PB7 déclenche immédiatement une succession de snapshoot.
Les informations JPEG sont inscrites les unes apres les autres. L'image se termine par un enregistrement spécifique qui marque la fin d'une capture et permet au programme de les reconnaître sans avoir besoin de lire toutes les informations : On retrouve la chaîne de caractères "snap" puis le numéro de secteur auquel débute l'image, un numéro de loop et enfin la date et l'heure de la capture.
Si vous souhaitez avoir plus de renseignements sur une partie précise du programme, merci de poser vos questions sur le forum.
|