Arquitetura de Arquitetura de Sistemas Embarcados Sistemas Embarcados ����������� ������������������ ����������������������� ����
Overview Overview • Processadores de propósito único – Customizados – Padronizados • Processadores de periféricos – Temporizadores – Contadores – UART – PWM – LCD – Teclado – …. ����������� ���������������������� �
Introdução Introdução • Processadores de propósito único – Realizam computação específica – Processadores customizados • Projetados para uma unica tarefa – ������������� ������������ ����� ������������ • “Off-the-shelf” -- • Exemplos: – Periféricos – Transmiss ão serial – Conversão analógico-digital ����������� ���������������������� �
Temporizadores, , contadores contadores, , Temporizadores watchdog timers watchdog timers • Temporizadores: mede intervalos de tempo – Gera ção de saída para eventos temporais • Ex: sinal verde deve permanecer por 10 seg. – Para medi ção de eventos em entradas • Ex: medida de velocidade de automóvel ����������� ���������������������� �
Temporizadores, , contadores contadores, , Temporizadores watchdog timers watchdog timers • Baseado na contagem de pulsos de clock • Considere periodo do clock = 10ns • Se contamos 20.000 pulsos de relógio • Então se passaram 200 microsegundos • Um contador de 16-bits deveria contar até 65,535*10 ns = 655.35 microseg., resolução = 10 ns ����������� 16-bit up Cnt 16 Clk counter Top Reset ����������� ���������������������� �
Contadores Contadores • Contador: semelhante a um temporizador porém conta pulsos de uma entrada genérica (em vez do timer) – Ex: contagem de carros passando por um sensor – Dispositivo pode ser configurado ������������� como temporizador ou contador Clk 2x1 16-bit up Cnt 16 mux counter Cnt_in Top Reset Mode ����������� ���������������������� �
Outras estruturas estruturas temporizadoras temporizadoras Outras • Temporizadores de ���������������������� Intervalos ����� – Indica quando um 16-bit up counter Clk Cnt 16 intervalo de tempo ocorreu Reset – Setando o Intervalo = desejado Top • ����������������� ����������� Terminal count ������������������ ��������� �������� ����������� ���������������������� �
Outras estruturas estruturas temporizadoras temporizadoras Outras ��������������� 16-bit up Clk Cnt1 counter 16 • Contadores em Top1 cascata 16-bit up Cnt2 16 counter • Prescaler Top2 – Divisão do clock ������������������� Prescaler 16-bit up Clk – Aumenta o range, counter diminui a resolução Mode ����������� ���������������������� �
Exemplo: : Temporizador Temporizador de de Reação Reação Exemplo reaction indicator /* main.c */ button light #define MS_INIT 63535 LCD time: 100 ms void main(void){ int count_milliseconds = 0; • Medindo o tempo entre acendimento da configure timer mode set Cnt to MS_INIT lampada e o usuário apertar o botão wait a random amount of time turn on indicator light – Temporizador de 16-bits, período do clk start timer de 83.33 ns, contador incrementa a while (user has not pushed reaction button){ cada 6 ciclos if(Top) { stop timer – Resolu ção = 6*83.33=0.5 microseg. set Cnt to MS_INIT start timer reset Top – Range = 65535*0.5 microseg = 32.77 count_milliseconds++; mileseg. } } turn light off – Para contar milesegundos contador printf(“time: %i ms“, count_milliseconds); deve ser inicializado com 65535 – } 1000/0.5 = 63535 ����������� ���������������������� �
Watchdog timer Watchdog timer • Deve resetar o osc clk overflow overflow to system temporizador a prescaler scalereg timereg reset cada X unidades or interrupt checkreg de tempo, caso contrário o /* main.c */ watchdog_reset_routine(){ /* checkreg is set so we can load value into temporizador main(){ timereg. Zero is loaded into scalereg and wait until card inserted 11070 is loaded into timereg */ gera um sinal call watchdog_reset_routine checkreg = 1 while(transaction in progress){ scalereg = 0 • Uso comum: if(button pressed){ timereg = 11070 perform corresponding action } call watchdog_reset_routine detec ção de } void interrupt_service_routine(){ eject card falha , self-reset /* if watchdog_reset_routine not called every reset screen < 2 minutes, interrupt_service_routine is } called */ } ����������� ���������������������� ��
Watchdog timer Watchdog timer • Outro uso: osc clk overflow overflow to system reset timeouts prescaler scalereg timereg or interrupt – Ex:, máquina checkreg ATM – 16-bit timer, 2 /* main.c */ watchdog_reset_routine(){ /* checkreg is set so we can load value into microsec. main(){ timereg. Zero is loaded into scalereg and wait until card inserted 11070 is loaded into timereg */ resolution call watchdog_reset_routine checkreg = 1 – ������� value = while(transaction in progress){ scalereg = 0 if(button pressed){ timereg = 11070 2*(2 16 -1)–X = perform corresponding action } call watchdog_reset_routine 131070–X } void interrupt_service_routine(){ eject card – For 2 min., X = /* if watchdog_reset_routine not called every reset screen 120,000 microsec. < 2 minutes, interrupt_service_routine is } called */ } ����������� ���������������������� ��
Transmissão Serial Serial Usando Usando UARTs UARTs Transmiss ão • UART: Universal Asynchronous Receiver embedded device Transmitter 0 1 1 1 0 1 1 0 – Transmite dado serialmente 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 – Recebe dado serialmente e converte para paralelo Sending UART Receiving UART start bit end bit • Parity: bit extra para data detec ção de erros • Bits de Start e de stop • Baud rate – Mudan ças de sinal por 1 0 0 1 1 0 1 1 segundo – Bit rate é usada frequentemente ����������� ���������������������� ��
Pulse width modulator - - PWM PWM Pulse width modulator • Gera pulsos com pwm_o tempo de high/low clk especificado 25% duty cycle – average pwm_o is 1.25V • Duty cycle: % do pwm_o tempo em nível alto clk – Onda quadrada: 50% duty cycle – average pwm_o is 2.5V. 50% duty cycle pwm_o clk 75% duty cycle – average pwm_o is 3.75V. ����������� ���������������������� ��
Pulse width modulator - - PWM PWM Pulse width modulator • Uso comum: controle de tensão para pwm_o equipamento elétrico clk – Mais simples que 25% duty cycle – average pwm_o is 1.25V conversor DC-DC ou conversor digital- pwm_o anlógico clk – Velocidade de motor, lampadas com controle 50% duty cycle – average pwm_o is 2.5V. de luminosidade pwm_o • Outro uso: codifica ção de comandos, recebe clk temporização do usuário 75% duty cycle – average pwm_o is 3.75V. para decodificar ����������� ���������������������� ��
Controlando um motor DC motor um motor DC motor Controlando com um PWM com um PWM % of Maximum Input Voltage RPM of DC Motor clk_div counter clk Voltage Applied ( 0 – 254) controls how 0 0 0 fast the counter 2.5 50 1840 8-bit counter < increments pwm_o comparator cycle_high, 3.75 75 6900 pwm_o = 1 counter >= 5.0 100 9200 cycle_high, cycle_high pwm_o = 0 Relationship between applied voltage and speed of the DC Motor Internal Structure of PWM void main(void){ The PWM alone cannot drive the 5V DC motor, a possible way to /* controls period */ implement a driver is shown PWMP = 0xff; below using an MJE3055T NPN /* controls duty cycle */ transistor. PWM1 = 0x7f; 5V DC From processor MOTOR while(1){}; } A B ����������� ���������������������� ��
Recommend
More recommend