Sei sulla pagina 1di 6

Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet...

http://www.elettronicamente.com/engine/default.asp?page=projectvie...

Elettronicamente.com
La risorsa Italiana per l'elettronica e l'informatica applicata all'elettronica
|Home| |Registrazione| |
Login| |Disclaimer| |Contattaci | |Guida|

Sponsor Cerca in Elettronicamente:


Cerca

|FAQs| |Download| |Forum| |Links| |MySite|

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

Engineering Base Nuova generazione di CAD Elettrico. Richiedi gratis il tuo demo!
www.aucotec.com

Descrizione

ID #768 Microcontroller

Difficolt:
07/10/2009

HTML:

File:

Usare l'ambiente di Simulazione integrata con il compilatore Keil

Corsi di Elettronica Diventa Esperto di Elettronica con SRE. Contattaci ora!


www.ScuolaRadioElettra.it

Questo 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...

Voto: 2 Autore: boldinid

No
Crediti Virtuali: 1 Status:
ONLINE

Progettazione Elettronica realizzazione master PCB marcatura CE, produzione e montaggio circuiti
www.gecoelettronica.com

Usare l'ambiente di Simulazione integrata con il compilatore Keil uVision


Cos' Keil uVision

Archiviazione a Norma L'archivio aziendale in regola ? Sigear Sistema Gestione Archivi


www.sigear.it

Intel Core vPro Aggiorna il PC con il nuovo processore Intel Core vPro oggi!
www.Intel.com/it/Vpro

Non mi sento la persona pi indicata per descrivere che cosa veramente l'ambiente di sviluppo uVision 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 la versione demo (limitata a compilare 2Kb):
IDE-Version: Vision3 V3.80 Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2009 License Information: LIC=---Tool Version Numbers: Toolchain: PK166 Prof. Develpers Kit Version: 6.17 Toolchain Path: C:\Keil\C166\BIN\ EC++ Compiler: EC166.Exe V1.09d C Compiler: C166.Exe V6.17 Assembler: A166.Exe V5.30 Linker/Locator: L166.Exe V5.25 Librarian: LIB166.Exe V4.26 Hex Converter: OH166.Exe V4.7a CPU DLL: S166.DLL V3.67 Dialog DLL: D167.DLL V2.50 Target DLL: BIN\DAS166.DLL V1.10 Dialog DLL: T167.DLL V2.49

Talend: Open Source ETL Prodotti ETL: Veloci, Completi, Facili ed Economici! Scarica gratis
download.Talend.com/Open-Studio

Conto Corrente Arancio per te 100 di buoni acquisto Aprilo subito!


web.ingdirect.it/promozione

Studia On Line Hai poco tempo per studiare? Scegli la laurea online. Info ora
www.formazioneadistanzaonline.it

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 segue gli stessi passi gi illustrati nel tutorial "DAvE Generatore di Codice", la sola differenza che seleziono il micro XC164CM invece che il modello XE164:

1 di 6

14/03/2011 23:23

Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet...

http://www.elettronicamente.com/engine/default.asp?page=projectvie...

Una volta generato il codice: apriamo il progetto cliccando su "<nome progetto>.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 ogni ulteriore 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.

*/

2 di 6

14/03/2011 23:23

Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet...

http://www.elettronicamente.com/engine/default.asp?page=projectvie...

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 in alto a sinistra:

==> dopo aver selezionato OK possiamo abilitare il DEBUGGER:

==> per iniziare potete usare la funzione "Show current statement on program counter" per farvi 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 stringa desiderata:

3 di 6

14/03/2011 23:23

Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet...

http://www.elettronicamente.com/engine/default.asp?page=projectvie...

... 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" ai pin "virtuali" del microcontrollore per verificare che:
1. si possono applicare delle forme arbitrarie ad ogni pin del microcontrollore 2. i moduli periferici sono anch'essi simulabili (Timers, PWM, ADC, ...) 3. la printf stampa quanto atteso

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; } } 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 , pigiatelo ed otterete: // set analogue voltage

presenter la scritta "Applica Costante": STEP 2. la tensione sull'ingreso AN12 sar posta a 2.5V:

4 di 6

14/03/2011 23:23

Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet...

http://www.elettronicamente.com/engine/default.asp?page=projectvie...

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 void ADC0_Sine { float volts; float frequency; float offset; float duration; float val; long i, end; volts offset frequency duration = = = = 1.4; 1.6; 180; 5;

Signal on AD Channel 0 (void) // // // // peak-to-peak voltage output frequency in Hz voltage offset duration in Seconds

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:

5 di 6

14/03/2011 23:23

Usare l'ambiente di Simulazione integrata con il compilatore Keil - Elet...

http://www.elettronicamente.com/engine/default.asp?page=projectvie...

e:

Ovviamente molto altro possibile, ma ora sono stanco e mi congedo...

Spero di avervi mostrato come effettuare delle simulazioni e trovare molto pi rapidamente i problemi dei vostri software!!!

Cloud

Elettronicamente.com

PICmicro

RS232 FT232 P8X32A Parallax

PIC16F84 Programmatore Elettronica PCB Circuito


Infineon LED

Stampato Fotoincisione Microchip PIC16F876

Linguaggio AVR Linux NE555 ARM HD44780 DISPLAY LCD Alimentatore XE164 Amplificatore Laboratorio Resistenza Condensatore Termometro PWM relazione
www.Elettronicamente.com

Utenti attualmente connessi: (Nessuno)

6 di 6

14/03/2011 23:23

Potrebbero piacerti anche