Ligne d'assistance
6
Programmation de microcontrôleurs
Il existe une différence majeure entre la programmation de microcontrôleurs et celle de PC. Bien que les outils de développement de microcontrôleurs basés sur le C soient de plus en plus populaires, pour les concepteurs qui privilégient un code efficace et préfèrent l'assembleur, ce langage reste le plus concis et le plus performant.
Pour la programmation des microcontrôleurs, le cadre de base peut être considéré comme globalement le même, et se divise généralement en trois parties : la partie d’initialisation (qui constitue la principale différence entre la programmation des microcontrôleurs et celle des PC), le corps de la boucle principale du programme et le gestionnaire d’interruptions, qui sont expliqués ci-dessous :
1. Initialisation :Pour la conception de tous les programmes MCU, l'initialisation est l'étape la plus fondamentale et la plus importante, qui comprend généralement les éléments suivants :
Masquer toutes les interruptions et initialiser le pointeur de pile :La partie initialisation ne souhaite généralement aucune interruption.
Effacer la mémoire vive (RAM) du système et afficher la mémoire :Bien que cela ne soit pas toujours absolument nécessaire, du point de vue de la fiabilité et de la cohérence, et notamment pour éviter les erreurs inattendues, il est recommandé de développer de bonnes habitudes de programmation.
Initialisation du port d'E/S :According to the application requirements of the project, set the input and output mode of the relevant IO port. For the input port, you need to set its pull-up or pull-down resistor; for the output port, you must set its initial level output to prevent unnecessary errors.
Paramètres d'interruption :For all interrupt sources that need to be used in the project, they should be turned on and the trigger conditions for the interrupt should be set, while redundant interrupts that are not used must be turned off.
Initialisation des autres modules fonctionnels :For all peripheral function modules of the MCU that need to be used, the corresponding settings must be made according to the requirements of the project application. For example, for UART communication, the Baud Rate, data length, verification method, and Stop Bit length need to be set. For the Programmer Timer, its clock source, frequency division number, and Reload Data must be set.
Initialisation des paramètres :After completing the initialization of the MCU hardware and resources, the next step is to initialize some variables and data used in the program. The initialization of this part needs to be designed according to the specific project and the overall arrangement of the program. For some applications that use EEPROM to save project prefabricated data, it is recommended to copy the relevant data to the RAM of the MCU during initialization to improve the program's access speed to data and reduce the power consumption of the system (in principle, accessing external EEPROM will increase the power consumption of the power supply).
2. Corps de la boucle principale du programme :La plupart des microcontrôleurs fonctionnent en continu pendant une longue période ; leur programme principal est donc généralement organisé en boucle. Pour les applications à modes de fonctionnement multiples, il peut y avoir plusieurs boucles, dont l’ordre est déterminé par des indicateurs d’état. Le programme principal est généralement structuré comme suit :
Procédure de calcul :Les programmes de calcul sont généralement gourmands en temps de calcul, c'est pourquoi nous nous opposons fermement à leur traitement par interruption, en particulier pour les opérations de multiplication et de division.
Programmes de traitement avec des exigences en temps réel faibles ou nulles ;
Show transfer procedure:Mainly aimed at applications with external LED and LCD Drivers.
3. Interrupt handler:Interrupt programs are mainly used to handle tasks and events with high real-time requirements, such as detection of external sudden signals, detection and processing of buttons, timing counting, LED display scanning, etc.
En temps normal, le programme d'interruption doit être aussi concis et court que possible. Pour les fonctions ne nécessitant pas de traitement en temps réel, un signal de déclenchement peut être activé dans l'interruption, permettant ainsi au programme principal d'exécuter les opérations correspondantes. Ceci est crucial, notamment pour les microcontrôleurs basse consommation et basse fréquence, qui doivent impérativement garantir une réponse rapide à toutes les interruptions.
4. Pour l'organisation des différents corps de tâches, les différents microcontrôleurs ont des méthodes de traitement différentes :
Par exemple, pour les applications utilisant des microcontrôleurs basse vitesse et basse consommation (Fosc = 32 768 Hz), notamment pour les appareils portables utilisant des écrans LCD classiques, la réactivité aux frappes clavier et l'affichage nécessitent des performances temps réel élevées. On utilise donc généralement des interruptions temporisées pour traiter les frappes clavier et l'affichage des données. En revanche, pour les microcontrôleurs haute vitesse (Fosc > 1 MHz), disposant du temps nécessaire pour exécuter la boucle principale du programme, il suffit de définir les indicateurs de déclenchement dans les interruptions correspondantes et de placer toutes les tâches dans le corps du programme principal pour exécution.
5. En programmation de microcontrôleurs, un point qui requiert une attention particulière est :
Il est nécessaire d'empêcher l'accès ou la modification simultanée d'une même variable ou donnée dans le corps du programme principal et celui d'une interruption. Une méthode efficace consiste à organiser le traitement de ces données dans un module et à déterminer, en fonction de l'état du drapeau de déclenchement, s'il convient d'effectuer des opérations sur ces données. Dans les autres parties du programme (principalement les interruptions), seuls les drapeaux de déclenchement des données à traiter sont activés. Ceci garantit un traitement des données prévisible et unique.
7
Résumé de la programmation des microcontrôleurs par un ingénieur
1,Prenez l'habitude de résumer. Résumer, c'est non seulement synthétiser vos apprentissages, mais aussi les réviser et les approfondir. Cela vous permettra également d'éviter de répéter les mêmes erreurs.
2,Avant de commencer à écrire un programme, il est essentiel de bien comprendre le projet, d'en avoir une vision globale et d'en définir la structure générale. Il est primordial de réfléchir attentivement à l'organisation du programme et de déterminer la structure la plus pertinente. Il est nécessaire d'analyser quel module réaliser en premier, les étapes spécifiques de ce module, la manière de nommer chaque fonction, les liens avec les autres modules, etc. Il est conseillé de prendre une feuille de papier et de noter les processus importants.
3,For modular programming in C language, you must first divide each module, program module by module, determine a sequence, follow the sequence, and then write the next module after the module is successful. For header files, write the module's header file after the module is written.
4,Do not ignore warnings when they appear. It means that there must be something unreasonable about the program. It is necessary to understand its source and find a solution. Be specific when looking for sources. You can search the Internet for information in this area, or ask others for advice. For example, the main function in another project was actually added to this project. There are actually duplicate function names. There are also reasons to analyze the experimental phenomena and progress step by step. There was also the wrong interface selected when defining the port. Sometimes, it’s good to take a break and think about it if you really can’t solve it. No matter how simple it is, you should pay attention to it, as there may be mistakes.
Dans le développement d'applications pour microcontrôleurs, des problèmes tels que l'efficacité du code, la résistance aux interférences et la fiabilité des microcontrôleurs restent des défis importants. Nous résumons ici plusieurs compétences fondamentales à maîtriser pour le développement de microcontrôleurs.
8
compétences en développement de microcontrôleurs
1.Comment réduire les bugs dans les programmes
Pour réduire les bogues des programmes, il convient tout d'abord de prendre en compte les paramètres de gestion hors plage suivants, qui doivent être considérés pendant le fonctionnement du système.
-
Paramètres physiques : Ces paramètres sont principalement des paramètres d’entrée du système, qui comprennent les paramètres d’excitation, les paramètres de fonctionnement pendant le traitement d’acquisition et les paramètres de résultat à la fin du traitement.
-
Paramètres de ressources : Ces paramètres concernent principalement les ressources des circuits, des dispositifs et des unités fonctionnelles du système, telles que la capacité de mémoire, la longueur de l’unité de stockage et la profondeur d’empilement.
-
Paramètres d'application : Ces paramètres apparaissent souvent comme conditions d'utilisation de certains microcontrôleurs et unités fonctionnelles. Paramètres de processus : Il s'agit des paramètres qui évoluent de manière ordonnée pendant le fonctionnement du système.
2.How to improve the efficiency of C language programming code
L'utilisation du langage C pour la programmation de microcontrôleurs est devenue incontournable dans le développement et l'application de ces derniers. Pour une efficacité optimale en programmation C, il est essentiel de bien maîtriser le compilateur C utilisé. Commencez par tester le nombre de lignes d'instructions en langage assembleur correspondant à chaque compilation C, afin d'évaluer précisément l'efficacité. Lors de vos futurs développements, privilégiez les instructions offrant la meilleure efficacité de compilation. Chaque compilateur C présentant des spécificités, l'efficacité de compilation peut varier. Avec un excellent compilateur C pour systèmes embarqués, la longueur du code et le temps d'exécution ne sont que 5 à 20 % supérieurs à ceux de la même fonction écrite en langage assembleur.
Pour les projets complexes aux délais de développement serrés, le langage C peut être utilisé, à condition de maîtriser parfaitement le langage C et le compilateur C du système microcontrôleur. Il est essentiel de porter une attention particulière aux types de données et aux algorithmes pris en charge par le système de compilation C. Bien que le C soit le langage de haut niveau le plus répandu, les systèmes de compilation varient d'un fabricant de microcontrôleurs à l'autre, notamment pour l'utilisation de certains modules fonctionnels spécifiques. Par conséquent, une méconnaissance de ces spécificités peut engendrer de nombreuses difficultés lors du débogage et réduire les performances d'exécution par rapport au langage assembleur.
3.How to solve the anti-interference problem of microcontrollerLe moyen le plus efficace de prévenir les interférences consiste à supprimer leur source et à bloquer leur propagation. Cependant, cela s'avère souvent difficile ; on ne peut donc que vérifier si la capacité anti-interférences du microcontrôleur est suffisante. Parallèlement à l'amélioration de la résistance aux interférences des systèmes matériels, la résistance aux interférences logicielle suscite un intérêt croissant en raison de sa conception flexible, de l'économie de ressources matérielles qu'elle permet et de sa grande fiabilité.
Le phénomène d'interférence le plus courant sur les microcontrôleurs est la réinitialisation. En cas d'emballement du programme, des interruptions logicielles et des chiens de garde peuvent être utilisés pour le ramener à l'état de réinitialisation. Par conséquent, la gestion de l'état de réinitialisation est primordiale pour qu'un logiciel de microcontrôleur résiste aux interférences.
En général, les microcontrôleurs possèdent des registres d'état permettant de déterminer la cause d'une réinitialisation. Il est également possible d'implémenter des registres d'état en mémoire vive (RAM). À chaque réinitialisation du programme, l'analyse de ces registres permet d'identifier la cause et d'exécuter directement le programme correspondant. Ainsi, le programme peut continuer à fonctionner sans interruption, et l'utilisateur ne s'aperçoit pas de la réinitialisation.
4.How to test the reliability of microcontroller systemUne fois la conception d'un système à microcontrôleur terminée, il existera différents éléments et méthodes de test pour différents produits de systèmes à microcontrôleur, mais certains doivent être testés :
- Tester l'intégralité du fonctionnement du logiciel du microcontrôleur
- Test de mise sous tension et hors tension
- Test de vieillissement
- Des tests tels que l'ESD et l'EFT
Il est parfois possible de simuler les dommages pouvant survenir lors de l'utilisation. Par exemple, frotter délibérément le port de contact du microcontrôleur avec le corps ou un vêtement pour tester sa résistance à l'électricité statique. Utiliser une perceuse électrique puissante à proximité du microcontrôleur permet de tester sa résistance aux interférences électromagnétiques.
In summary, single-chip microcomputer has become an important aspect of computer development and application. The important significance of single-chip microcomputer application is that it fundamentally changes the traditional control system design ideas and design methods.
Most functions that previously had to be implemented by analog circuits or digital circuits can now be implemented through software methods using microcontrollers. This kind of control technology in which software replaces hardware is also called micro-control technology, which is a revolution in traditional control technology.
De plus, lors du processus de développement et d'application, nous devons maîtriser les compétences et améliorer l'efficacité afin qu'il puisse être utilisé à des fins plus variées.
9
Résumé du fonctionnement de la puce
Les opérations sur la puce consistent principalement en des opérations sur ses registres. Chaque registre possède une adresse unique, mappée en mémoire ; une opération sur l'adresse correspondante est donc nécessaire. Pour comprendre le fonctionnement de la puce, il faut d'abord examiner le diagramme temporel, puis identifier les registres correspondants, définir les ports requis (qui seront accessibles par le programme) et enfin écrire les procédures d'écriture et de lecture.
Comment écrire des données dans la puce, comment lire des données et quel port utiliser pour l'entrée ou la lecture (le plus important).
Lorsqu'on connecte des puces via un bus, il est indispensable de comprendre le protocole de ce bus. La puce connectée au bus I2C contrôle principalement les autres puces via ce bus.
1,One 74hc595 in the lattice is used for column selection, and the other two are used for color selection. The lattice is equivalent to a collection of diodes,
La diode ne s'allume que lorsqu'une extrémité est à l'état haut et l'autre à l'état bas. En revanche, si une extrémité est sélectionnée différemment, différentes couleurs s'afficheront.
Sélection du mode de fonctionnement du temporisateur : les quatre bits de poids fort configurent le temporisateur T1, et les quatre bits de poids faible configurent T0. Les deux derniers bits de chaque mode déterminent ensuite le mode de fonctionnement. Lors de la configuration de deux temporisateurs, veillez à utiliser l’opérateur OU (|). En cas d’utilisation d’interruptions, assurez-vous de bien effacer les temporisateurs qui doivent l’être après l’entrée en interruption.
2,Serial port transceiver: The baud rate is generally set in mode 2 (automatic reloading to initial value). Because different devices have different data processing capabilities, setting the baud rate is mainly to take care of low-speed devices and to communicate with each other. The interrupt flag bit must be cleared by software. When setting the serial port interrupt, no matter which one is generated by sending or receiving, it can enter the interrupt function, so pay attention to setting the interrupt function. (Self-feeling generally sets a function, as a host computer or a slave computer).
Si vous utilisez une interruption pour envoyer des données, vous devez d'abord déterminer comment l'activer. Il est donc nécessaire d'effectuer une première envoi avant de pouvoir l'activer. Un seul octet peut être envoyé à la fois, et le bit suivant ne peut être envoyé qu'après l'activation de TI.
3,Le convertisseur PCF8591AD possède quatre canaux d'entrée. Lors de la lecture du PCF8591, le canal sélectionné permet de lire la tension d'entrée correspondante. Les données converties sont stockées dans la puce puis lues. La lecture commence par l'écriture de l'adresse de la puce, suivie de la sous-adresse du périphérique (0x40 | numéro de canal), puis des données lues.
4,Da conversion is to first write the device address into the chip, then write the sub-address (0x40), and then write the digital quantity to be converted. Device address chip information is introduced.
5,For the LCD display, after the data is written and displayed, it will always be displayed without continuous refresh. If you want to change it, you can only re-enter it.
6,For the ds1302 clock chip, when reading data, the first data is read at the falling edge of the eighth clock when writing data, and then prepares for the next output. Pay attention to the writing method of the program and the location of the return value.
7,Dans le DS1302, spécifiez d'abord le registre, puis écrivez-y les données. Le registre des données de la puce indique l'adresse. (Je ne comprends toujours pas bien le programme de protection en écriture. N'y a-t-il pas toujours des écritures ? Pourquoi la protection en écriture est-elle toujours activée ?)
(D'après la personne qui a expliqué précédemment, il est possible de définir un indicateur après l'initialisation. Si cet indicateur est présent, l'initialisation est inutile. Cependant, en cas de coupure de courant, la RAM du microcontrôleur ne peut pas sauvegarder cet indicateur. Il est donc possible d'utiliser la RAM du DS1302 pour le sauvegarder et le relire après la mise sous tension. Je suis moi-même débutant et je compte utiliser le DS1302 prochainement. Je ne sais pas si cette méthode est correcte et je ne l'ai pas encore mise en pratique. Merci de partager vos connaissances.)
8,Il est préférable de noter l'initialisation au cas où vous l'oublieriez. Il est parfois important de vérifier si, lors d'une lecture ou d'une écriture, le bit de poids faible ou le bit de poids fort est traité en premier ; cela peut être déterminé à partir du diagramme temporel.
9,For infrared transceiver, when receiving, it determines whether it is a high level or a low level based on the time between two falling edges. When writing a program, first use a timer to determine the time, save it, and then convert it into binary (read more about how to write this program, it is very good).
10,Moteur pas à pas : principalement utilisé pour la commutation. Le couple du moteur pas à pas diminue lorsque la vitesse de rotation augmente. Il est principalement utilisé pour l’alimentation automatique de pièces usinées sur des machines-outils. Il peut également être utilisé dans des applications de contrôle de haute précision.
Le moteur pas à pas est un dispositif à commande en boucle ouverte qui convertit des signaux d'impulsions électriques en déplacements angulaires ou linéaires. En l'absence de surcharge, la vitesse et la position d'arrêt du moteur dépendent uniquement de la fréquence et du nombre d'impulsions du signal, et ne sont pas affectées par les variations de charge. Lorsqu'un signal d'impulsion est reçu, le contrôleur du moteur pas à pas le fait tourner dans la direction définie selon un angle fixe, appelé « angle de pas ». La rotation s'effectue par pas successifs selon cet angle fixe. Le déplacement angulaire peut être contrôlé en ajustant le nombre d'impulsions pour un positionnement précis ; parallèlement, la vitesse et l'accélération de rotation du moteur peuvent être contrôlées en ajustant la fréquence des impulsions pour une régulation de vitesse.
11,Servo motor: (servo motor) refers to the engine that controls the operation of mechanical components in the servo system. It is an indirect transmission device that assists the motor. Servo motors can control speed and position accuracy very accurately, and can convert voltage signals into torque and rotational speed to drive control objects. The rotor speed of the servo motor is controlled by the input signal and can respond quickly. In the automatic control system, it is used as an actuator and has the characteristics of small electromechanical time constant, high linearity, starting voltage, etc. It can convert the received electrical signal into the angular displacement or angular velocity output on the motor shaft. They are divided into two categories: DC and AC servo motors. Their main feature is that there is no rotation when the signal voltage is zero, and the rotational speed decreases at a constant speed as the torque increases. DC motor: Large range, all on small cars.
Avertissement : Cet article est reproduit à partir de « International Electronic Business Information ». Il reflète uniquement l’opinion de son auteur et n’engage en rien Sacco Micro ni le secteur. Sa reproduction et son partage sont autorisés uniquement dans le respect des droits de propriété intellectuelle. Veuillez citer la source originale et l’auteur. En cas d’infraction, veuillez nous contacter afin que nous supprimions le contenu.
Numéro de téléphone de l'entreprise : +86-0755-83044319
Fax/FAX : +86-0755-83975897
Courriel : 1615456225@qq.com
QQ : 3518641314 Gestionnaire Li
QQ : 332496225 Gestionnaire Qiu
Adresse : Salle 809, Bâtiment C, Immeuble technologique Zhantao, n° 1079 avenue Minzhi, Nouveau district de Longhua, Shenzhen




粤公网安备44030002007346号