A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 3 Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI.

Apresentações semelhantes


Apresentação em tema: "Aula 3 Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI."— Transcrição da apresentação:

1 Aula 3 Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

2 Clock

3 Configurações do oscilador #FUSES INTRC – Não necessita de componentes externos. – Utiliza o gerador de clock interno. – Baixa precisão. – É possível utilizar a diretiva #use delay com os seguintes valores: 31KHz, 125KHz, 250KHz, 500KHz, 1MHz, 2MHz, 4MHz e 8MHz. Ex.: #use delay(clock=4000000)

4 Configurações do oscilador #FUSES XT – Utiliza componentes externos (cristal e capacitores). – Mais rápido que o INTRC. – Maior precisão por utilizar o cristal. – Para cristais até 4Mhz. #FUSES HS – Utiliza componentes externos (cristal e capacitores). – Alta velocidade (HS = high speed) – Maior precisão por utilizar o cristal. – Para cristais até 20Mhz. Cristal de 16 MHz

5 Configurações do oscilador Disposição do cristal e dos capacitores – Capacitores cerâmicos (não polarizados). – O cristal deve ficar conectado aos pinos 14 (OSC1) e 13 (OSC2).

6 Ciclo de máquina do PIC18 (Instruction Cycle) O clock do sistema é internamente dividido por 4. Cada instrução de máquina consiste em 4 Q-cycles (Q1 à Q4). A busca da instrução ocorre em 1 Q-cycle e a execução em outro. Datasheet - 5.2 PIC18 Instruction Cycle

7 Ciclo de máquina do PIC18 (Instruction Cycle) Com o uso de pipeline cada instrução é executada em 1 Q-cycle. Observe a imagem. A instrução 1 (MOVLW) é carregada no Tcy0 executada no Tcy1. A instrução seguinte é carregada no Tcy1 e executada no Tcy2. Assim a execução sempre* ocorre a cada TcyX. Datasheet - 5.2 PIC18 Instruction Cycle

8 Tempo de execução das instruções

9 Observação No CCS podemos utilizar diferentes bases para representar um valor numérico como: binária, octal, decimal e hexadecimal. – Binário: 0b01111011 – Octal: 0173 – Decimal: 123 – Hexadecimal: 0x7B No CCS podemos escrever o número como quisermos, o compilador se encarrega de entender. – dados = 0b10000000 - 2 + 0x3 + 012;

10 Portas de Entrada e Saída

11 O PIC18F4550 contém 5 portas – Porta A e Porta B com 8 bits; – Porta C com 7 bits, RC3 não está disponível; – Porta D e Porta E: 4 bits; É possível acessar cada bit de cada porta individualmente. No chip físico nem sempre estes bits estão dispostos de forma linear. – Ex.: a Porta E é composta pelos pinos 8,9,10 e 1.

12 Portas de Entrada e Saída Modos de Entrada e Saída – O compilador disponibiliza 3 formas de entrada diferentes: #use standard_io (port): modo automático, as funções de output e input alteram a direção do pino. #use fixed_io (port_outputs = pinos) : modo manual, a direção do pino fica fixa. #use fast_io (port): você pode mudar manualmente utilizando a função set_tris_x(porta).

13 Portas de Entrada e Saída Funções de saída: – output_x (int valor), onde x representa a porta (a, b, c, d ou e). – output_low (PIN_Px), coloca o bit especificado por PIN_Px em nível baixo (0). Px é a letra da porta e o respectivo bit (A0, B1 etc.) – output_high (PIN_Px), coloca o bit especificado por PIN_Px em nível alto (1). Px é a letra da porta e o respectivo bit (A0, B1 etc.) – output_toggle(PIN_Px), alterna o estado, alto e baixo do bit. – output_bit( PIN_Px, bit), altera o pino Px para o valor de bit.

14 Portas de Entrada e Saída Funções de entrada: – input_x (), lê a porta representa por x (a, b, c, d ou e). – intput(PIN_Px), lê o pino especificado. – Intput_state(PIN_Px), lê o pino especificado sem mudar a direção.

15 Registradores TRIS Cada porta possui um registrador TRIS associado a ela O nome TRIS vem de Tri-state em alusão às portas de 3 estados (alto, baixo e desconectado) Os bits de cada registrados TRIS configuram o bit da porta respectiva como entrada ou saída. Para setar o valor do registrador, por exemplo da porta B, usamos set_tris_b (0b00001111), os 4 primeiros bits estão definidos como entrada(1) e o resto como saída (0).

16 Temporização

17 Funções de atraso Não são precisas São criadas a partir de instruções asm – delay_cycles(int8 count) count – constante de 1 a 255 Espera count ciclos de máquina – delay_us(int16 time) Time – 0 a 65535 Espera time microsegundos – delay_ms(int16 time) Time – 0 a 65535 Espera time milisegundos

18 Observação! As funções de atraso são a pior forma possível de se contar ou esperar algum tempo! Para gerar o atraso o compilador cria um loop de NOPs para executar tantas vezes quanto necessários para gerar o delay. Suponha um delay_ms(100). Com um clock de 20 MHz o ciclo dura 0,2 us. E assim, 100 ms / 0,2 us = 500.000 ciclos. São desperdiçados 500.000 ciclos! Como contar o tempo de forma correta?

19 Módulo TIMER0 (8 ou 16 bits) Comumente conhecido como RTCC (Real Time Counter Clock). Temporização sem comprometer o processamento do microcontrolador. Incrementado pelo clock interno ou pelo pino externo T0CKI (Timer zero clock input), pino RA4. Datasheet - 11.1 Timer0 Operation

20 Módulo TIMER0 - Prescaler Datasheet - 11.1 Timer0 Operation Diminui a velocidade do TIMER. Configurado no registrador T0CON nos bits PSA e T0PS2:T0PS0 e vai de 1:2 áté 1:256. Pode ser alterado em tempo de execução.

21 Ocorre quando há a contagem do TIMER0 no registrador TRM0 chega ao valor máximo. Este valor depende do modo de operação. Em 8 bits o valor é 0xFF e em 16 bits 0xFFFF. A interrupção do TIMER0 pode ser habilitada ou não definindo o valor do bit TRM0IE (INTCON ). Este estouro seta (1) o bit TRM0IF (INTCON ). Mesmo que a interrupção esteja desligada é possível olhar TRM0IF (timer zero interruption flag) e saber se ocorreu um estouro. Módulo TIMER0 - Interrupção

22 Como calcular o tempo de interrupção?

23 Configurando TIMER0 no CCS #include #FUSES NOMCLR, NOWDT, NOBROWNOUT, NOLVP #use delay(crystal=20000000) #INT_TIMER0 void interrupcao_timer0 () { clear_interrupt(INT_TIMER0); output_toggle(PIN_B0); } void main() { enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER0); // habilita a interrupção do TIMER0. setup_timer_0(RTCC_INTERNAL|RTCC_8_BIT|RTCC_DIV_32); //420 ms while(TRUE){ //TODO: User Code }

24 Circuito de Reset O pino Master Clear Reset permite a criação de uma forma de reset via hardware. O pino é ativo em 0, isto é, quando seu nível for zero estará em modo reset. É preciso que utilizar o fuse MCLR.

25 Compilador CCS C

26 Criando um Projeto no CCS Wizard para ajudar a preparar as configurações inicias. Possibilidade de selecionar entre os microcontroladores compatíveis. Várias possibilidades de configuração de A/D, Timers, clock etc.

27

28

29

30

31


Carregar ppt "Aula 3 Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI."

Apresentações semelhantes


Anúncios Google