Handbuch PIC24/dsPIC-Mikrocontroller - Anne König - E-Book

Handbuch PIC24/dsPIC-Mikrocontroller E-Book

Anne König

0,0
19,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

16-Bit-PICs sind die perfekte Lösung, wenn Sie einfache Handhabung und eine große Anwendungsbreite bei Controllern suchen. Die Klasse der 16-Bit-PICs besitzt eine große Fülle von Typen, welche sich in ihrer Ausstattung und auch in einigen Punkten der Funktionalität unterscheiden. Der Schwerpunkt des Buches besteht darin, die gemeinsamen Eigenschaften verständlich zu machen. Alle Typen der 16-Bit-Klasse besitzen im Wesentlichen die gleiche Architektur, die gleiche Organisation der Speicher und vor allem die gleiche Sprache bis auf die DSP-Befehle, welche nur den dsPIC-Typen vorbehalten sind. Die dsPIC-Typen unterscheiden sich in ihren grundlegenden Eigenschaften nicht von den übrigen 16-Bit-Typen. Sie sind in ihrer Ausstattung auf schnelles Messen und auf schnelle Verarbeitung der Messergebnisse eingerichtet. Die DSP-Einheit ist nahtlos in die übrige Struktur eingebettet. Bei den Peripheriemodulen, die zunehmend an Bedeutung gewinnen, gibt es Varianten, auf die besonders hingewiesen wird. Das Grundprinzip beim Umgang mit den Peripheriemodulen ist aber immer ähnlich. Für die Beispiele werden vier typische Vertreter der verschiedenen Varianten verwendet: PIC24FJ128GA010 PIC24FJ256GB110 PIC24EP512GU810 dsPIC33FJ256GP710 Der praktische Umgang mit den Peripheriemodulen steht im Vordergrund der Beispiele. Hierbei sind oft feine Details zu beachten. Insbesondere die Verwendung der zugehörigen Interrupts erfordert einige Sorgfalt. Dieses Buch ist zur Anwendung der 16-Bit-PICs und dsPICs geschrieben. Es setzt aber grundlegende Kenntnisse über die Funktion von Mikrocontrollern voraus.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Inhaltsverzeichnis

1Die 16-Bit-PIC-Klasse

1.1Oszillatoren

1.1.1Auswahl des Systemtakts

1.1.2Umschalten des Systemtakts

1.1.3Fail Save Clock Monitor (FSCM)

1.2Datenspeicher

1.2.1Organisation des Datenspeichers

1.2.2Besondere Datenregister

1.3Programmspeicher

1.3.1Adressierung des Programmspeichers

1.3.2Aufteilung des Programmspeichers

1.3.3Lesen des Programmspeichers

1.3.4Löschen und Schreiben des Programmspeichers

1.4Power Management

1.4.1Taktfrequenz verringern

1.4.2Peripheriemodule abschalten

1.4.3Sleep-Modus

1.4.4IDLE-Modus

1.4.5DOZE-Modus

2PIC24-Assemblersprache

2.1Funktion der Befehle

2.2Überblick über die Befehle

2.3Form der Befehle

2.4Argumente

2.4.1Konstante Argumente

2.4.2Direkte Adressierung eines Fileregisters

2.4.3Direkte Adressierung eines W-Registers

2.4.4Doppelregister

2.4.5Indirekte Adressierung

2.4.6Befehle mit mehreren Argumenten

2.4.7Befehle mit direktem Fileregister

2.5Verzweigungsbefehle

2.5.1Argumente der Verzweigungsbefehle

2.5.2CALL und RCALL

2.5.3Bedingungsloser BRA-Befehl

2.5.4Bedingte BRA-Befehle

2.6Transferbefehle

2.6.1MOV-Befehle

2.6.2Austauschbefehle

2.6.3PUSH und POP

2.6.4TBLRD- und TBLWT-Befehle

2.7Arithmetische und logische Befehle mit einem Operanden

2.8Find-First-Befehle

2.9Arithmetische und logische Befehle mit zwei Operanden

2.10Befehle mit Bitargumenten

2.11REPEAT-Befehl

2.12Multiplikation

2.13Division

3DSP-Einheit (nur dsPIC)

3.1DO-Befehl

3.2Akkumulatoren ACCA und ACCB

3.3Sättigung der Akkumulatoren

3.4Überläufe

3.5DSP-Zahlenformate

3.6X- und Y-Datenbereiche

3.7DSP-Befehle mit Prefetch

3.7.1Prefetch-Operanden

3.7.2Prefetch-Sonderfall für euklidische Abstände

3.7.3Beschreibung der DSP-Befehle mit Prefetch

3.7.4Modulo-Adressierung

3.8DSP-Befehle ohne Prefetch (Akkumulatorbefehle)

3.9DSP-Anwendung

4Assemblercode und C

4.1Assemblercode in MPLAB C30/XC16 Files

4.1.1Built-in-Funktionen

4.1.2Erstellen von eigenen Assemblerunterprogrammen

4.1.3Inline-Assemblerzeilen im C30/XC16-Compiler

4.2Der C30/XC16-Compiler und sein ASM-Code

4.2.1Compileroptimierungen

4.2.2Beobachten des erzeugten Assemblercodes

4.2.3Erstes kleines Beispiel

4.2.4Datentransfer

4.2.5Multiplikation: 16 Bit • 16 Bit mit 32-Bit-Ergebnis

4.2.6Division: 16 Bit / 16 Bit

4.2.7Division: 32 Bit / 16 Bit

4.2.8Anwendungsbeispiel GPS-Positionsdaten

5Umgang mit den Peripheriemodulen

5.1Ausschalten und Abschalten der Peripheriemodule

5.2Initialisierung von Peripheriemodulen

5.3Programmtechnische Verfahrensweisen in C

6Interrupts

6.1Interrupt-Status-Flags

6.2Zulassen von Unterbrechungen

6.3Ablauf von Unterbrechungen

6.4Schachteln von Interrupts

6.5Interrupt-Prioritäten

6.6CPU-Priorität

6.7Interrupt-Vektoren

6.8Alternative Interrupt-Vektoren

6.9Traps

6.10Register des Interrupt-Systems

6.10.1INTCON1-Register

6.10.2INTCON2-Register

6.10.3IFS- und IEC-Register

6.10.4Prioritätsregister

6.11Initialisieren der Interrupts

6.12Schreiben der Interrupt-Routine

6.13Ablauf von Interrupt-Routinen

7DMA

7.1DMA-Speicher

7.2DMA-Transfer

7.3Adressierungsarten

7.4Register des DMA-Controllers

7.4.1DMAxCON-Register

7.4.2DMAxREQ-Register

7.4.3DMAxPAD-Register

7.4.4DMAxSTA- und DMAxSTB-Register

7.4.5DMAxCNT-Register

8I/O-Ports

8.1Funktionen der Portpins

8.2Eingänge und Ausgänge

8.3Register der I/O-Ports

8.3.1Zustandsregister PORTx und Latch-Register LATx

8.3.2Richtungsregister TRISx

8.3.3Open-drain-Register ODCx

8.3.4AD1PCFG- und ANSx-Register

8.4Interrupts durch Flanken an Portpins

8.5Nutzung der Portpins durch Peripheriemodule

8.6Peripheral Pin Select

8.7Zuordnungsprozedere für Ausgangsfunktionen

8.8Zuordnungsprozedere für Eingangspins

9Timermodule

9.1Register der Timermodule

9.1.1TxCON-Register

9.2Zählweise

9.2.1Beispiel TMRint010: Beobachtung von Timer-Interrupt und Timerreset

9.3Vorteiler

9.4Timertypen

9.4.1Typ A

9.4.2Typ B

9.4.3Typ C

9.5Funktion als Zähler

9.6Gated Timer

9.6.1Beispiel T2GATE010: Demonstration des Gated-Timer-Modus

9.7Lesen und Schreiben der Timerregister

9.832-Bit-Timerpaar

9.9Schreiben und Lesen von 32-Bit-Timern

10Watchdog Timer

10.1Einschalten des Watchdogs

10.2Überlaufperiode

10.3Rücksetzen des Watchdog Timers

10.4Watchdog-Fenster

11AD-Wandler

11.1Register der einfachen 10-Bit-AD-Wandler

11.1.1ADxCON1-Register

11.1.2ADxCON2-Register

11.1.3ADxCON3-Register

11.1.4AD1CHS-Register

11.1.5AD1CSSL-Register

11.2Konfiguration des AD-Wandlers

11.2.1Konfiguration der Pins als analoge Eingänge

11.2.2Festlegen der Referenzspannung

11.2.3Festlegen des Wandlungstakts TAD

11.2.4Festlegen der Abtastzeit

11.3Einzelne Messungen

11.3.1Beispiel ADsingle010: Einzelmessungen mit wechselnden Kanälen

11.4Automatische Messfolgen

11.4.1Starten der Wandlung

11.4.2Ergebnisbuffer

11.4.3Beispiel ADint010: Wiederholte Messung eines Kanals

11.512-Bit-AD-Wandler mit mehreren parallelen 10-Bit-Kanälen

11.5.1ADxCON1-Register

11.5.2ADxCON2-Register

11.6Beispiel ADdma710: wiederholte Messung eines Kanals

12Analoge Komparatoren

12.1Komparatorereignis

12.2Register der analogen Komparatoren

12.2.1CMCON-Register für Dual-Comparator-Module

12.2.2CMSTAT-Register für Triple-Comparator-Module

12.2.3CMxCON-Register für Triple-Comparator-Module

12.3Komparatorreferenzspannung

12.3.1CVRCON-Register

12.4Beispiel ADCMP010: Komparator und AD-Wandler an einem gemeinsamen Pin

13Output-Compare-Module

13.1Gemeinsame Grundfunktionalität

13.2Output-Compare-Modi

13.2.1Modi 0 bis 5

13.2.2Modi 6 und 7

13.3Dedizierte Timer der OC-Module

13.4Controlregister der einfachen OC-Module

13.4.1OCxCON-Register

13.5Controlregister der komplexen OC-Module

13.5.1OCxCON1-Register

13.5.2OCxCON2-Register

13.6Initialisierung der OC-Module

13.6.1Beispiel OCpulse010: Erzeugen von Pulsen im 50-Hz-Takt

13.6.2Beispiel OCppulse: Pulse mit vorgegebenem Offset

13.6.3Beispiel OC1FLT110: Prüfen des OCx-Ausgangs im Fehlerfall

14Input Capture

14.1Grundfunktionalität

14.2Modi der Input-Capture-Module

14.3Dedizierte Timer der IC-Module

14.4Controlregister der einfachen IC-Module

14.4.1ICxCON-Register

14.5Controlregister der komplexen IC-Module

14.5.1ICxCON1-Register

14.5.2ICxCON2-Register

14.6Initialisierung der IC-Module

15UART-Module

15.1Register der UART-Module

15.1.1Status- und Controlregister UxSTA

15.1.2UxMOD-Register

15.2Baudrate

15.3Senden eines Bytes

15.4Die Status-Flags TRMT und UTXBF

15.5Die Bits UTXISEL [1:0]

15.6Senden von Zeichenketten

15.7Sporadisches Senden von Daten

15.8Empfangen von Bytes

15.9Das Status-Flag URXDA

15.10Die Bits URXISEL [1:0]

15.11RX-Interrupt-Routinen

15.12Empfang von Strings mit vereinbartem Endzeichen

16SPI-Module

16.1Register der SPI-Module

16.1.1SPIxSTAT-Register

16.1.2SPIxCON1-Register

16.1.3SPIxCON2-Register

16.2Übertragungsgeschwindigkeit

16.3Lesen und Schreiben von Daten

16.4SPI-Status

16.5Umgang mit dem SPI-EEPROM 25AA512 von Microchip

16.5.1Lesen von Datenblocks

16.5.2Schreiben von Datenblocks

16.6Beispiel SPIEE010: Bedienen des serielles EEPROM 25AA512

17I2C-Bus

17.1Geschwindigkeit der I2C-Übertragung

17.2Register der I2C-Module

17.2.1I2CxCON-Register

17.2.2I2CxSTAT-Register

18Parallel Master Port (PMP)

18.1Verwendung der Steuerleitungen (PMRD, PMWR oder PMRD, PMENB)

18.2Register des PMP-Moduls

18.2.1PMCON-Register

18.2.2PMMODE-Register

18.2.3PMADDR-Register

18.2.4PMAEN-Register

18.3Beispiel PMP010: SRAM IS61LV256AL

18.3.1Schreiben ins SRAM

18.3.2Lesen aus dem SRAM

18.3.3Geschwindigkeit der SRAM-Routinen

1Die 16-Bit-PIC-Klasse

Die Bezeichnung »16-Bit-PIC« bezieht sich auf die Breite des Datenbusses. Diese Datenbreite ist in vielen Anwendungen sehr praktisch. Der hauptsächliche Gewinn an Komfort gegenüber den 8-Bit-PICs ist aber dem 24 Bit breiten Befehlsformat zu verdanken. Dadurch sind größere Adressräume möglich – sowohl bei den Daten als auch bei den Befehlen. Außerdem erlauben die breiteren Programmworte effizientere Adressierungsarten.

Die Klasse besteht aus den Familien

•PIC24FJ

•PIC24HJ

•PIC24EP

und den dsPICs, die zusätzlich die DSP-Einheit besitzen:

•dsPIC30FJ

•dsPIC33FJ

•dsPIC33EP

Mit den DSP-Befehlen können lineare mathematische Algorithmen, z.B. für Filter, Regelprozesse oder Fourier-Funktionen, effektiv unterstützt werden.

Die Familien unterscheiden sich physikalisch und in schaltungstechnischen Einzelheiten. In jeder Familie gibt es eine große Anzahl von Derivaten, die sich in Größe und Ausstattung beträchtlich unterscheiden.

Alle Derivate der 16-Bit-PIC-Klasse haben aber die gleiche Architektur. Die CPU arbeitet auf die gleiche Weise. Die Befehle sind die gleichen, bis auf die dsPIC-Befehle, die zusätzlich zu den gemeinsamen Befehlen implementiert sind. Weitgehend gleich ist auch das interne Management, z.B. die Organisation der Interrupts oder die Zusammenarbeit der CPU mit den Peripheriemodulen.

In diesem Buch werden vorwiegend die gemeinsamen Eigenschaften beschrieben. Wichtig ist aber auch, die relevanten Unterschiede zu kennen. Man muss unbedingt wissen, welche Details man im jeweiligen Datenbuch nachlesen muss und worauf man sich höchstwahrscheinlich bei allen Derivaten verlassen kann. Man weiß natürlich nie, was den Entwicklern der 16-Bit-Klasse in der Zukunft einfällt.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!