Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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|
I numeri di Elettronicamente.com: Iscritti: 13335 Risorse On-Line: 508 Links su siti di elettronica: 1304 Sei il visitatore numero 1268288
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:
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...
No
Crediti Virtuali: 1 Status:
ONLINE
Progettazione Elettronica realizzazione master PCB marcatura CE, produzione e montaggio circuiti
www.gecoelettronica.com
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
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
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
http://www.elettronicamente.com/engine/default.asp?page=projectvie...
Simulazione del programma con Keil uVision Prima bisogna settare il simulatore:
==> per poter usare il simulatore bisogna selezionare l'opzione "Use Simulator" posizionato in alto a sinistra:
==> 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
http://www.elettronicamente.com/engine/default.asp?page=projectvie...
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
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
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
http://www.elettronicamente.com/engine/default.asp?page=projectvie...
e:
Spero di avervi mostrato come effettuare delle simulazioni e trovare molto pi rapidamente i problemi dei vostri software!!!
Cloud
Elettronicamente.com
PICmicro
Linguaggio AVR Linux NE555 ARM HD44780 DISPLAY LCD Alimentatore XE164 Amplificatore Laboratorio Resistenza Condensatore Termometro PWM relazione
www.Elettronicamente.com
6 di 6
14/03/2011 23:23