Obtenga información sobre las interrupciones para algunos periféricos familiares: temporizadores, comunicación en serie y ADC.
Este artículo es una continuación de una conversación sobre los conceptos de concurrencia e interrupciones en microcontroladores.
En el artículo anterior, hablamos sobre las interrupciones de GPIO. Aquí, repasaremos brevemente el papel de GPIO en los microcontroladores y cubriremos el concepto de interrupciones en algunos periféricos familiares. Esto nos preparará para concluir nuestra serie con una comparación de interrupciones en tres MCU del mundo real.
GPIO significa entrada / salida de propósito general, a veces llamado controlador de E / S digital.
El GPIO es un periférico que está conectado a algunos de los pines del microcontrolador.
Los pines están conectados a registros en el microcontrolador que le permiten leer el valor o escribir el valor que desea en el pin en su programa. El valor en el pin está codificado como un bit (0 o 1). 0 usualmente significa un voltaje muy bajo y 1 usualmente significa un voltaje alto típicamente equivalente al voltaje de funcionamiento en el microcontrolador. Por ejemplo, para el STM32L151C6 que funciona a 3.3 V, la entrada se lee como 0 cuando el voltaje es menor a 0.99 V, y la entrada se lee como 1 cuando el voltaje es mayor a 2.31 V.
A continuación, hablaré brevemente sobre otros periféricos comunes y los tipos de interrupciones que podrían proporcionar.
La mayoría de los microcontroladores tienen al menos un temporizador. Los temporizadores contienen contadores que funcionan con la señal del reloj para proporcionar una sensación de tiempo transcurrido. El recuento del temporizador, además de la rapidez con la que cuenta el contador, determina cuánto tiempo ha transcurrido el "mundo real".
La mayoría de los temporizadores se pueden configurar para generar una interrupción cuando cuentan para un valor particular. Por lo general, hay interrupciones para dos casos.
El primer caso es desbordamiento. Si el contador está contando, entonces es cuando alcanza el valor máximo. Si está haciendo una cuenta regresiva, entonces es cuando alcanza el valor mínimo. Los diferentes microcontroladores están diseñados de manera diferente en la forma en que el contador se comporta después de alcanzar el desbordamiento. Algunas veces este comportamiento es configurable.
El segundo caso es cuando cuenta un valor específico del usuario. Independientemente del evento que causó la interrupción, generalmente habrá una bandera que se establece dentro del temporizador, otra que se establece dentro del controlador de interrupción y un vector de interrupción asociado con las interrupciones del temporizador. Puede haber más de un vector de interrupción para el temporizador, cada uno asociado con un evento diferente.
La mayoría de los microcontroladores también tienen comunicación en serie que les permite enviar mensajes a otros dispositivos. Por lo general, hay buffers de datos (a veces uno para enviar y otro para recibir).
Puede haber una interrupción para que la CPU sepa que los datos se acaban de recibir en el búfer de recepción. Puede haber una interrupción para que la CPU sepa que los datos, si se colocan en el búfer de envío, se han enviado con éxito, por lo que el búfer está listo para recibir nuevos datos.
Algunas comunicaciones tienen señales de que un dispositivo debe determinar primero quién puede enviar un mensaje. En este caso, puede haber una interrupción para que la CPU sepa que el otro dispositivo está listo para recibir o que el otro dispositivo tiene la intención de enviar datos.
Algunos microcontroladores vienen equipados con un convertidor analógico a digital que toma voltaje analógico que varía en un rango y se convierte en una representación binaria que el microcontrolador puede procesar más. El proceso de conversación lleva tiempo, por lo que generalmente hay una interrupción que le dice a la CPU que la conversión se realiza después de que la CPU ha iniciado una conversión.
En el próximo artículo, terminaremos nuestra discusión sobre las interrupciones para microcontroladores con una comparación de algunas MCU familiares.
Imagen destacada utilizada por cortesía de Gareth Halfacree [CC-BY 2.0].
ga('create', 'UA-1454132-1', 'auto'); ga('require', 'GTM-MMWSMVL'); ga('require', 'displayfeatures'); ga('set',{'dimension1':'embedded,digital-ics,power,connectors,embedded,engineering-consulting'}); ga('set',{'contentGroup1':'embedded,digital-ics,power,connectors,embedded,engineering-consulting'});
ga('set',{'dimension3':"October 03, 2019"});
ga('set',{'dimension4':"Philip Asare"});
ga('send', 'pageview');
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1808435332737507'); // Insert your pixel ID here. fbq('track', 'PageView'); fbq('track', 'ViewContent', { content_ids: ['embedded','digital-ics','power','connectors','embedded','engineering-consulting'], content_type: 'category'});
_linkedin_data_partner_id = "353081"; (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); } if(jstz.determine().name().indexOf("Europe") === -1) { showSocialCode(); // NOT EU } else { showSocialCode(); window.addEventListener("load", function () { window.cookieconsent.initialise({ "palette": { "popup": { "background": "#252e39" }, "button": { "background": "#14a7d0" } }, "type": "opt-out", "content": { "message": "This website uses tracking cookies to ensure you get the best experience on our website.", "href": "https://www.allaboutcircuits.com/privacy-policy/", "dismiss": "OK, GOT IT" }, onInitialise: function (status) { var type = this.options.type; var didConsent = this.hasConsented(); if (type == 'opt-out' && didConsent) { console.log("eu"); //showSocialCode(); } },
onStatusChange: function (status, chosenBefore) { var type = this.options.type; var didConsent = this.hasConsented(); if (type == 'opt-out' && didConsent) { console.log("eu"); //showSocialCode(); } },
onRevokeChoice: function () { var type = this.options.type; if (type == 'opt-out') { console.log("eu"); //showSocialCode(); } },
}) }); }
Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…
Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…
Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…
Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…
Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…
El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…