Davide Gennaretti, Matteo Nicolini

Documenti analoghi
Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Corso di programmazione Arduino DI MALVEZZI DAVIDE

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo

Architettura dei Microcontrollori Microchip PIC18F

CORSO DI PROGRAMMAZIONE MICROCONTROLLORI

Architetture dei sistemi elettronici 14. Il microcontrollore

All interno di un ATmega16 troviamo moltissimi dispositivi trai quali, timer, gestori delle interupt personalizzabili, convertitori A/D, multiplexer

Microcontrollori 12/03/2014. Progettazione Sistemi Elettronici 2013/2014 1

Architettura del PIC 18F452

Elettronica dei Sistemi Programmabili A.A Microcontrollori. Introduzione allo sviluppo di progetti

Corso di Sistemi di Elaborazione A.A. 2008/2009

Architettura dei Calcolatori Elettronici

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

Ingegneria e Tecnologie dei Sistemi di Controllo. Unità di Elaborazione: MicroControllori e DSP

LAMPEGGIO LED TRAMITE TIMER INTERRUPT - PARTE 4 1

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Indice. Introduzione 15. L hardware 24. Il software 43. Introduzione al linguaggio di Arduino 60. Basi del linguaggio di Arduino 65

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.

Architettura dei calcolatori

Componenti e connessioni. Capitolo 3

Componenti principali

Alimentatore master. Introduzione

introduzione I MICROCONTROLLORI

8 Microcontrollori PIC

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino

Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP

Introduzione. Caratteristiche generali. Sistemi e Tecnologie per l'automazione LS. HW per elaborazione digitale in automazione: Microcontrollori e DSP

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole.

TUTORIAL GPL_BENZINA CON PIC16F1826 (UTILIZZO DELL ADC)

Introduzione alla scheda Arduino/Genuino

UNA INTRODUZIONE AL MONDO DEI MICROCONTROLLORI

GENERATORE DI BASE TEMPI

Verso Arduino... E oltre!

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.

Lezione 22 La Memoria Interna (1)

Microelettronica Corso introduttivo di progettazione di sistemi embedded


Qualche informazione sul microcontrollore PIC

Spazio di indirizzamento virtuale

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE

Corso introduttivo sui microcontrollori A. S La programmazione dei PIC Esempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

cpu CONTROLLORI DI I/O ADDRESS BUS CONTROL BUS DATA BUS D[0:7] dec CS# RD# WR# A0,..An RESET ...?

ELETTRONICA II. Prof. Dante Del Corso - Politecnico di Torino

A.S. 2015/16 CLASSE 5 AEE MATERIA: LABORATORIO DI T.P.S.E.

Macchina di von Neumann/Turing

Il Processore: l unità di controllo

Laboratorio di metodi di acquisizione dati. Giorgio Maggi

MICROCONTROLLORI. Laboratorio di Segnali e Sistemi II - Arduino

6: Macchina di Von Neumann

Arduino. Sezione di Misure e Tecniche Sperimentali

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

LA GESTIONE DELLA I/O

Componenti di un processore

Transcript:

Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena

Cosa sono i microcontrollori? Piccoli computer concentrati in un chip Un Datapath con Una ALU. Decoder per POCHE istruzioni. Registri generali (e funzione) Eventuale Interrupt Controller RAM x dati. EPROM (o FLASH) x codice. Porte di I/O digitale. Altre periferiche Timer interno AD Converter USART (seriale) EEPROM dati

A cosa servono i micro? Tutto quello che è difficile fare a componenti discreti, ma metterci un PC è troppo! Applicazioni stand alone, semplici e poco costose: Distributori Automatici Strumenti intelligenti Centraline: Macchine automatiche Automotive Sistemi Distribuiti

Caratteristiche Essenziali Facile ed affidabile, basta non chiedere troppo Facilità di lavoro Semplice montaggio su scheda E tutto dentro (oggi anche il clock!) Non serve progettare una MotherBoard! Semplice Programmazione ASM con poche, semplici istruzioni Disponibili compilatori Asm, C, basic, Molte funzionalità Hardware integrate Affidabilità e robustezza Una volta programmato VA! Limiti nelle prestazioni Flessibilità (c e quello che c è ) Potenza di calcolo limitata

Cosa offre il Mercato Tutto e di più: attenzione alla scelta. Varie Marche Microchip, Motorola, STM, NEC, etc Vari tagli Processore: RISC, 8 bit e 16 Bit (pochi a 32). Memorie: 1K-1M (codice), 128-16K (dati). Pinout: da 8 pin a 80. Interrupt, Power Saving, Periferiche: Porte digitali Comunicazione Seriali, Parallela, CAN, USB, etc. ADC DAC driver PWM comparatori Analogici Timer, Oscillatori secondari Varie tipologie di programmazione Assembler, Compilatori C, Basic, etc.

Noi qui oggi parliamo del Microchip PIC Caratteristiche Hardware Architettura Interna Organizzazione di Memoria Istruzioni e Stack Dati (RAM e EEPROM) Instruction Set Main Code vs Interrupt Routine Service Programmazione in C poi vediamo. Alimentazione e Reset Oscillatore di Sistema Porte di Ingresso e Uscita Porte con funzioni Speciali: PortA ADC PortB Interrupt On Change PortC USART e SPI-I2C Periferiche: Timer 1

PIC 18x: Caratteristiche HW

PIC 18x: Architettura Interna Instruction Path: PC Flash Program Memory Istruzione Corrente: Decodifica Esecuzione Data Path: ALU su W-Register e MUX-Value Porte, Periferiche Configuration: Oscillatore WatchDog

Organizzazione della Memoria Due blocchi di memoria separati (Harward Architecture): Instruction Memory (& Stack): 21 Bit di Program Counter 2 Interrupt location (2 Level IRQ) Single Bank Instruction Memory Data Memory (& EEPROM): 4/16 Banks da 256 byte SFR nella parte ALTA, GPR in basso.

PIC 18x: Instruction Set Aritmetiche e Logiche su Byte e Letterali Operazioni su Singolo Bit Controllo Programma e Stack (Interrupt, Subroutines)

Main Flow vs Interrupt Routine Service (IRS) Cosa succede quando arriva un interrupt? Alla partenza (dopo ogni Reset) si parte dalla locazione 0000H, e si salta al Main, che fa le inizializzazioni, attiva il Global Interrupt Enable e parte il suo ciclo infinito. All arrivo di un Interrupt (di livello 0) il PIC passa a eseguire la locazione 0008H, che rimanda alla IRS0, dove è eseguito il segmento relativo al Interrupt che si è attivato, poi si ritorna al Main Flow. 0000H (Reset Vector) 0008H (IRQ0 Vector) 0018H (IRQ1 Vector) 0020H (Main Start) 2000H (IRS Start) Goto Main (0020H) Goto IRS0 (2000H) Goto IRS1 (2000H) Main Flow: Inizializzazioni, GIE=1 CICLO INFINITO (Macchina a Stati) IRS0: Test Interrupt Flag: Se TMR1IF Segmento Timer1 Se ADCIF Segmento ADC Return from Interrupt

PIC 18x: Programmazione in C ovvero come faccio convivere la gestione degli Interrupt con la programmazione in C void main () { Impostazioni iniziali Direzione delle PORTE Valore iniziale delle PORTE Periferiche di Comunicazione Timer Altre Periferiche Attivazione del GIE (Global Interrupt Enable) Ciclo infinito while (1) { Macchina a Stati, che attiva: Comunicazioni Misure } } Temporizzazioni Void isr () { BASE DATI = STATO Int Time; Char * RX-Seriale; Int Dato-ADC; If ( timer ) { routine gestione timer Aggiorna Time } If ( RX Seriale ) { Salva il byte ricevuto nel buffer RX-Seriale } If ( ADC Conversion Finita ) { Salva il dato letto nel buffer }... }

Alimentazioni Due versioni per ogni Chip Flash (F) Alimentazione e Reset Funzionamento a 5V, ± 10% Velocità anche molto alta Flash Low Voltage (LF) Da 2 Volt a 5,5V Velocità ridotta Rete R-C per il Power On Reset (POR) Basso costo

Diverse soluzioni possibili (mediante il registro di configurazione del PIC) Oscillatore di Sistema Quarzo o Risonatore Ceramico Altissima Precisione Velocità di Clock anche molto alta Consumo elevato Innesco lento Due pin necessari (osc. IN-OUT) Oscillatore Esterno (Quarzo o no) Solo un pin necessario (osc. IN) Maggior Costo Rete R-C Bassa precisione (10-20%) Basso costo Solo un pin necessario

Porte di Ingresso/Uscita Digitali Organizzate in PORT da 8 bit ciascuno: Registro di Direzione TRIS (contiene 1 nei bit relativi ai pin che saranno USCITE) Registro di Valore PORT (contiene 1 nei bit relativi ai pin che saranno ALTI) Read-Write diretto Alta corrente di uscita RIN 8

Porte con Funzioni Speciali: PortA ADC possibile uso come ingressi analogici: (ADC da 8-10 bit) TRIS e PORT Registri di Controllo ADC

Porte con Funzioni Speciali: Port B IRQ On Change; Port C RS232 PortB: IRQ On Change PortC: USART & (I2C o SPI)

Periferiche: Timer 1 Timer 0,1,2: sono CONTATORI PROGRAMMABILI con ingresso ESTERNO o INTERNO (CLK); Prescaler fisso (1,2,4,8) e Conteggio a 8 o 16 bit. A fine conteggio attivano un INTERRUPT (TMR1IF)

Demo: MPLAB ICD2 PICDEM2+ Software MPLAB (PC) Editor Compilatore C Debugger Interfaccia USB In Circuit Debugger 2 Programmatore Debugger Solo quattro fili PIC 18F242 su Scheda di Test PICDEM2 Plus: Led e Tasti, Display LCD Ingressi Analogici RS232, etc

Schema Elettrico

MPLAB: esempi di programma Analisi delle Routine di Basso livello Inizializzazione Porte LCD Setup e Attivazione ADC Setup del Timer, IRS Setup e Utilizzo RS232 Conteggio di S2 e visualizzazione sui LED Solo fronte di Salita Debounce Uscita anche sul LCD Lettura del ADC Scrittura sul LCD Frame Rate? Timer. Uscita sulla RS232.

MPLAB

Organizzazione del software void main () { Impostazioni iniziali Direzione delle PORTE Valore iniziale delle PORTE Periferiche di Comunicazione Timer Altre Periferiche Eventuale attivazione del GIE (Global Interrupt Enable) Ciclo infinito while (1) { Macchina a Stati, che attiva: } } LCD ADC Temporizzazioni Seriale

Organizzazione del software Libreria di funzioni che vengono incluse nel main flow Chiamata diretta ad alto livello Implementazione a basso livello trasparente Maggior leggibilità del software

Utilizzo delle porte ovvero operazioni di INPUT-OUTPUT su TASTI, LED Inizializzazione Porte Rilevazione della pressione di un tasto Conteggio del numero di pressioni del tasto Problema del bounce Scrittura sui LED collegati a PORTB

Utilizzo delle porte ovvero operazioni di INPUT-OUTPUT su TASTI, LED e LCD Inizializzazione Porte Inzializzazione LCD Cancellazione LCD Scrittura su LCD (cont=) Rilevazione della pressione di un tasto con debounce SW Scrittura del risultato su LCD

Utilizzo del convertitore AD ovvero lettura di un segnale analogico e sua visualizzazione a display Inizializzazione Porte Inzializzazione LCD Inizializzazione ADC Cancellazione LCD Scrittura su LCD (adc=) Rilevazione della pressione di un tasto Conversione analogico-digitale Conversione dei dati binari in esadecimale Scrittura su LCD in esadecimale