IUP GEII - ABCelectronique

'1': This source has raised an interrupt request. Gestion des priorités. Les priorités sont ...... PSA: Prescaler Assignment bit. 1 = Prescaler is assigned to the WDT.
3MB taille 81 téléchargements 458 vues
UFR SCIENCES REIMS

IUP GEII OPTION MCI

DOCUMENTS DE COURS (fascicule autorisé lors des contrôles)

M. Deloizy Édition du 14/09/2005 http://michel.deloizy.free.fr

6809

Chronogrammes du 6809 (Motorola)

-2-

Circuits périphériques

UVPROM Am27C64 (8k x 8)

-3-

Circuits périphériques

HN58S65AI (EEPROM)

-4-

Circuits périphériques

HM65764 (RAM statique)

-5-

Circuits périphériques

TL16C450 (Communication série) Brochage, Chronogrammes

Description des signaux A0 A1 A2

I

ADS

I

BAUDOUT

O

CS0, CS1,

I

CS2

Register select. A0, A1, and A2 are three inputs used during read and write operations to select the ACE register to read from or write to. Refer to Table 1 for register addresses, also refer to the address strobe ( ADS ) signal description. Address strobe. When ADS is active (low), the register select signals (A0, A1, and A2) and chip select signals (CS0, CS1, CS2 ) drive the internal select logic directly; when high, the register select and chip select signals are held in the state they were in when the low-to-high transition of ADS occurred. Baud out. BAUDOUT is a16× clock signal for the transmitter section of the ACE. The clock rate is established by the reference oscillator frequency divided by a divisor specified by the baud generator divisor latches. BAUDOUT may also be used for the receiver section by tying this output to the RCLK input. Chip select. When CSx is active (high, high, and low respectively), the ACE is selected. Refer to the ADS signal description.

-6-

Circuits périphériques CSOUT

O

CTS

I

D0 – D7

I/O

DCD

I

DDIS

O

DISTR

I

DIS TR

DOSTR

I

DOS TR

DSR

I

D TR

O

INTRPT

O

MR

I

OUT1

O

OUT 2

RCLK RI

I I

RTS

O

SIN SOUT

I O

V CC V SS XTAL1 XTAL2

I/O

Chip select out. When CSOUT is high, it indicates that the ACE has been selected by the chip select inputs (CS0, CS1, and CS2 ). CSOUT is low when the chip is deselected. Clear to send. CTS is a modem status signal. Its condition can be checked by reading bit 4 (CTS) of the modem status register. Bit 0 (DCTS) of the modem status register indicates that this signal has changed states since the last read from the modem status register. If the modem status interrupt is enabled when CTS changes state, an interrupt is generated. Data bus. D0 – D7 are 3-state data lines that provide a bidirectional path for data, control, and status information between the ACE and the CPU. Data carrier detect. DCD is a modem status signal. Its condition can be checked by reading bit 7 (DCD) of the modem status register. Bit 3 (DDCD) of the modem status register indicates that this signal has changed states since the last read from the modem status register. If the modem status interrupt is enabled when the DCD changes state, an interrupt is generated. Driver disable. DDIS is active (high) when the CPU is not reading data. When active, this output can disable an external transceiver. Data input strobes. When either DISTR or DIS TR is active (high or low respectively) while the ACE is selected, the CPU is allowed to read status information or data from a selected ACE register. Only one of these inputs is required for the transfer of data during a read operation. The other input should be tied in its inactive state (i.e., DISTR tied low or DIS TR tied high). Data output strobes. When either DOSTR or DOS TR is active (high or low respectively), while the ACE is selected, the CPU is allowed to write control words or data into a selected ACE register. Only one of these inputs is required to transfer data during a write operation. The other input should be tied in its inactive state (i.e., DOSTR tied low or DOS TR tied high). Data set ready. DSR is a modem status signal. Its condition can be checked by reading bit 5 (DSR) of the modem status register. Bit 1 (DDSR) of the modem status register indicates that this signal has changed state since the last read from the modem status register. If the modem status interrupt is enabled when the DSR changes state, an interrupt is generated. Data terminal ready. When active (low), D TR informs a modem or data set that the ACE is ready to establish communication. D TR is placed in the active state by setting the DTR bit of the modem control register to a high level. D TR is placed in the inactive state either as a result of a master reset or during loop mode operation or clearing bit 0 (DTR) of the modem control register. Interrupt. When active (high), INTRPT informs the CPU that the ACE has an interrupt to be serviced. The four conditions that cause an interrupt are: a receiver error, received data is available, the transmitter holding register is empty, or an enabled modem status interrupt. The INTRPT output is reset (inactivated) either when the interrupt is serviced or as a result of a master reset. Master reset. When active (high), MR clears most ACE registers and sets the state of various output signals. Refer to Table 2 for ACE reset functions. Outputs 1 and 2. OUT1 and OUT 2 are user-designated output terminals that are set to their active states by setting their respective modem control register bits (OUT1 and OUT2) high. OUT1 and OUT 2 are set to their inactive (high) states as a result of master reset or during loop mode operations or by clearing bit 2 (OUT1) or bit 3 (OUT2) of the MCR. Receiver clock. RCLK is the 16 × baud rate clock for the receiver section of the ACE. Ring indicator. RI is a modem status signal. Its condition can be checked by reading bit 6 (RI) of the modem status register. Bit 2 (TERI) of the modem status register indicates that the RI input has transitioned from a low to a high state since the last read from the modem status register. If the modem status interrupt is enabled when this transition occurs, an interrupt is generated. Request to send. When active, RTS informs the modem or data set that the ACE is ready to transmit data. RTS is set to its active state by setting the RTS modem control register bit and is set to its inactive (high) state either as a result of a master reset or during loop mode operations or by clearing bit 1 (RTS) of the MCR. Serial input. SIN is the serial data input from a connected communications device. Serial output. SOUT is the composite serial data output to a connected communication device. SOUT is set to the marking (set) state as a result of MR. 5-V supply voltage Supply common External clock. XTAL1 and XTAL2 connect the ACE to the main timing reference (clock or crystal).

-7-

Circuits périphériques

Autres circuits logiques Décodeurs démultiplexeurs 74138 74139

-8-

Circuits périphériques 74139

Buffers 74244

-9-

Circuits périphériques 74245

Latches 74373

- 10 -

Circuits périphériques

AD7918 (Analog Devices)

Pin

Mnemonic

Description

1 2 3

VREF

Reference Input, 1.2 V to VDD.

VIN GND

4

CONVST#

5

CS#

6

RD#

7

BUSY

8– 15 16

DB0–DB7

Analog Input, 0 V to VREF. Analog and Digital Ground. Convert Start. A low-to-high transition on this pin initiates a 1.5 µs pulse on an internally generated CONVST# signal. A high-to-low transition on this line initiates the conversion process if the internal CONVST# signal is low. Depending on the signal on this pin at the end of a conversion, the AD7819 automatically powers down. Chip Select. This is a logic input. CS# is used in conjunction with RD# to enable outputs. Read Pin. This is a logic input. When CS# is low and RD# goes low, the DB7– DB0 leave their high impedance state and data is driven onto the data bus. ADC Busy Signal. This is a logic output. This signal goes logic high during the conversion process. Data Bit 0 to 7. These outputs are three-state TTL-compatible.

VDD

Positive power supply voltage, 2.7 V to 5.5 V.

Parameter tPOWER-UP

t1 t2 t3 t4 t5 t6 t7 t8

VDD= 5 V ± 10% 1.5 4.5 30 30 0 0 10 10 100

Unit µs (max) µs (max) ns (min) ns (max) ns (min) ns (min) ns (max) ns (max) ns (min)

Conditions/Comments Power-Up Time of AD7819 after Rising Edge of CONVST. Conversion Time. CONVST# Pulsewidth. CONVST# Falling Edge to BUSY Rising Edge Delay. CS# to RD# Setup Time. CS# Hold Time after RD# High. Data Access Time after RD# Low. Bus Relinquish Time after RD# High. Data Bus Relinquish to Falling Edge of CONVST# Delay.

11

C167CR

- 12 -

C167CR

Cette partie contient une documentation réduite du C167CR (Infineon), du compilateur C (Tasking) et des systèmes matériels étudiés (TQ tech.). Les informations et les graphes sont tous issus et recopiés à partir des documents techniques originaux. Certaines parties sont traduites, d'autres sont restées intentionnellement dans leur langue d'origine (l'anglais), qu'il est nécessaire de maîtriser afin de pouvoir mettre en œuvre les technologies actuelles.

M. Deloizy

Présentation

Présentation Famille C166

Versions du C167

→ SAK-C167CR-16RM

C167CR

- 13 -

Présentation

C167CR

- 14 -

Architecture interne

High Performance 16-bit CPU with four stage Pipeline • • • • • • •

80/60 ns minimum instruction cycle time, with most instructions executed in 1 cycle 400/300 ns multiplication (16-bit x 16-bit), 800/600 ns division (32-bit/16-bit) Multiple high bandwidth internal data buses Register based design with multiple variable register banks Single cycle context switching support 16 MBytes linear address space for code and data (Von Neumann architecture) System stack cache support with automatic stack overflow/underflow detection

Control Oriented Instruction Set with High Efficiency • • • • •

Bit, byte, and word data types Flexible and efficient addressing modes for high code density Enhanced boolean bit manipulation with direct addressability of 6 Kbits for peripheral control and user defined flags Hardware traps to identify exception conditions during runtime High Level Language support for semaphore operations and efficient data access

Integrated On-chip Memory • • •

2 KByte internal RAM for variables, register banks, system stack and code 2 KByte on-chip high-speed XRAM for variables, user stack and code (not on all derivatives) 128 KByte or 32 KByte on-chip ROM (not for ROMless devices)

External Bus Interface • • • •

Multiplexed or demultiplexed bus configurations Segmentation capability and chip select signal generation 8-bit or 16-bit data bus Bus cycle characteristics selectable for five programmable address areas

Présentation

C167CR

- 15 -

16-Priority-Level Interrupt System • • •

56 interrupt nodes with separate interrupt vectors 240/180 ns typical interrupt latency (400/300 ns maximum) in case of internal program execution Fast external interrupts

8-Channel Peripheral Event Controller (PEC) • • •

Interrupt driven single cycle data transfer Transfer count option (std. CPU interrupt after programmable number of PEC transfers) Eliminates overhead of saving and restoring system state for interrupt requests

Intelligent On-chip Peripheral Subsystems • • • • • • • • •

16-channel 10-bit A/D Converter with programmable conversion time (7.76 ms minimum), auto scan modes, channel injection mode Two 16-channel Capture/Compare Units with 2 independent time bases each, very flexible PWM unit/event recording unit with different operating modes, includes four 16-bit timers/counters, maximum resolution fCPU/8 4-channel PWM unit Two Multifunctional General Purpose Timer Units GPT1: Three 16-bit timers/counters, maximum resolution fCPU/8 GPT2: Two 16-bit timers/counters, maximum resolution fCPU/4 Asynchronous/Synchronous Serial Channels (USART) with baud rate generator, parity, framing, and overrun error detection High Speed Synchronous Serial Channel programmable data length and shift direction On-chip CAN Bus Module, Rev. 2.0B active (not on all derivatives) Watchdog Timer with programmable time intervals Bootstrap Loader for flexible system initialization

111 IO Lines with Individual Bit Addressability • • • •

Tri-stated in input mode Selectable input thresholds (not on all pins) Push/pull or open drain output mode Programmable port driver control (fast/reduced edge)

Different Temperature Ranges •

0 to + 70 °C, – 40 to + 85 °C, – 40 to + 125 °C

Infineon CMOS Process •

Low power CMOS technology including power saving Idle and Power Down modes.

144-pin Plastic Metric Quad Flat Pack (MQFP) Package •

P-MQFP, 28 x 28 mm body, 0.65 mm (25.6 mil) lead spacing, surface mount technology

Organisation mémoire

C167CR

- 16 -

Organisation mémoire Architecture Von Neumann Espace mémoire unique pour ROM interne, RAM interne, SFRs, périphériques internes et mémoire externe. 16 M-octets adressables - 256 segments de 64 Ko chacun - chaque segment est divisé en 4 pages de 16 Ko

Mémoire interne essentiellement située dans le segment 0. • 0000h … 7FFFh : ROM / Flash ou OTP interne. Peut être déplacé en 10000h … 1FFFFh pour permettre ROM externe en adresse basse. • F000h … FFFFh : RAM interne et SFRs Code exécutable dans toute zone mémoire (RAM ou ROM), sauf dans les SFRs. Octets situés en adresses paires ou impaires. Mots (16 bits) situés en adresse paire (MSB en adresse impaire). Longs mots (32 bits) rangés comme 2 mots consécutifs (LSB en adresse paire). Bits adressables pour certains SFRs, une partie de la RAM interne et registres à usage général.

Organisation mémoire

C167CR

RAM interne et SFR 2 Ko de IRAM, 256 octets de SFRs

Mémoire XRAM 2 Ko. Mémoire interne située en page 3. Accessible comme RAM externe (sans utiliser les bus externes). Peut être désactivée par bit XPEN de SYSCON. Pas de Wait-states Accessible de l'extérieur en DMA

- 17 -

Organisation mémoire

C167CR

- 18 -

Registres à usage général

(registres de travail) Blocs de 16 mots consécutifs en RAM interne. Registre CP (Context Pointer) indique l'adresse de base de la banque de registres active. Internal RAM Address + 1EH + 1CH + 1AH + 18H + 16H + 14H + 12H + 10H + 0EH + 0CH + 0AH + 08H + 06H + 04H + 02H + 00H

Byte Registers – – – – – – – – RH7 RL7 RH6 RL6 RH5 RL5 RH4 RL4 RH3 RL3 RH2 RL2 RH1 RL1 RH0 RL0

Word Register R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0

→ Permet commutation de contexte rapide par modification de CP. Instruction SCXT (Switch Context) réalise la commutation de banques et une sauvegarde automatique du contexte précédent.

Mémoire externe 4 tailles de banques mémoires possibles : - 64 Ko. Mode non segmenté. - 256 Ko. Mode segmenté 2 bits. - 1 Mo. Mode segmenté 4 bits. - 16 Mo. Mode segmenté 8 bits. 4 types de bus différents : bus multiplexé 16 bits multiplexé 8 bits démultiplexé 16 bits Démultiplexé 8 bits

adresses P0 P0 P1 P1

A15…A0 sur P0 et P1 A17,A16 sur P4 ; A15…A0 sur P0 et P1 A19…A16 sur P4 ; A15…A0 sur P0 et P1 A22…A16 sur P4 ; A15…A0 sur P0 et P1 données P0 P0:7…0 P0 P0:7…0

(par défaut après RESET)

Le modèle de mémoire et le type de bus est sélectionné pendant le RESET en agissant sur EA# et P0. Les adressages de bits ne sont pas possibles en mémoire externe.

CPU

C167CR

- 19 -

CPU (Central Processing Unit) Architecture - ALU 16 bits - Pipeline à 4 étages (parallélisme) - Accès aux périphériques externes par EBC (External Bus Controller). Le CPU peut continuer à fonctionner en attendant que EBC effectue un accès externe. - Périphériques internes utilisent un générateur d'horloge distinct. - Contrôleur d'interruption intégré avec gestion des priorités. - Traitement d'interruptions par PEC (Peripheral Event Controller) - Interruptions logicielles, NMI traitées comme iT ordinaires - Watchdog - Modes faible consommation

États CPU particuliers : - Reset : force le CPU dans un état prédéfini - IDLE : horloge du CPU arrêtée ; horloges des périphériques actives - POWER-DOWN : Toutes horloges arrêtées. Entrées des périphériques ignorées. Sortie du mode IDLE : par interruption Sortie du mode POWER-DOWN : par RESET

CPU

C167CR

- 20 -

Pipeline Instruction exécutée en 4 étapes → 4 étages du pipeline fonctionnant simultanément. 1. 2. 3. 4.

Recherche de l'instruction Décodage de l'instruction, calcul des adressages, récupération des éventuels opérandes Exécution de l'instruction. Utilisation de l'ALU. Mise à jour de PSW. Écriture des résultats dans RAM interne ou externe.

Fonctionnement parallèle : Cycle machine

FETCH DECODE EXECUTE WRITEBACK

I1

I2 I1

I3 I2 I1

I4 I3 I2 I1

I5 I4 I3 I2

I6 I5 I4 I3

→ Beaucoup d'instructions s'exécutent en 1 cycle machine. Problèmes liés au pipeline : 4 instructions traitées simultanément ⇒ risque de mauvaise exécution dans certains cas. → le C167 insère parfois une "instruction injectée" dans le deuxième étage du pipeline quand une instruction ne peut pas être traitée complètement en 1 cycle. Exemple du branchement conditionnel : une instruction injectée est utilisée pour déterminer l'instruction désignée par le branchement. Certains cas nécessitent l'attention du programmeur : • Modification du contexte (changement de banque de registres) SCXT CP,#0FC00h ;sélection d'un nouveau contexte … ;ne doit pas utiliser un registre (car ancien contexte encore actif) MOV R0,#data ;écrit data dans registre R0 du nouveau contexte • Modification du pointeur de page de données MOV DPP0,#4 ;sélection de la page de donnée 4 … ;ne doit pas utiliser une instruction utilisant DPP0 MOV DPP0:0000H,R1 ;écrit R1 à l'adresse 10000H • Modification de la pile système MOV SP,#0FA40H ;définit un nouveau sommet de pile système … ;ne doit pas utiliser d'instruction type POP,RET,… ;PUSH,CALL,SCXT autorisés car résolus en interne POP R0 ;dépile R0 à partir de la nouvelle pile • Contrôle des interruptions IEN ou ILVL de PSW non pris en compte instantanément : BCLR IEN ;désactive interruptions … ;instruction encore interruptible … ;interruptions désactivées (début d'une séquence critique) … BSET IEN ;autorise interruptions (fin de la séquence critique) ou : ATOMIC #3 ;désactive immédiatement les interruptions BCLR IEN ;interdit les interruptions … ;séquence critique BSET IEN

CPU



C167CR

Initialisation des ports incorrect : BSET DP3.12 BSET P3.9

;met le bit 12 de P3 en sortie ;P3.12 est encore une entrée ; rd/mod/wr lit P3.12

correct : BSET DP3.12 NOP BSET P3.9

;P3.12 est en sortie ; rd/mod/wr lit le latch de la sortie P3.12

- 21 -

Opérations sur bits Utilisent des cycles Lecture/Modification/Écriture sur octets. Actives uniquement sur les zone adressables par bits (RAM interne, SFRs).

Pile système ¾ utilisation des sous programmes ¾ gestion des interruptions ¾ sauvegardes gérées par le CPU • • • • •

Pile de type LIFO Utilise le registre SP (Stack Pointer) SP évolue vers les adresses basses quand une donnée est rangée dans la pile. Seules les données 16 bits sont autorisées. STKOV et STKUN sont des registres qui permettent de contrôler les dépassements de pile. Ils permettent également la gestion d'une pile circulaire.

SFRs

C167CR

- 22 -

SFRs (Special Function Registers)

XPER-SHARE VISIBLE XPEN BDRSTEN OWDDIS

CSCFG

WRCFG CLKEN BYTDIS ROMEN SGTDIS ROMS1 STKSZ

000 001 010 011 100 101 110 111

XBUS Peripheral Share Mode Control 0: External accesses to XBUS peripherals are disabled 1: XBUS peripherals are accessible via the external bus during hold mode Visible Mode Control 0: Accesses to XBUS peripherals are done internally 1: XBUS peripheral accesses are made visible on the external pins XBUS Peripheral Enable Bit 0: Accesses to the on-chip X-Peripherals and their functions are disabled 1: The on-chip X-Peripherals are enabled and can be accessed Bidirectional Reset Enable Bit 0: Pin RSTIN is an input only. 1: Pin RSTIN is pulled low during the internal reset sequence after any reset. Oscillator Watchdog Disable Bit (Cleared after reset) 0: The on-chip oscillator watchdog is enabled and active. 1: The on-chip oscillator watchdog is disabled and the CPU clock is always fed from the oscillator input. Chip Select Configuration Control (Cleared after reset) 0: Latched CS mode. The CS signals are latched internally and driven to the (enabled) port pins synchronously. 1: Unlatched CS mode. The CS signals are directly derived from the address and driven to the (enabled) port pins. Write Configuration Control (Set according to pin P0H.0 during reset) 0: Pins WR and BHE retain their normal function 1: Pin WR acts as WRL, pin BHE acts as WRH System Clock Output Enable (CLKOUT, cleared after reset) 0: CLKOUT disabled: pin may be used for general purpose IO 1: CLKOUT enabled: pin outputs the system clock signal Disable/Enable Control for Pin BHE (Set according to data bus width) 0: Pin BHE enabled 1: Pin BHE disabled, pin may be used for general purpose IO Internal ROM Enable (Set according to pin EA during reset) 0: Internal program memory disabled, accesses to the ROM area use the external bus 1: Internal program memory enabled Segmentation Disable/Enable Control (Cleared after reset) 0: Segmentation enabled (CSP is saved/restored during interrupt entry/exit) 1: Segmentation disabled (Only IP is saved/restored) Internal ROM Mapping 0: Internal ROM area mapped to segment 0 (00’0000H … 00’7FFFH) 1: Internal ROM area mapped to segment 1 (01’0000H … 01’7FFFH) System Stack Size Selects the size of the system stack (in the internal RAM) from 32 to 512 words

Stack Size (words) 256 128 64 32 512 – – 1024

Internal RAM Addresses (words) 00’FBFE … 00’FA00 (Default after Reset) 00’FBFE … 00’FB00 00’FBFE … 00’FB80 00’FBFEH … 00’FBC0H 00’FBFEH … 00’F800H Reserved. Do not use this combination. Reserved. Do not use this combination. 00’FDFEH … 00’F600H (Note: No circular stack)

SFRs

N

C167CR

Negative Result Set, when the result of an ALU operation is negative. C Carry Flag Set, when the result of an ALU operation produces a carry bit. V Overflow Result Set, when the result of an ALU operation produces an overflow. Z Zero Flag Set, when the result of an ALU operation is zero. E End of Table Flag Set, when the source operand of an instruction is 8000H or 80H. MULIP Multiplication/Division In Progress 0: There is no multiplication/division in progress 1: A multiplication/division has been interrupted User General Purpose Flag May be used by the application software. USR0 HLDEN, Interrupt and EBC Control Fields Define the response to interrupt requests and enable external bus arbitration. ILVL, IEN

En mode non segmenté, CSP est ignoré.

- 23 -

SFRs

C167CR

Pointeurs de pages de données (DDPx) → Sélection simultanée de 4 pages de données de 16 Ko dans l'ensemble de la mémoire.

- 24 -

SFRs

C167CR

- 25 -

Pointeur de contexte (CP) → Indique l'adresse de base du bloc de registres (GPR : General Purpose Registers) en RAM interne.

Pointeur de Pile (SP)

Poids fort Multiplication/Division (MDH)

-

16x16→32 : 16 bits poids fort du résultat 32:16→16+reste(16) : MDH contient 16 bits poids fort du dividende. Après la division, MDH contient le reste. Quand interruption, MDH doit être sauvegardé.

SFRs

C167CR

- 26 -

Poids faible Multiplication/Division (MDL)

Contrôle des multiplications/divisions

MDRIU

!!

Multiply/Divide Register In Use 0 : Cleared when register MDL is read via software 1 : Set when register MDL or MDH is set via software, or when a multiply or divide instruction is executed. Internal Machine Status The multiply/divide unit uses these bits to control internal operations. Never modify these bits without saving and restoring register MDC

Zéros et Uns

Interruptions

C167CR

- 27 -

Interruptions ¾ 56 sources d'interruption ¾ 16 niveaux de priorité Quand une interruption est demandée : ƒ l'exécution du programme est suspendue ƒ l'état du programme courant est sauvegardé : IP, PSW et CSP (en mode segmenté) empilés ƒ l'interruption la plus prioritaire est prise en compte ƒ la routine d'interruption est exécutée ƒ quand l'instruction RETI est trouvée, le contexte initial (IP, PSW et CSP) est récupéré et l'exécution du programme peut continuer. Une interruption sera prise en compte par le CPU si : - le flag IEN de PSW est à 1 - le niveau de priorité de l'interruption demandée est supérieur à celui du CPU (indiqué dans PSW). Sources et vecteurs d'interruption Source of Interrupt or PEC Service Request CAPCOM Register 0 CAPCOM Register 1 CAPCOM Register 2 CAPCOM Register 3 CAPCOM Register 4 CAPCOM Register 5 CAPCOM Register 6 CAPCOM Register 7 CAPCOM Register 8 CAPCOM Register 9 CAPCOM Register 10 CAPCOM Register 11 CAPCOM Register 12 CAPCOM Register 13 CAPCOM Register 14 CAPCOM Register 15 CAPCOM Register 16 CAPCOM Register 17 CAPCOM Register 18 CAPCOM Register 19 CAPCOM Register 20 CAPCOM Register 21 CAPCOM Register 22 CAPCOM Register 23 CAPCOM Register 24 CAPCOM Register 25 CAPCOM Register 26 CAPCOM Register 27 CAPCOM Register 28 CAPCOM Register 29

Request Flag CC0IR CC1IR CC2IR CC3IR CC4IR CC5IR CC6IR CC7IR CC8IR CC9IR CC10IR CC11IR CC12IR CC13IR CC14IR CC15IR CC16IR CC17IR CC18IR CC19IR CC20IR CC21IR CC22IR CC23IR CC24IR CC25IR CC26IR CC27IR CC28IR CC29IR

Enable Flag CC0IE CC1IE CC2IE CC3IE CC4IE CC5IE CC6IE CC7IE CC8IE CC9IE CC10IE CC11IE CC12IE CC13IE CC14IE CC15IE CC16IE CC17IE CC18IE CC19IE CC20IE CC21IE CC22IE CC23IE CC24IE CC25IE CC26IE CC27IE CC28IE CC29IE

Interrupt Vector CC0INT CC1INT CC2INT CC3INT CC4INT CC5INT CC6INT CC7INT CC8INT CC9INT CC10INT CC11INT CC12INT CC13INT CC14INT CC15INT CC16INT CC17INT CC18INT CC19INT CC20INT CC21INT CC22INT CC23INT CC24INT CC25INT CC26INT CC27INT CC28INT CC29INT

Vector Location 00’0040H 00’0044H 00’0048H 00’004CH 00’0050H 00’0054H 00’0058H 00’005CH 00’0060H 00’0064H 00’0068H 00’006CH 00’0070H 00’0074H 00’0078H 00’007CH 00’00C0H 00’00C4H 00’00C8H 00’00CCH 00’00D0H 00’00D4H 00’00D8H 00’00DCH 00’00E0H 00’00E4H 00’00E8H 00’00ECH 00’00F0H 00’0110H

Trap Number 10H/16D 11H/17D 12H/18D 13H/19D 14H/20D 15H/21D 16H/22D 17H/23D 18H/24D 19H/25D 1AH/26D 1BH/27D 1CH/28D 1DH/29D 1EH/30D 1FH/31D 30H/48D 31H/49D 32H/50D 33H/51D 34H/52D 35H/53D 36H/54D 37H/55D 38H/56D 39H/57D 3AH/58D 3BH/59D 3CH/60D 44H/68D

Interruptions

CAPCOM Register 30 CAPCOM Register 31 CAPCOM Timer 0 CAPCOM Timer 1 CAPCOM Timer 7 CAPCOM Timer 8 GPT1 Timer 2 GPT1 Timer 3 GPT1 Timer 4 GPT2 Timer 5 GPT2 Timer 6 GPT2 CAPREL Register A/D Conversion Complete A/D Overrun Error ASC0 Transmit ASC0 Transmit Buffer ASC0 Receive ASC0 Error SSC Transmit SSC Receive SSC Error PWM Channel 0 … 3 CAN1 Unassigned node Unassigned node PLL/OWD

C167CR

CC30IR CC31IR T0IR T1IR T7IR T8IR T2IR T3IR T4IR T5IR T6IR CRIR ADCIR ADEIR S0TIR S0TBIR S0RIR S0EIR SCTIR SCRIR SCEIR PWMIR XP0IR XP1IR XP2IR XP3IR

Exception Condition Reset Functions Hardware Reset Software Reset Watchdog Timer Overflow Class A Hardware Traps Non-Maskable Interrupt Stack Overflow Stack Underflow Class B Hardware Traps Undefined Opcode Protected Instruction Fault Illegal Word Operand Access Illegal Instruction Access Illegal External Bus Access Reserved Software Traps TRAP Instruction

- 28 -

CC30IE CC31IE T0IE T1IE T7IE T8IE T2IE T3IE T4IE T5IE T6IE CRIE ADCIE ADEIE S0TIE S0TBIE S0RIE S0EIE SCTIE SCRIE SCEIE PWMIE XP0IE XP1IE XP2IE XP3IE

Trap Flag

CC30INT CC31INT T0INT T1INT T7INT T8INT T2INT T3INT T4INT T5INT T6INT CRINT ADCINT ADEINT S0TINT S0TBINT S0RINT S0EINT SCTINT SCRINT SCEINT PWMINT XP0INT XP1INT XP2INT XP3INT Trap Vector

00’0114H 00’0118H 00’0080H 00’0084H 00’00F4H 00’00F8H 00’0088H 00’008CH 00’0090H 00’0094H 00’0098H 00’009CH 00’00A0H 00’00A4H 00’00A8H 00’011CH 00’00ACH 00’00B0H 00’00B4H 00’00B8H 00’00BCH 00’00FCH 00’0100H 00’0104H 00’0108H 00’010CH

Vector Location

45H/69D 46H/70D 20H/32D 21H/33D 3DH/61D 3EH/62D 22H/34D 23H/35D 24H/36D 25H/37D 26H/38D 27H/39D 28H/40D 29H/41D 2AH/42D 47H/71D 2BH/43D 2CH/44D 2DH/45D 2EH/46D 2FH/47D 3FH/63D 40H/64D 41H/65D 42H/66D 43H/67D

Trap Number

Trap Prior.

RESET RESET RESET

00’0000H 00’0000H 00’0000H

00H 00H 00H

III III III

NMI STKOF STKUF

NMITRAP STOTRAP STUTRAP

00’0008H 00’0010H 00’0018H

02H 04H 06H

II II II

UNDOPC PRTFLT ILLOPA ILLINA ILLBUS

BTRAP BTRAP BTRAP BTRAP BTRAP

00’0028H 00’0028H 00’0028H 00’0028H 00’0028H [2CH3CH]

0AH I 0AH I 0AH I 0AH I 0AH I [0BH-0FH]

Any Any [00H[00’0000H- 7FH] 00’01FCH] in steps of 4H

Current CPU Priority

Interruptions

C167CR

- 29 -

Registres de contrôle des interruptions Même structure pour toutes les sources d'interruption :

Bit GLVL

ILVL

xxIE

xxIR

Function Group Level Defines the internal order for simultaneous requests of the same priority. 3: Highest group priority 0: Lowest group priority Interrupt Priority Level Defines the priority level for the arbitration of requests. FH: Highest priority level 0H: Lowest priority level Interrupt Enable Control Bit (individually enables/disables a specific source) ‘0’: Interrupt request is disabled ‘1’: Interrupt Request is enabled Interrupt Request Flag ‘0’: No request pending ‘1’: This source has raised an interrupt request

Gestion des priorités Les priorités sont gérées par ILVL et GLVL. Si deux interruptions de même niveau sont demandées simultanément, celle dont le niveau défini dans GLVL est supérieur sera prise en compte en premier. Important : - Il ne doit pas y avoir 2 interruptions définies avec à la fois des ILVL et GLVL identiques. - Une interruption de niveau 0 ne pourra pas être prise en compte par le CPU. Interruptions externes : Le C167CR n'a pas de pattes dédiées aux interruptions (de type INTR ou IRQ). → Des pattes d'entrée de périphériques sont utilisées à cet effet : Port Pin P7.7-4/CC31-28IO P1H.7-4/CC27-24IO P8.7-0/CC23-16IO P2.15-0/CC15-0IO P3.7/T2IN P3.5/T4IN P3.2/CAPIN

Original Function CAPCOM register 31-28 capture input CAPCOM register 27-24 capture input CAPCOM register 23-16 capture input CAPCOM register 15-0 capture input Auxiliary timer T2 input pin Auxiliary timer T4 input pin GPT2 capture input pin

Control Register CC31-CC28 CC27-CC24 CC23-CC16 CC15-CC0 T2CON T4CON T5CON

Interruptions

C167CR

- 30 -

Traps Les traps déclenchent une procédure d'interruption avec un mécanisme similaire aux interruptions déclenchées par les périphériques. Deux types de Traps : - traps logiciels Utilisent l'instruction TRAP suivi d'un opérande correspondant à un vecteur d'interruption (entre 0000H et 01FCH). Exécutent le programme d'interruption associé (comme si un périphérique l'avait provoqué). Les flags d'interruption (dans xxIC) ne sont cependant pas affectés. Le niveau de priorité du CPU dans PSW n'est pas modifié par un trap logiciel. - traps matériels Sont déclenchés automatiquement à la suite d'incidents ou d'états spécifiques du système lors de l'exécution du programme. Ils sont non masquables et ont toujours une priorité supérieure à celle du CPU. Si plusieurs traps matériels sont demandés simultanément, celui de plus forte priorité sera pris en compte en premier. Ils se divisent en deux classes : - traps de classe A : NMI, débordements de pile système. Ces traps ont la même priorité, mais des vecteurs différents - traps de classe B : code opérateur indéfini, faute de protection, accès illégal à un mot, accès illégal au bus externe. Ces traps ont la même priorité, mais un vecteur unique. On peut connaître la cause de déclenchement du trap en consultant le registre TFR.

Bit

Function

Illegal External Bus Access Flag : An external access has been attempted with no external bus defined. Illegal Instruction Access Flag : A branch to an odd address has been attempted. ILLINA Illegal Word Operand Access Flag : A word operand access (read or write) to an odd ILLOPA address has been attempted. Protection Fault Flag : A protected instruction with an illegal format has been PRTFLT detected. Undefined Opcode Flag : The currently decoded instruction has no valid C167CR UNDOPC opcode. Stack Underflow Flag : The current stack pointer value exceeds the content of register STKUF STKUN. Stack Overflow Flag : The current stack pointer value falls below the content of reg. STKOF STKOV. Non Maskable Interrupt Flag : A negative transition (falling edge) has been detected NMI on pin NMI. Note: The trap service routine must clear the respective trap flag, otherwise a new trap will be requested after exiting the service routine. Setting a trap request flag by software causes the same effects as if it had been set by hardware. ILLBUS

Ports parallèles

C167CR

- 31 -

Ports parallèles

Bit PxLIN PxHIN

Bit BIPEC

NBPEC

Function Portx Low Byte Input Level Selection 0: Pins Px.7 … Px.0 switch on standard TTL input levels 1: Pins Px.7 … Px.0 switch on special threshold input levels Portx High Byte Input Level Selection 0: Pins Px.15 … Px.8 switch on standard TTL input levels 1: Pins Px.15 … Px.8 switch on special threshold input levels

Function Bus Interface Pins Edge Characteristic (Defines the outp. rise/fall time tRF) 0: Fast edge mode, rise/fall times depend on the driver’s dimensioning. 1: Reduced edge mode. BIPEC controls: PORT0, PORT1, Port4, Port 6, RD, WR, ALE, CLKOUT, BHE/WRH, READY (emulation mode only). Non-Bus Pins Edge Characteristic (Defines the output rise/fall time tRF) 0: Fast edge mode, rise/fall times depend on the driver’s dimensioning. 1: Reduced edge mode. NBPEC controls: Port2, Port3, Port7, Port8, RSTOUT, RSTIN (bidirectional reset mode only).

Fonctions alternées Port Alternate Function(s) PORT0 Address and data lines when accessing external resources (e.g. memory) PORT1 Address lines when accessing ext. resources Capture inputs of the CAPCOM units Port2 Capture inputs or compare outputs of the CAPCOM units, CAPCOM timer input Fast external interrupt inputs Port3 System clock output Optional bus control signal Input/output functions of serial interfaces, timers

Alternate Signal(s) AD15 … AD0 A15 … A0, CC27IO … CC24IO CC15IO … CC0IO, T7IN, EX7IN … EX0IN CLKOUT, BHE/WRH, RxD0, TxD0, MTSR, MRST, SCLK, T2IN, T3IN, T4IN, T3EUD, T3OUT, CAPIN, T6OUT, T0IN

Ports parallèles

Port4 Port5 Port6 Port_7 Port8

C167CR

Selected segment address lines in systems with more than 64 KBytes of external resources CAN interface (where implemented) Analog input channels to the A/D converter Timer control signal inputs Bus arbitration signals, Chip select output signals Capture inputs or compare outputs of the CAPCOM units PWM output signals Capture inputs or compare outputs of the CAPCOM units

- 32 -

A23 … A16, CAN1_TxD, CAN1_RxD AN15 … AN0, T2EUD, T4EUD, T5IN, T6IN BREQ, HLDA, HOLD, CS4 … CS0 CC31IO … CC28IO, POUT3 … POUT0 CC23IO … CC16IO

Registres associés au port 0 Port 16 bits bidirectionnel.

Bit DP0X.y

Function Port direction register DP0H or DP0L bit y DP0X.y = 0: Port line P0X.y is an input (high-impedance) DP0X.y = 1: Port line P0X.y is an output

Ports parallèles

C167CR

- 33 -

Registres associés au port 1 Port 16 bits bidirectionnel. Fonctionnement identique à Port 0 P1L : PORT1 Low Register P1H : PORT1 High Register DP1L : P1L Direction Ctrl. Register DP1H : P1H Direction Ctrl. Register

SFR (FF04H/82H) SFR (FF06H/83H) ESFR (F104H/82H) ESFR (F106H/83H)

Reset Value: - - 00H Reset Value: - - 00H Reset Value: - - 00H Reset Value: - - 00H

Registres associés au port 2

Bit DP2.y

Bit ODP2.y

Function Port direction register DP2 bit y DP2.y = 0: Port line P2.y is an input (high-impedance) DP2.y = 1: Port line P2.y is an output

Function Port2 Open Drain control register bit y ODP2.y = 0: Port line P2.y output driver in push/pull mode ODP2.y = 1: Port line P2.y output driver in open drain mode

Ports parallèles

C167CR

- 34 -

Registres associés au port 3 Port 15 bits bidirectionnel.

Bit DP3.y

Function Port direction register DP3 bit y DP3.y = 0: Port line P3.y is an input (high-impedance) DP3.y = 1: Port line P3.y is an output

Bit ODP3.y

Function Port3 Open Drain control register bit y ODP3.y = 0: Port line P3.y output driver in push/pull mode ODP3.y = 1: Port line P3.y output driver in open drain mode Note: Due to pin limitations register bit P3.14 is not connected to an IO pin. Pins P3.15 and P3.12 do not support open drain mode. Registres associés au port 4 Port 8 bits bidirectionnel. Fonctionnement identique à Port 0 P4 : Port4 Data Register DP4 : P4 Direction Ctrl. Register

SFR (FFC8H/E4H) SFR (FFCAH/E5H)

Reset Value: - - 00H Reset Value: - - 00H

Ports parallèles

C167CR

- 35 -

Registres associés au port 5 Port 16 bits en entrée.

Bit P5D.y

Function Port5 Bit y Digital Input Control P5D.y = 0: Digital input stage connected to port line P5.y P5D.y = 1: Digital input stage disconnected from port line P5.y When being read or used as alternate input this line appears as ‘1’.

Registres associés au port 6 Port 8 bits bidirectionnel. Fonctionnement identique à Port 2. P6 : Port6 Data Register DP6 : P6 Direction Ctrl. Register ODP6 : P6 Open Drain Ctrl. Reg.

SFR (FFCCH/E6H) SFR (FFCEH/E7H) ESFR (F1CEH/E7H)

Reset Value: - Reset Value: - - 00H Reset value: - - 00H

Registres associés au port 7 Port 8 bits bidirectionnel. Fonctionnement identique à Port 2. P7 : Port7 Data Register DP7 : P7 Direction Ctrl. Register ODP7 : P7 Open Drain Ctrl. Reg.

SFR (FFD0H/E8H) SFR (FFD2H/E9H) ESFR (F1D2 /E9 )

Reset Value: - - 00H Reset Value: - - 00H Reset value: - - 00

Registres associés au port 8 Port 8 bits bidirectionnel. Fonctionnement identique à Port 2. P8 : Port8 Data Register DP8 : P8 Direction Ctrl. Register ODP8 : P8 Open Drain Ctrl. Reg.

SFR (FFD4H/EAH) SFR (FFD6H/EBH) ESFR (F1D6H/EBH)

Reset Value: - - 00H Reset Value: - - 00H Reset Value: - - 00H

Timers

C167CR

- 36 -

Timers → GPT1 et GPT2 (General Purpose Timer) GPT1 : 3 timers/compteurs 16 bits avec une résolution maximale de 16 TCLK GPT2 : 2 timers/compteurs 16 bits avec une résolution maximale de 8 TCLK + capture/reload 16 bits Timer : utilise l'horloge interne Compteur : signaux externes pilotent l'unité de comptage

GPT1 → T2, T3, T4 → fonctionnements identiques. Seul T3 dispose d'une sortie.

Contrôlés par T2CON, T3CON et T4CON. T2CON : Timer 2 Control Register T3CON : Timer 3 Control Register T4CON : Timer 4 Control Register

SFR (FF40H/A0H) SFR (FF42H/A1H) SFR (FF44H/A2H)

Reset value: 0000H Reset value: 0000H Reset value: 0000H

TxCON :

Bit TxI TxM

TxR TxUD TxUDE

Function Timer x Input Selection Depends on the Operating Mode, see respective sections. Timer x Mode Control (Basic Operating Mode) 000 : Timer Mode 001 : Counter Mode 010 : Gated Timer with Gate active low 011 : Gated Timer with Gate active high 100 : T2,T4 : Reload Mode. T3 : Reserved. Do not use this combination. 101 : T2,T4 : Capture Mode. T3 : Reserved. Do not use this combination. 110 : Incremental Interface Mode 111 : Reserved. Do not use this combination. Timer x Run Bit 0 : Timer/Counter x stops 1 : Timer/Counter x runs Timer x Up/Down Control Timer x External Up/Down Enable

Timers

C167CR

T3OE

- 37 -

Alternate Output Function Enable 0: Alternate Output Function Disabled 1: Alternate Output Function Enabled Timer 3 Output Toggle Latch Toggles on each overflow/underflow of T3. Can be set or reset by software.

T3OTL Pin TxEUD X X 0 1 0 1

Bit TxUDE 0 0 1 1 1 1

Bit TxUD 0 1 0 0 1 1

Count Direction Count Up Count Down Count Up Count Down Count Down Count Up

Timer & Counter Modes : f TX =

f xIN
Change Directory et sélectionner le répertoire préalablement créé.



Faire Project->Project Space ->New. Entrer le nom de l'espace de projets à créer (sans extension)



Dans la fenêtre qui s'ouvre, créer un nouveau projet en sélectionnant l'icône to Project Space). Donner un nom à ce projet (sans extension).



Créer maintenant un nouveau fichier en cliquant sur l'icône un nom à ce fichier, avec une extension ".c".



Cliquer sur Ok. → Le nouveau fichier est prêt à être édité.



Écrire le programme et l'enregistrer.



Faire EDE->Project Options. Dans CPU, sélectionner le C167CR et faire Ok.



Lancer la compilation en cliquant sur l'icône (Execute Compile Command). Noter la différence obtenue avec (Execute Make Command) et (Execute Rebuild Command).



S'il n'y a pas d'erreur, faire EDE->CrossView Pro Options et sélectionner Simulator. Faire Ok. Lancer le debugger Crossview en cliquant sur (Debug Application). Exécuter le programme en pas à pas, en observant le code exécuté et l'état des variables et des registres du CPU.



Si la carte cible est reliée, faire EDE->CrossView Pro Options et sélectionner ROM/RAM Monitor. Choisir la cible (target) TQ components TQM167C. Exécuter ensuite Crossview comme précédemment.

à partir du bureau).

(Add New Project

(Add New File To Project). Donner

Tasking EDE

C167CR

- 97 -

Applications Chenillard Réaliser un chenillard sur les 16 LEDs de la carte d'application. Temporisations Réaliser les fonctions DelayUs et DelayMs selon les prototypes ci-dessous : void DelayUs(unsigned dt); // délai en µs void DelayMs(unsigned dt); // délai en ms On utilisera pour cela le timer T5 sans interruptions. Quelles sont les limitations rencontrées ? On autorisera des variations de dt entre 0 et 65535. Convertisseur analogique Faire un programme qui lit en permanence le CAN sur le canal 0. Afficher le résultat sur l'afficheur LCD sous la forme 0.000 V. On utilisera pour cela les fonctions suivantes : - void lcd_strout(const char *) - void lcd_init(void) - void lcd_clr(void) - void lcd_home(void) Signal PWM Générer un signal PWM variable en fonction de la tension présente sur le canal 0 du CAN. Mettre en œuvre un signal permettant d'obtenir 256 niveaux de tension, puis 1024 niveaux de tension. Dans chacun des cas, indiquer la fréquence de hachage obtenue. Génération et mesure de signaux Générer le signal A en utilisant CAPCOM0. On reçoit le signal B sur CAPCOM1. Mesurer la valeur de ∆t (comprise entre 1 ms et 30 ms) avec une précision maximale. Indiquer sa valeur sur l'afficheur LCD. Quelle est la résolution obtenue ? Réaliser cette mesure toutes les 100 ms.

1ms A B

∆t

1ms

Tasking EDE

C167CR

- 98 -

Limiteur d'accélération pour la commande de moteur

→ limitation du couple d'accélération → limitation des courants vk : vitesse souhaitée v'k : vitesse obtenue DT : période d'échantillonnage

vk

v'k

Accélération max

vk dvMAX vk-1 DT

Exemple : Fréquence de hachage = 10kHz vmax = 254 accélération arrêt / pleine vitesse en 1mn (dv=127 en 60s) ⇒ DT = 0,1 ms et dvMAX = 212.10-6 v codé sur 1 octet (0 à 255) → peut être codé sur 32 bits en multipliant par 224 : On note V = v.224

v

00H

00H V

⇒ DVMAX = dvMAX.224 = 212.10-6.16777216 ≈ 3551

Dans le bloc limiteur d'accélération, on travaille avec V et DV : (exemple pour la limitation en vitesse croissante)

consigne vk ⇒ Vk si Vk > Vk-1 + DVmax Vk = Vk-1 + DVmax extraction de v'k à partir de Vk ⇒ application de la nouvelle commande Rem. : Vk-1 : valeur précédente de Vk → utilisation d'une variable statique.

00H

16C73A

PIC

MICROCONTROLEURS PIC I. PIC 16C73A I.1. Caractéristiques générales -

CPU RISC 35 instructions exécutées en 1 cycle (200ns) DC à 20MHz faible consommation (