Usare l'Ambiente Di Simulazione Integrata Con Il tore Keil - Elettronicamente
Transcript of Usare l'Ambiente Di Simulazione Integrata Con Il tore Keil - Elettronicamente
Elettronicamente.comLa risorsa Italiana per l'elettronicae l'informatica applicata all'elettronica
Sponsor
|Home| |Registrazione| | Login| |Disclaimer| |Contattaci| |Guida|
|FAQs|
|Download| |Forum| |Links| |MySite|
Cerca in Elettronicamente:
Cerca
I numeri di Elettronicamente.com:
Iscritti: 13335
Risorse On-Line: 508
Links su siti di elettronica: 1304
Sei il visitatore numero 1268288
Login non eseguito
Descrizione
ID #768 Microcontroller
Usare l'ambiente di Simulazione integrata con il compilatore Keil 07/10/2009Questo tutorial mostra come usare l'ambiente di simulazione integrata nel
compilatore Keil. E' una funzionalità utilissima per eseguir il debug del
proprio software quando non si possiede l'hardware e/o quando non si è
capaci di stimolare l'hardware con i segnali esterni desiderati.
l'ambiente Keil è capace di:
1. simulare la porte RS232 e fornire un terminale virtuale
2. simulare le periferiche del microcontrollore (Timers, Contatori, PWM, etc..)
3. generare degli stimoli da applicare agli ingressi del microcontrollore per poter ferificare
il comportamento del software (è possibile generare delle forme d'onda da applicare agli
input del microcontrollore
4. molto altro ancora...
Difficoltà:
Voto:
2
Autore:
boldinid
HTML: File:
No
Crediti Virtuali:
1
Status:
ONLINE
Usare l'ambiente di Simulazione integrata con ilcompilatore Keil uVision
Cos'è Keil uVision
Non mi sento la persona più indicata per descrivere che cosa è veramente l'ambiente di sviluppouVision di Keil, questo tutorial ha lo scopo di mostrarvi le mie esperienze.
per maggiori dettagli sull'ambiente uVision Keil visitate il sito http://www.keil.com/
Keil uVision supporta una miriade di microcontrollori...Ovviamente per poter seguire questo tutorial dovete aver installato l'ambiente Keil, io uso laversione demo (limitata a compilare 2Kb):
IDE-Version:µVision3 V3.80Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2009License Information:LIC=----Tool Version Numbers:Toolchain: PK166 Prof. Develpers Kit Version: 6.17Toolchain Path: C:\Keil\C166\BIN\EC++ Compiler: EC166.Exe V1.09dC Compiler: C166.Exe V6.17Assembler: A166.Exe V5.30Linker/Locator: L166.Exe V5.25Librarian: LIB166.Exe V4.26Hex Converter: OH166.Exe V4.7aCPU DLL: S166.DLL V3.67Dialog DLL: D167.DLL V2.50Target DLL: BIN\DAS166.DLL V1.10Dialog DLL: T167.DLL V2.49
Recentemente è uscita la versione 4 DEMO che può essere scaricatadal sito: http://www.keil.com
/pr/article/1188.htm
ESERCIZIO 1: simulare una seriale
Come sempre io uso un microcontrollore Infineon, per questo esercizio scelgo il XC164 e seguegli stessi passi già illustrati nel tutorial "DAvE Generatore di Codice", la sola differenza è cheseleziono il micro XC164CM invece che il modello XE164:
Engineering
Base
Nuova
generazione di
CAD Elettrico.
Richiedi gratis il
tuo demo!www.aucotec.com
Corsi di
Elettronica
Diventa Esperto di
Elettronica con
SRE. Contattaci
ora!www.ScuolaRadioElettra.it
Intel® Core™
vPro™
Aggiorna il PC con
il nuovo
processore Intel®
Core™ vPro™
oggi!www.Intel.com/it/Vpro
Conto Corrente
Arancio
per te 100€ di
buoni acquisto
Aprilo subito!web.ingdirect.it/promozione
Progettazione
Elettronica
realizzazione
master PCB
marcatura CE,
produzione e
montaggio circuitiwww.gecoelettronica.com
Archiviazione a
Norma
L'archivio
aziendale è in
regola ? Sigear® -
Sistema Gestione
Archiviwww.sigear.it
Talend: Open
Source ETL
Prodotti ETL:
Veloci, Completi,
Facili ed
Economici!
Scarica gratisdownload.Talend.com/Open-Studio
Studia On Line
Hai poco tempo
per studiare?
Scegli la laurea
online. Info orawww.formazioneadistanzaonline.it
Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet... http://www.elettronicamente.com/engine/default.asp?page=projectvie...
1 di 6 14/03/2011 23:23
Una volta generato il codice: apriamo il progetto cliccando su "<nomeprogetto>.dpt" e, se Keil è correttamente installato, l'ambiente di sviluppo uVision si apriràmostrando i file inclusi nel progetto:
Tanto per essere sicuri che Keil è ben installato, io lancio una compilazione prima di ogniulteriore modifica:
0 Error(s) e 0 Warning(s) è proprio quello che si deve ottenere!
Modifica del main() per poter usare la funzione printf()
Bene, ora per poter usare la printf, dobbiamo semplicemente aggiungere nel main():
// USER CODE BEGIN (MAIN_General,2)#include <stdio.h> /* standard I/O .h-file */#include <string.h>..// USER CODE END
...
void main(void){ // USER CODE BEGIN (Main,2) // USER CODE END
MAIN_vInit();
// USER CODE BEGIN (Main,4) printf ( "PROVA RS232!!!\n\n" ); ASC0_ubTxDataReady();
while (1) ;
// USER CODE END
} // End of function main
l'aggiunta della chiamata "ASC0_ubTxDataReady();" è necessaria solo la prima volta per convincere la seriale a trasmettere il
primo byte, per le sucessive printf non è necessaria alcuna chiamata a tale funzione.
Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet... http://www.elettronicamente.com/engine/default.asp?page=projectvie...
2 di 6 14/03/2011 23:23
Simulazione del programma con Keil uVision
Prima bisogna settare il simulatore:
==> selezionate il bottone"Options for Targets" e selezionate il tab "DEBUG":
==> per poter usare il simulatore bisogna selezionare l'opzione "Use Simulator" posizionato inalto a sinistra:
==> dopo aver selezionato OK possiamo abilitare il DEBUGGER:
==> per iniziare potete usare la funzione "Show current statement on program counter" perfarvi mostrare la linea di codice corrispondente all'attuale Program Counter (PC):
==> ora potete aprire il terminale RS232 virtuale selezionando l'icona: ==> ora lanciate l'esecuzione (F5 per RUN come in tutti i compilatori) ed osserverete la stringadesiderata:
Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet... http://www.elettronicamente.com/engine/default.asp?page=projectvie...
3 di 6 14/03/2011 23:23
... ma funziona veramente ?!?
ESERCIZIO 2: simulare una conversione ADC
Ora per essere veramente convinti che il simulatore funziona modifichiamo il codice in:
... MAIN_vInit();
// USER CODE BEGIN (Main,4) printf ( "SERVO TESTER is RUNNING !!!\n\n" ); ASC0_ubTxDataReady();
while (1) { printf ( " AN1: %02X\n", ((ADC_uwReadConv()>>2) & 0x3FF) );
} // USER CODE END
Compilate e rilanciate il simulatore, otterrete:
==> chiaramente se avessimo aggiunto una linea di codice del tipo "printf ( " AN1: %02X\n",i++);" avremmo ottenuto qualcosa di diverso...
Per mostrarvi le potenzialità del simulatore, cercheremo di applicare una tensione "virtuale" aipin "virtuali" del microcontrollore per verificare che:
si possono applicare delle forme arbitrarie ad ogni pin del microcontrollore1.
i moduli periferici sono anch'essi simulabili (Timers, PWM, ADC, ...)2.
la printf stampa quanto atteso3.
STEP 1.
prepariamo uno script per stimolare virtualmente l'ingresso del convertitore ADC:
signal void ADC0_Konst (void){float fValue; // analogue port value fValue = 2.5; while(1) { swatch (0.05);
AN12 = fValue; // set analogue voltage }}define button "Applica Costante", "ADC0_Konst();g"
==> salviamo lo script in un file <nome progetto>.ini (es. ASC.ini) e rilanciamo il DEBUGER
selezionando la toolbox: , si dovrebbe aprire una finestrella con dei bottoni, un bottone
presenterà la scritta "Applica Costante": , pigiatelo ed otterete:
STEP 2.
la tensione sull'ingreso AN12 sarà posta a 2.5V:
Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet... http://www.elettronicamente.com/engine/default.asp?page=projectvie...
4 di 6 14/03/2011 23:23
STEP 3.
la coversione dell'ADC mostrerà 0x1FF, cioè metà dell'intero range 0 - 5V (infatti 2.5V è
esattamente la metà del range):
Wow sembra funzionare davvero !!!!
ESERCIZIO 3: simulare una Sinusoide
L'ultimo esperimento è quello di applicare una forma d'onda sinusoidale all'ingresso dell'ADC(AI12), aggiungiamo allo script la seguente subroutine:
//// Generate Sine Wave Signal on AD Channel 0//signal void ADC0_Sine (void) { float volts; // peak-to-peak voltage float frequency; // output frequency in Hz float offset; // voltage offset float duration; // duration in Seconds float val; long i, end;
volts = 1.4; offset = 1.6; frequency = 180; duration = 5;
printf ("Sine Wave Signal on AD Channel 12.\n");
end = (duration * 100000); for (i = 0 ; i < end; i++) { val = __sin (frequency * (((float) STATES) / CLOCK) * 2 *3.1415926); AN12 = (val * volts) + offset; swatch (0.00001); // in 10 uSec steps }}
...
define button "Applica Sine", "ADC0_Sine();g"...
otteniamo:
Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet... http://www.elettronicamente.com/engine/default.asp?page=projectvie...
5 di 6 14/03/2011 23:23
e:
Ovviamente molto altro è possibile, ma ora sono stanco e mi congedo...
Spero di avervi mostrato come effettuare delle simulazioni etrovare molto più rapidamente i problemi dei vostri software!!!
Cloud
Elettronicamente.com PICmicro RS232 FT232 P8X32A Parallax PIC16F84 Programmatore Elettronica PCB Circuito
Stampato Fotoincisione Microchip PIC16F876 Linguaggio AVR Linux NE555 ARM HD44780 DISPLAY LCD Alimentatore XE164 Infineon LED
Amplificatore Laboratorio Resistenza Condensatore Termometro PWM relazionewww.Elettronicamente.com
Utenti attualmente connessi:
(Nessuno)
Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet... http://www.elettronicamente.com/engine/default.asp?page=projectvie...
6 di 6 14/03/2011 23:23