女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]  An interrupt is an internal or external event that requires quick attention from the controller. The PIC32MZ architecture provides a rich interrupt system that can manage up to 190 sources of inte

  An interrupt is an internal or external event that requires quick attention from the controller. The PIC32MZ architecture provides a rich interrupt system that can manage up to 190 sources of interrupts. Each interrupt source can have a unique piece of code, called the Interrupt Service Routine (ISR) directly associated via a pointer, also called a "vector", to provide the required response action.


  At the moment, I use Timer1 interrupt as a example to show how to enable interrupt and how to write interrupt service routine for PIC32MZ. The implementation has three parts. The first is the Timer1 interfaces. The second is interrupts interfaces. And the third is the Timer1 interrupt service routine.


  The Timer1 interfaces include TMR1_Open() and TMR1_Write(). In the TMR1_Open(), will enable Timer1 and Timer1 interrupt. configure Timer1 to overflow and interrupt per millisecond. set Timer1 interrupt priority level and subpriority level. Below code show me how to do that.



/**

Function: TMR1_Open


Summary: Initialization of Timer


Description: TMR1 on; 0.08 microsecond every tick, overflow and interrupt per ms


Remarks: Pre-scale 1:8; PB 100MHz; PR1 0x30D3

*/

// TODO Insert function definitions (right here) to leverage live documentation

void TMR1_Open(void)

{

T1CON = 0x8010;

PR1 = 0x30D3;

IPC1SET = 0x5;

IEC0SET = 0x10;

IFS0CLR = 0x10;

}

// Comment a function definition and leverage automatic documentation

/**

Function: TMR1_Write


Summary: Write TMR1


Description: Write a value to TMR1


Remarks: the value is range of 0~65535

*/

// TODO Insert function definitions (right here) to leverage live documentation

void TMR1_Write(unsigned int value)

{

TMR1 = value & 0xFFFF;

}


  The interrupts interfaces include EnableINT(), DisableINT() and SelectMultiVector(). When we want to use any interrupt source, call EnableINT() to enable interrupt module first. PIC32 have two interrupt vector modes, the singlevector mode and multivector mode. SelectMultiVector() will help to set interrputs for multivector mode. I do that like below.



/**

@Function

EnableINT


@Summary

Enable interrupts


@Remarks

This function need to be called first before using any interrupt source

*/

void EnableINT(void)

{

asm volatile("ei");

}


/**

@Function

DisableINT


@Summary

Disable interrupts


@Remarks

*/

void DisableINT(void)

{

asm volatile("di");

}


/**

@Function

SelectMultiVector


@Summary

Set system to use multivector mode for interrupts


@Remarks

*/

void SelectMultiVector(void)

{

unsigned long MVEC_MASK = 0x1000;

INTCONSET = MVEC_MASK;

}


  At the end, I show the main function and the Timer1 interrupt service routine. There are styles of interrupt service routine, the interrupt attribute style, like


__attribute__((interrupt([IPLn[SRS|SOFT|AUTO]]))),


and the interrupt pragma style, like


# pragma interrupt function-name IPLn[AUTO|SOFT|SRS] [vector

[@]vector-number [, vector-number-list]]

# pragma interrupt function-name single [vector [@] 0


  It strongly recommend the first style. So there they are.



#include

#include "TMR.h"

#include "Interrupt.h"

#include "ConfigurationBits.h"


//#define LED_IOCTL() TRISHbits.TRISH0 = 0

//#define LED_SETON() LATHbits.LATH0 = 1

//#define LED_SETOFF() LATHbits.LATH0 = 0

//#define LED_OPEN() ANSELHbits.ANSH0 = 0


//#define LED_IOCTL() TRISH &= 0xFFFFFFFE

//#define LED_SETON() LATH |= 0x00000001

//#define LED_SETOFF() LATH &= 0xFFFFFFFE

//#define LED_OPEN() ANSELH &= 0xFFFFFFFE


#define LED_IOCTL() TRISHCLR = (1<<0)

#define LED_SETON() LATHSET = (1<<0)

#define LED_SETOFF() LATHCLR = (1<<0)

#define LED_ONOFF() LATHINV = (1<<0)

#define LED_OPEN() ANSELH &= 0xFFFFFFFE


volatile unsigned int COUNTER;


void __attribute__((vector(_TIMER_1_VECTOR), interrupt(ipl1AUTO), nomips16)) TMR1_ISR(void)

{

if (COUNTER++ >= 300)

{

COUNTER = 0;

LED_ONOFF();

}

TMR1_Write(0);

IFS0CLR = 0x10; // Clear flag

}


void main(void)

{

LED_OPEN();

LED_IOCTL();

TMR1_Open();

TMR1_Write(0);

SelectMultiVector();

EnableINT();

COUNTER = 0;

while (1)

{

; // do nothing

}

}


  This application run well on PIC32MZ EC starter kit. I see the LED blink perfectly as expectation.


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Microchip公司的PIC32MZ EF系列是高達(dá)250MHz的集成浮點單元(FPU),具有廣泛的外設(shè)和包括局域網(wǎng)(CAN)的極好的連接選擇,工作電壓2.1V到 3.6V,DSP增強核具有四

關(guān)鍵字: Microchip pic32mz 處理器

使用的是STM32F407的板子,程序參考的是STM32F4xx固件庫的DAC_SignalsGeneration文件夾下的程序。官方例程分別使用了DAC的禁止生成波(DAC_WaveGeneration_None)的E...

關(guān)鍵字: dac dma STM32 timer 輸出正弦波

  In my last post I implement "Key Debounce" with port polling, port polling is not very efficient....

關(guān)鍵字: pic32mz tutorial change notification

  In my older blog "PIC32MZ tutorial -- Key Debounce", I shows how to acheive key debounce with port...

關(guān)鍵字: interrupt pic32mz tutorial external

8051 系列 MCU 的基本結(jié)構(gòu)包括:32 個 I/O 口(4 組8 bit 端口);兩個16 位定時計數(shù)器;全雙工串行通信;6 個中斷源(2 個外部中斷、2 個定時/計數(shù)器中斷、1 個串口輸入/輸出中斷),兩級中斷優(yōu)...

關(guān)鍵字: interrupt using 中斷優(yōu)先級 c51中斷

所有的中斷(外部中斷,定時器中斷……)運行的結(jié)果都是一樣的:流水燈逐個點亮,當(dāng)中斷響應(yīng)的時候,流水燈全部熄滅,當(dāng)中斷結(jié)束的時候,流水燈繼續(xù)剛才的流動。proteus原理圖:1.外部中斷:代碼:#include#incl...

關(guān)鍵字: interrupt 單片機中斷

經(jīng)過千辛萬苦,今天終于完工PIC32MZ EC Starter Kit的ethernet bootloader項目。我將整個項目, 命名為PhnBootloader。它分為兩個部分。第一個部分是PC 端的host程序Ph...

關(guān)鍵字: bootloader ethernet pic32mz udp協(xié)議

  At this moment, I accomplish the interface of UART communication for PIC32MZ EC Starter Kit. This interface...

關(guān)鍵字: communication pic32mz tutorial uart

  Core Timer is a very popular feature of PIC32 since it isa piece of the MIPS M4K core itself and is common t...

關(guān)鍵字: core pic32mz timer tutorial

8051 系列 MCU 的基本結(jié)構(gòu)包括:32 個 I/O 口(4 組8 bit 端口);兩個16 位定時計數(shù)器;全雙工串行通信;6 個中斷源(2 個外部中斷、2 個定時/計數(shù)器中斷、1 個串口輸入/輸出中斷),兩級中斷優(yōu)...

關(guān)鍵字: c51中斷 interrupt using
關(guān)閉