Einführung in PIC16F17146
Der PIC16F17146 ist ein Mikrocontroller-Chip, der zur PIC16F-Familie gehört, die für ihre hohe Leistung und ihren geringen Stromverbrauch bekannt ist. Er wird häufig in einer Vielzahl von elektronischen Geräten verwendet, beispielsweise in Unterhaltungselektronik, Automobilanwendungen und industriellen Steuerungssystemen. Der PIC16F17146 bietet eine Vielzahl von Funktionen, darunter mehrere Kommunikationsschnittstellen, Analog-Digital-Wandler und reichlich Speicherplatz für Programmbefehle und Daten. Dank seiner flexiblen Architektur und seiner umfangreichen Peripheriegeräte ermöglicht dieser vielseitige Chip Entwicklern die einfache Erstellung anspruchsvoller Anwendungen. Er kann beispielsweise in Automobilsystemen zur Steuerung von Motorfunktionen oder in Smart-Home-Geräten zur Verwaltung verschiedener Hausautomatisierungsaufgaben eingesetzt werden.

PIC16F17146 Merkmale
- C-Compiler-optimierte RISC-Architektur
- Verbesserter Midrange-Kern mit 49 Befehlen, 16 Stack-Ebenen
- Flash-Programmspeicher mit Selbstlese-/Schreibfunktion
- Low-Current Power-on Reset (POR)
- Programmierbarer Brown-Out-Reset (BOR) mit schneller Wiederherstellung
- Low-Power-Brown-Out-Reset (LPBOR)
- Standby- und Ruhemodus mit geringem Stromverbrauch
- Fenster-Watchdog-Timer (WWDT)
- Peripheriemodul-Deaktivierung (PMD)
- Peripherie-Pin-Auswahl (PPS)
- Erweiterter Ein-/Aus-Reset
- Konfigurierbarer Einschalt-Timer (PWRT)
PIC16F17146 Spezifikation
| Attribute | Value |
|---|---|
| Model | PIC16F17146 |
| Architecture | RISC |
| Temperature Range | -40°C to 85°C |
| Frequency | up to 32MHz |
| Voltage | 1.8V to 5.5V |
| Size | 6.5 x 9.4 x 1.5mm |
| Memory | up to 28 KB |
| EEPROM | up to 256 Bytes |
| SRAM | up to 2 KB |
| Timer | 3 x 16-bit, 3 x 8-bit |
| PWM | 4 x 16-bit |
| CLC | 4 |
| DAC | 2 x 8-bit |
| ADC | 1 x 12-bit |
| USART | 1 |
| I2C | 1 x 7/10-bit |
| SPI | 1 |
| Operational Amplifier | 1 |
| I/O Port | up to 35 pins |
| Package | 14-Pin PDIP, SOIC, TSSOP; 16-Pin VQFN; 20-Pin PDIP, SOIC, SSOP, VQFN |
Wie programmiert man das PIC16F17146 Curiosity Nano Development Board?

Erforderliche Tools:
- MPLAB® X Integrierte Entwicklungsumgebung (IDE)
- PIC16F17146 Curiosity Nano Board *1
- USB-Kabel * 1
PIC16F17146 Curiosity Nano – LED-Blink-Test
Laden Sie zunächst die MPLAB X IDE v6.10 von der Microchip-Website herunter und installieren Sie sie:
https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide#


Nach der Einrichtung der MPLAB® X IDE sehen wir eine benutzerfreundliche Oberfläche. Wenn Sie Anfänger sind, stehen Ihnen einige Tutorials für den Einstieg zur Verfügung.
Fahren Sie mit unserem Projekt fort und klicken Sie auf „Datei > Neues Projekt“, um ein neues Projekt zu erstellen.

In diesem Schritt wählen wir „Microchip Embedded > Standalone Project“ (Microchip Embedded > Eigenständiges Projekt). Dabei wird eine von der IDE generierte Makefile verwendet, um Ihr Projekt zu erstellen.

Wählen Sie als Nächstes das Gerät „PIC16F17146” und das dazugehörige Tool aus.

Wählen Sie die Compiler-Toolchains für Ihr Entwicklungsboard aus.

Nachdem Sie die oben genannten Schritte abgeschlossen haben, klicken Sie auf die Schaltfläche „MCC“, um den Programmcode zu konfigurieren.

Wählen Sie im „MCC Content Manager Wizard“ einen Inhaltstyp für Ihr Projekt aus. Wenn Sie sich nicht sicher sind, welchen Sie wählen sollen, lesen Sie bitte die offiziellen Details.

Um einen schnellen Start der MCC-Funktion zu gewährleisten, können Sie diese auf den Offline-Modus einstellen.

Bevor Sie die E/A konfigurieren, lesen Sie bitte sorgfältig den Schaltplan des PIC16F17146 Curiosity Nano Development Board. Aus dem Schaltplan geht Folgendes hervor:
Die I/O leuchtet auf, wenn RC1 einen niedrigen Pegel ausgibt; IO hat keinen externen Pull-up-Widerstand, sodass der On-Chip-Pull-up konfiguriert werden kann und der Port nach dem Drücken ein Signal mit niedrigem Pegel auslöst.

Die endgültige Konfiguration sieht wie folgt aus. Bei dieser Konfiguration ist die LED standardmäßig eingeschaltet. Wenn Sie die LED standardmäßig ausschalten möchten, können Sie das entsprechende Start High aktivieren, d. h. der IO-Ausgang ist beim Einschalten hoch.

Wenn wir die I/O-Interrupt-Funktion nicht verwenden, ist die Konfiguration hier beendet. Klicken Sie auf „Generieren“, um den Code zu generieren.

Beim Schreiben von Code können wir die Funktion zur automatischen Vervollständigung von Code verwenden. Die Details sind wie folgt:

Automatische Popup-Auslöser für C/C++-Bezeichner:
.;->;.*;->*;::;new ;A;a;B;b;C;c;D;d;E;e;F;f;G;g;H;h;I;i;J;j;K;k;L;l;M;m;N;n;O;o;P;p;Q;q;R;r;S;s;T;t;U;u;V;v;W;w;X;x;Y;y;Z;z;_;
Schreiben Sie den Code im Hauptteil der Schleife wie folgt:
while(1)
{
if(BUTTON_GetValue()==0)
{
while(BUTTON_GetValue()==0);
LED_Toggle();
}
}
Klicken Sie auf die Schaltfläche „Ausführen“, um das LED-Programm zu kompilieren und auf das PIC16F17146 Curiosity Nano-Entwicklungsboard zu brennen.

Kehren Sie anschließend zur Registerkarte „MCC“ zurück und fügen Sie die Verzögerungsfunktion zum Projekt hinzu. Klicken Sie dazu einfach auf „Geräteressourcen“ > Timer > „DELAY“. Klicken Sie anschließend auf die Schaltfläche „Generieren“.

Nun geben wir den Buchstaben „DE“ in main.c ein und die Verzögerungsfunktion wird angezeigt.

Unsere Verzögerungscodes lauten wie folgt, einer in Mikrosekunden und einer in Millisekunden:
while(1)
{
LED_Toggle();
DELAY_milliseconds(500);
}
Speichern und starten Sie dieses Programm. Sie werden sehen, dass die LED auf unserer Entwicklungsplatine im 1-Sekunden-Takt zu blinken beginnt.
Reduzierung des Stromverbrauchs mit der PIC16F17146-Serie
Viele der heutigen Embedded-Designs umfassen analoge Systeme, sei es in Form von Sensoren, Verstärkern, Datenwandlern oder anderen analogen Modulen. Diese Designs sind häufig batteriebetrieben, um den Verbrauchern den Alltag mit Elektronikgeräten zu erleichtern. Die Batterielebensdauer stellt jedoch eine Herausforderung für die Entwickler dar, da analoge Signale digitalisiert und verarbeitet werden müssen, was für batteriebetriebene Anwendungen nicht ideal ist. Im Folgenden werden mehrere Möglichkeiten zur Reduzierung des Stromverbrauchs aufgeführt:
Kernunabhängige Peripheriegeräte (CIP)
Mit der MCU-Serie PIC16F17146 können viele analoge Designs die Herausforderungen im Bereich des Stromverbrauchs bewältigen. PIC®- und AVR®-Bausteine bieten verschiedene Core Independent Peripherals (CIP). CIPs sind dedizierte Hardware, die unabhängig von der Zentraleinheit (CPU) betrieben werden kann. Da PIC- und AVR-Geräte über zahlreiche CIPs verfügen, können diese verwendet werden, um andere Aufgaben von der CPU zu übernehmen, während sie sich um Sensorschnittstellen, Wellenformsteuerung, Zeitsteuerung/Messung und vieles mehr kümmern. Dadurch kann das System im Energiesparmodus betrieben werden, was zu einer allgemeinen Reduzierung des Stromverbrauchs des Designs führt.
Analog-Digital-Wandler mit Rechenfunktion (ADCC)
Eines der analogen Peripheriegeräte, das Energiesparmöglichkeiten bietet, ist unser Analog-Digital-Wandler mit Rechenfunktion (ADCC). Die CPU verfügt über mehrere Energiesparmodi, um den Gesamtstromverbrauch zu reduzieren. Eine der Energiesparfunktionen der MCU-Serie PIC16F17146 ist der SLEEP-Modus, in dem der größte Teil der MCU ausgeschaltet ist, wodurch weniger Strom verbraucht wird und das Messrauschen während der ADC-Wandlung reduziert wird. Der ADCC verfügt über einen speziellen Oszillator, der den Betrieb der Hardware im Schlafmodus ermöglicht. Wenn ein Wakeup-Trigger aktiviert wird, nimmt die CPU kurz darauf den Betrieb wieder auf.
Leerlaufmodus und Doze-Modus
Weitere Energiesparmodi, die die MCUs der Serie PIC16F17146 bieten, sind der Leerlaufmodus und der Doze-Modus. Im Leerlaufmodus stoppt die CPU alle anderen Vorgänge, während die Peripheriegeräte aktiv bleiben, und im Doze-Modus läuft die CPU mit einer reduzierten Befehlstaktfrequenz.
Peripheriemodul deaktivieren (PMD)
Peripheral Module Disable (PMD) ist eine weitere Funktion der MCU. Selbst wenn sie nicht aktiviert sind, verbrauchen ungenutzte Peripheriegeräte eine geringe Menge an parasitärer Energie. Durch Aktivieren von PMD können Benutzer alle ungenutzten Peripheriegeräte aktivieren oder deaktivieren. Durch Deaktivieren dieser Peripheriegeräte arbeitet die MCU mit der geringstmöglichen Leistungsaufnahme, wodurch sich ihr Gesamtstromverbrauch reduziert.
In der Embedded-Entwicklung bieten die MCUs der Serie PIC16F17146 zusammen mit anderen 8-Bit-MCUs von Microchip Anwendern zahlreiche Optionen zur Optimierung des Stromverbrauchs von Embedded-Systemen. Weitere Informationen und Anregungen für die Umsetzung energiesparender Lösungen in Ihrem nächsten Design finden Sie in MPLAB® Discover, wo Sie eine Vielzahl von Projekten, darunter viele energiesparende Anwendungen, entdecken können.




