PicChess (8 / 8 étapes)

Étape 8: Routine vidéo

je décide de garder cette partie loin du reste de l’instructable parce que c’est la routine qui génère la vidéo, il peut devenir source de confusion. Je vous recommande de lire les parties suivantes de la feuille de données de ce micro :

Le signal vidéo, nous devons générer est composé de trois parties : le signal de synchronisation horizontale (TTL 0v - 5v), la synchronisation verticale (TTL 0v - 5v) et les signaux de trois couleurs (rouge vert bleu, 0v analogique - 0,7 v). Comme l’image est choisie pour être monochromatique, les trois lignes de couleur sont reliés entre eux et peuvent seulement supposer deux niveaux. Les captures d’écran la dernière image reçue est enregistrée à l’interne et l’afficher sur l’écran du moniteur, chacune de ces images est appelée un cadre. Notre mission est de créer ces cadres dans la fréquence à laquelle le moniteur consomme. Les images sont « peint » sur l’écran comme indiqué dans le premier tableau, ligne par ligne, à droite, tout comme la lecture.

Chaque nouvelle image il est signalé par un signal, appelé l’impulsion de synchronisation verticale. Un autre signal appelé la synchronisation horizontale, génèrent des impulsions continues. L’impulsion horizontale ne s’arrête jamais, mais les premiers et le derniers impulsions dans un cadre sont ignorées par le récepteur. Les 800 impulsions horizontales au milieu d’un cadre sont ceux qui indiquent les lignes qui sont afficher dans l’écran. À un moment donné entre les bords du signal horizontal la couleur de chaque pixel sur cette ligne est mises est mis dans la ligne RVB (noir = 0v, 0,7 v = blanc). Le choix d’une horloge de 40 MHz facilite la génération du signal vidéo parce que la fréquence de chacune de ces pixels est 40MHz pour une résolution de 800 x 600. Chaque pixel est sérialisée dans la mémoire tampon vidéo par le module SPI, chaque bit de la mémoire tampon vidéo est étiré pour remplir quatre pixels.

Le module vidéo est commandé par la minuterie 2 qui est programmé pour déborder à exactement la fréquence du signal de synchronisation horizontale. Pour générer ce signal à la sortie de comparer le module sert à mettre une épingle l’ordinateur automatiquement. L’interruption du Timer 2 est utilisée pour décider si c’est le début d’une nouvelle monture, contrôler le moment où le signal vertical. L’interruption qui contrôle le signal de synchronisation verticale prend un certain temps à courir et cela pourrait entraîner des problèmes dans la synchronisation de trame, pour remédier à l’horizontale ce signal de synchronisation a également ce délai ajouté à cela, laissant les deux signaux synchronisés.

Avec ces deux signaux synchronisés correctement, nous avons déjà une trame synchronisée. Nouveau, nous avons besoin peindre l’image. Le module SPI est utilisé pour sérialiser un mot (16 bits) peu à peu à travers une broche micro. Chargement du module directement prendrait presque tout le temps processeur et ne serait pas viable. Un canal DMA est ensuite utilisé pour transférer un petit tampon « ligne » à chaque ligne doit être sérialisé (lire « impulsion de synchronisation horizontale »). La mémoire tampon doit être chargé ligne de départ du tampon vidéo avant chaque ligne de la routine d’interruption TMR2, qui se trouve juste avant une nouvelle ligne. Et avant chaque transfert DMA doit être activée au bon moment pour commencer à sérialiser les bits.

Lorsque vous utilisez le module SPI propre IRQ pour le DMA il y a un problème, après l’IRQ et avant le DMA transfert il y a un délai, qui génère un pixel de large chaque 16 pixels. Pour résoudre ce problème consiste à générer une IRQ chronométrée pour demander le DMA pour charger le SPI.

Pour générer cette IRQ chronométrée un autre module DMA et un module d’OC sont reliés entre eux. Le DMA modifier le temps d’interruption de la production par rapport en transférant un tampon. Lorsque le co a une interruption, il déclenche le DMA, recevoir un nouveau temps d’interrompre et de continuer la boucle.

Que pour transmettre une ligne vidéo (200 pixels), le processeur seulement doit charger la ligne tampon avant chaque ligne. La ligne de la mémoire tampon peut être complètement éliminée si ce micro DMA pourrait couvrir toute la RAM (c’est limité à seulement 2K) de lecture directement à partir de la mémoire tampon vidéo. La seconde image est essayer d’expliquer cela.

Articles Liés