Par exemple un PIC10F200T
Pratiquement tous les codes que vous écrivez seront plus gros que cela, à moins que ce ne soit une puce à usage unique. Est-il possible de charger plus de mémoire programme depuis un stockage externe ou quelque chose de ce genre? Je suis juste curieux, je ne vois pas en quoi cela pourrait être très utile ... mais ça doit l'être.
microcontroller
pic
memory
storage
coder543
la source
la source
Réponses:
Vous les enfants, sortez de ma pelouse!
384 octets, c'est beaucoup d'espace pour créer quelque chose d'assez complexe dans l'assembleur.
Si vous remontez dans l’histoire jusqu’à l’époque où les ordinateurs avaient la taille d’une pièce, vous découvrirez des exploits artistiques vraiment étonnants exécutés à moins de 1 000 km.
Par exemple, lisez le classique Story of Mel - Un vrai programmeur . Certes, ces gars-là avaient 4096 mots de mémoire à jouer, les infidèles décadents.
Jetez également un coup d'œil à certaines des anciennes compétitions de demoscene où le défi consistait à insérer une "intro" dans le bloc-notes d'une disquette, les cibles typiques étant 4k ou 40k et parvenant généralement à inclure de la musique et de l'animation.
Modifier pour ajouter : vous pouvez implémenter la première calculatrice scientifique au monde à 100 $ en 320 mots.
Éditer pour les jeunes non:
la source
Les microcontrôleurs sont suffisamment bon marché pour être souvent utilisés pour faire des choses très simples qui, jadis, auraient probablement été réalisées avec une logique discrète. Des choses vraiment simples. Par exemple, on peut souhaiter qu'un périphérique active une sortie toutes les cinq secondes, plus précisément qu'une minuterie 555 ne pourrait le faire.
Ce serait une application réelle et utilisable, avec moins de 32 mots (48 octets) d’espace de code. On pourrait facilement ajouter quelques options pour que certaines broches d’E / S contrôlent les options de minutage tout en conservant beaucoup d’espace libre, mais même si la puce correspondait exactement à ce qui est présenté ci-dessus, elle pourrait toujours être moins chère et plus facile que toute autre solution utilisant la technologie discrète. logique. En passant, les
clrwdt
instructions pourraient être déplacées dans le sous-programme, mais cela rendrait les choses moins robustes. Comme indiqué, même si un problème entraînait la corruption de la pile d’adresses de renvoi, le chien de garde ne serait pas alimenté tant que l’exécution ne retournerait pas à la boucle principale. Si cela ne se produit jamais, le chien de garde réinitialisera la puce après quelques secondes.la source
clrwdt
instructions. Ce type de compteur n’est pas le plus sûr possible, mais une attention particulière est accordée aux questions de sécurité (par exemple, éviterclrwdt
un sous-programme)."SEULEMENT" 384 octets?
Il y a longtemps, j'avais pour tâche d'écrire (par moi-même) un système d'exploitation complet pour un ordinateur spécialisé destiné à l'industrie de la gestion des navires, des pipelines et des raffineries. Le premier produit de ce type, basé sur la norme 6800, était en cours de mise à niveau vers la version 6809; elle souhaitait qu'un nouveau système d'exploitation vienne avec le système 6809 afin d'éliminer les coûts de licence du système d'exploitation d'origine. Ils ont également augmenté la taille de la rom de démarrage à 64 octets, au lieu de 32. Si je me souviens bien - il y a environ 33 ans! - J'ai convaincu les ingénieurs de me donner 128 octets afin de pouvoir mettre tous les pilotes de périphérique du système d'exploitation sur la rom et de rendre ainsi le périphérique plus fiable et polyvalent. Cela comprenait:
Oui, tous ces éléments étaient aussi simples que possible, et optimisés à la main pour supprimer tous les cycles superflus, mais parfaitement réparables et fiables. Oui, j'ai tout concocté dans les octets disponibles - oh, il a ÉGALEMENT configuré la gestion des interruptions, les différentes piles et initialisé le système d'exploitation temps réel / multitâche, a invité l'utilisateur à choisir les options de démarrage et a démarré le système.
Un ami à moi qui est toujours affilié à la société (son successeur) m'a dit il y a quelques années que mon code est toujours en service!
Vous pouvez faire beaucoup avec 384 octets ...
la source
Vous pouvez l'utiliser pour de très petites applications (par exemple , démarrage retardé du PSU , remplacement de la minuterie 555 , commande à base de triac , clignotement des voyants, etc.) avec un encombrement inférieur à celui nécessaire avec des portes logiques ou une minuterie 555.
la source
J'ai conçu un capteur d'humidité pour les plantes qui surveille la quantité d'eau de la plante et fait clignoter une LED si la plante a besoin d'eau. Vous pouvez faire en sorte que le capteur connaisse le type d’installation et modifie ainsi ses paramètres pendant le fonctionnement. Il détecte une basse tension sur la batterie. J'ai manqué de mémoire flash et de mémoire vive, mais j'ai pu tout écrire en code C pour que ce produit fonctionne parfaitement.
J'ai utilisé le pic10f que vous mentionnez.
Voici le code que j'ai créé pour mon capteur d'eau de plante. J'ai utilisé le pic10f220 car il a un module ADC, il a la même mémoire que le pic10f200, je vais essayer de trouver le schéma demain.
Le code est en espagnol, mais il est très simple et devrait être facilement compris. Lorsque le Pic10F sort du mode veille, il se réinitialise. Vous devez donc vérifier s’il s’agit d’un PowerUp ou d’une réinitialisation et agir en conséquence. Le réglage de l’usine est gardé en mémoire, car il n’est jamais vraiment mis hors tension.
PRINCIPAL C
MAIN.H
Faites-moi savoir si vous avez des questions, je vais essayer de répondre en fonction de ce que je me souviens. J'ai codé cela il y a plusieurs années, alors ne vérifiez pas mes compétences en codage, elles se sont améliorées :).
Note finale J'ai utilisé le compilateur Hi-Tech C.
la source
Une chose que je n'ai pas encore vue mentionnée: le microcontrôleur que vous avez mentionné ne coûte que 0,34 USD l'unité par 100. Ainsi, pour les produits bon marché et fabriqués en série, il peut être judicieux de passer au problème de codage supplémentaire imposé par une unité aussi limitée. La même chose peut s'appliquer à la taille ou à la consommation d'énergie.
la source
Lorsque j'étais au lycée, un enseignant m'a insisté sur le fait qu'il était trop difficile pour une étudiante telle que moi de réduire l'intensité de la lumière.
C'est pourquoi j'ai passé beaucoup de temps à apprendre et à comprendre la gradation de la lumière en phase avec des triacs et à programmer le 16C84 à partir d'une puce pour réaliser cet exploit. J'ai fini avec ce code d'assemblage:
Bien sûr, vous devrez modifier cela pour la puce que vous mentionnez, et peut-être ajouter une routine série bon marché pour l’entrée puisque votre puce n’a pas de port 8 bits à écouter, mais l’idée est qu’un travail apparemment complexe peut être fait dans très peu de code - vous pouvez insérer dix copies du programme ci-dessus dans le 10F200.
Vous pouvez trouver plus d’informations sur le projet sur ma page Light Dimming . D'ailleurs, je n'ai jamais montré cela à mon professeur, mais j'ai fini par installer plusieurs appareils d'éclairage pour mon ami DJ.
la source
Il y a des années, j’ai écrit un contrôleur de température avec une E / S série (bourdonnant l’E / S série car la MCU n’avait pas d’UART) et un interpréteur de commandes simple pour communiquer avec le contrôleur. MCU était un MC68HC705K1 de Motorola (maintenant Freescale) qui disposait de 504 octets de mémoire de programme (OTPROM) et d’environ 32 octets de RAM. Pas aussi peu que le PIC que vous avez mentionné, mais je me souviens d’avoir encore de la ROM. Il me reste quelques unités assemblées, 17 ans plus tard; veux en acheter un?
Alors oui, cela peut être fait, au moins en assemblée.
Dans tous les cas, j’ai récemment écrit des programmes C très simples qui auraient probablement pu s’intégrer dans les 384 octets lorsqu’ils ont été optimisés. Tout ne nécessite pas un logiciel volumineux et complexe.
la source
Vous pouvez écrire une LED clignotante avec une mémoire programme de 384 octets, voire plus.
Autant que je sache, il n'est pas possible d'étendre la mémoire du programme avec une puce externe (sauf si vous construisez un interpréteur ASM complet dans les 384 octets , ce qui serait lent). Il est toutefois possible d'étendre la mémoire de données avec une puce externe (EEPROM, SRAM).
la source
C'est en fait pire que vous ne le pensez. Votre page Mouser liée est source de confusion quand elle spécifie que ce processeur possède 384 octets de mémoire programme. Le PIC10F200 dispose en réalité de 256 12 bits mots de de mémoire programme.
Alors, que pouvez-vous faire avec ça? Le jeu d'instructions PIC 12 bits utilisé par le PIC10F20 périphériques x est constitué d'instructions d'un seul mot. Par conséquent, après avoir soustrait quelques instructions pour la configuration du processeur, vous disposez de suffisamment d'espace pour un programme d'environ 250 étapes. Cela suffit pour beaucoup d'applications. Je pourrais probablement écrire un contrôleur de machine à laver dans ce genre d'espace, par exemple.
Je viens de regarder les compilateurs PIC C disponibles et il semble qu'environ la moitié d'entre eux n'essayent même pas d'émettre du code pour un PIC10F200. Ceux qui le font émettent probablement tellement de code passe-partout que vous ne pourrez peut-être écrire qu'un clignotant à DEL dans l'espace restant. Vous voulez vraiment utiliser le langage assembleur avec un tel processeur.
la source
agitant ma canne dans ma journée, nous avons dû graver nos propres morceaux de sable!
En 1976 (ou à peu près), le système Atari 2600 VCS était l’une des «plateformes de jeux vidéo» les plus populaires de l’époque. Dans ce document, le microprocesseur (MOSTEK 6507) fonctionnait à environ 1 MHz et disposait de 128 octets de RAM **.
Un deuxième exemple de microcontrôleur dont la RAM est extrêmement limitée (~ 128 octets) est un PIC12F utilisé sur un convertisseur continu-continu. Ce micro devait également utiliser un langage d'assemblage pour pouvoir fonctionner.
la source