Elettronicamente.com
La risorsa Italiana per l'elettronica
e l'informatica applicata all'elettronica
  Sponsor
|Home| |Registrazione| |Login| |Disclaimer| |Contattaci| |Guida| |FAQs|
|Download| |Forum| |Links| |MySite|
Cerca in Elettronicamente:
 
I numeri di Elettronicamente.com:
  Iscritti: 12853
  Risorse On-Line: 508
  Links su siti di elettronica: 1304
  Sei il visitatore numero 1171359
Login non eseguito
Descrizione
ID #708  Tutorials
Propeller P8X32A - Parte 3 - Esercizio#5   07/03/2009
In questo esercizio vedremo la funzionalità "Parallel Processing", ovvero come utilizzare più COG contemporaneamente, facendo lampeggiare due led nello stesso momento.
Difficoltà:
Difficoltà di realizzazione o apprendimento. 2 stella/e.

Voto:
n.d.
Voto attuale (1/10) calcolato in base alla media delle votazioni di tutti gli iscritti che hanno votato questa risorsa.

Autore:
atomix
Autore della risorsa:atomix
HTML:
In questa casella viene indicato se è disponibile una pagina web da visualizzare.
File:
No
Allegato disponibile:
In questa casella viene indicato se è disponibile un file da scaricare.

Crediti Virtuali:
Free
Crediti virtuali necessari per scaricare il file allegato:0

Status:
ONLINE
Partecipa al FORUM di Elettronicamente.com per questo argomento.


Esercizio# 5 - Processi paralleli (Parallel processing) - Output.spin 

Negli esercizi precedenti è stato finora utilizzato un solo cog per l'esecuzione del programma e quindi per il lampeggio di uno o più led in sequenza. Questo modo di funzionamento è chiamato "processo seriale" (serial processing), in quanto il cog in uso ha eseguito il lampeggio del primo led, e al termine dell'esecuzione, ha eseguito il lampeggio del secondo led e così via.
Supponiamo ora di voler far lampeggiare i led simultaneamente, collegati su pin diversi e con velocità diverse. Il codice di seguito riportato, per questo esercizio, introduce una nuova istruzione che ha lo scopo di 'attivare' un nuovo cog in parallelo a quello già in funzione e assegnargli un compito, ossia quello di eseguire il lampeggio di un secondo led contemporaneamente al lavoro del primo cog (parallel processing).

 

{{Output.spin

Lampeggio simultaneo di due leds.}} 

VAR 

  long Stack[9] ' Dimensione delle stack per il nuovo cog 

PUB Main 

  cognew(Toggle(16, 3_000_000, 10), @Stack) 'Lampeggio pin 16 (10 volte)
  Toggle(17, 2_000_000, 20) 'Lampeggio pin 17 (20 volte)
 

PUB Toggle(Pin, Delay, Count) 

  {{Inverti lo stato del Pin tante volte quanto indicato in Count, e
attendi il tempo Delay tra una inversione e l'altra.}}

   dira[Pin]~~ ' Imposta il registro di direzione
   repeat Count ' Ripeti tante volte quanto in Count
       !outa[Pin] ' Inverti lo stato logico del Pin
       waitcnt(Delay + cnt) ' Attendi i cicli indicati in Delay


 

In questo programma è stato reintrodotto il blocco 'VAR' in quanto è necessario impostare una variabile indicizzata dimensionata con un valore di "spazio necessario" per le operazioni di stack del nuovo cog.
Il metodo Main (il primo ad essere eseguito dal cog 0), attiva un nuovo cog tramite l'istruzione 'cognew', passando come parametri il nome del metodo che questo dovrà eseguire (Toggle) più il nome della variabile indicizzata da utilizzare come stack (passata come indirizzo). Il nome del metodo da eseguire, verrà passato con tutti i suoi parametri necessari per il lampeggio del led (pin=16, Delay=3.000.000, Count=10). Il prefisso '@' prima del nome della variabile indica al compilatore che la variabile da passare al metodo non si riferisce al suo valore, ma al suo indirizzo di memoria, così da permettere alla routine di programma che riceverà questa informazione, la possibilità di poter manipolare l'intero contenuto, semplicemente modificando (o leggendo) i dati a partire dall'indirizzo di memoria passato. Dopo aver attivato e assegnato il compito da eseguire al nuovo cog, il cog 0 continuerà l'esecuzione del suo programma, facendo lampeggiare il suo led collegato al pin 17 per 20 volte utilizzando lo stesso metodo passato al nuovo cog (Toggle). Quindi in questo esempio abbiamo visto come utilizzare due cog contemporaneamente, facendo eseguire lo stesso lavoro per entrambi utilizzando gli stessi metodi, ma utilizzando parametri diversi (Pin, Delay e Count).
 
 


 

Quando il programma viene eseguito dal propeller, il primo cog (cog0) carica l'interprete SPIN nella sua memoria RAM per l'esecuzione del metodo Main, successivamente all'esecuzione della istruzione COGNEW, viene attivato il cog immediatamente disponibile (in questo caso il cog 1) caricando anch'esso l'interprete nella sua memoria RAM. Entrambi eseguiranno il metodo TOGGLE leggendo le istruzioni dalla memoria principale (Main RAM), ma utilizzando per ciascuno di essi, un loro 'spazio personale' (stack) e parametri diversi (Pin, Delay e Count).


 

 

Parte 3 - Esercizio#4 Indice Parte 3 - Esercizio#6



 

 
Cod.33210
Sistema di sviluppo molto compatto per il chip Propeller P8X32A-M44 con interfaccia USB utilizzabile anche come modulo per i prototipi.
Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1629
Acquista ora questo prodotto su

a € 80.10
+iva
invece di € 89.00+iva
RISPARMI IL 10%

Q.ta
 
Cod.32311

Kit accessori Propeller: Mini Tastiera (PS/2), Mouse ottico (PS/2), LCD 2.5"

Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1153
Acquista ora questo prodotto su

a € 125.10
+iva
invece di € 139.00+iva
RISPARMI IL 10%

Q.ta
 
Cod.32300

Scheda di sviluppo per Propeller, con programmatore USB

Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1160
Acquista ora questo prodotto su

a € 103.50+iva

invece di € 115.00+iva
RISPARMI IL 10%

Q.ta
 
Cod.P8X32A-D40

Microprocessore Propeller DIL 40 P8X32A-40

Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1149
Acquista ora questo prodotto su

a € 8.01
+iva
invece di € 8.90+iva
RISPARMI IL 10%

Q.ta
 
Cod.ESP8X32A-Q44

Microprocessore Propeller QFTP P8X32A-Q44

Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1150
Acquista ora questo prodotto su

a € 8.01+
iva
invece di € 8.90+iva
RISPARMI IL 10%

Q.ta
 
Cod.ES122-32000

Manuale tecnico del microcontrollore Propeller

Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1163
Acquista ora questo prodotto su

a € 35.10
+iva
invece di € 39.00+iva
RISPARMI IL 10%

Q.ta
 
Cod.3ES32111

Propeller Professional Development Board
Board di sviluppo professionale per Propeller

Documentazione: [Link]
Schema elettrico: [Link]
Acquista ora questo prodotto su

a € 170.55
+iva
invece di € 189.50+iva
RISPARMI IL 10%

Q.ta
 
Cod.ES32212

E' una scheda millefori con dimensioni 8x10 cm, con incluso un Propeller gia' saldato, la Eeprom da 64 KB, l'alimentatore a 5 e 3,3 volt, una zona predisposta per il montaggio del connettore VGA e quelli per mouse e tastiera


Acquista ora questo prodotto su

a € 31.50
+iva
invece di € 35.00+iva
RISPARMI IL 10%

Q.ta
 
Cod.130-32212



Componenti sciolti: tra cui un blocco (come nei PC) che contiene connettore VGA e due connettori PS2 e le resistenze per il collegamento al Propeller, che si sposano con la propeller Proto Board

Acquista ora questo prodotto su

a € 19.35+iva
invece di € 21.50+iva
RISPARMI IL 10%

Q.ta
 
Cod.32201

 

 

 E' l'adattatore USB/seriale per poter programmare il Parallax per mezzo della USB            

Acquista ora questo prodotto su

a € 26.55+iva
invece di € 29.50+iva
RISPARMI IL 10%

Q.ta
 
Cod.32305

 

Contiene un libro, il Prop Plug, una breadboard, un
Propeller a 40 pin e componenti sciolti, una scatola di plastica che contiene la breadboard e tutti i componenti sciolti

Acquista ora questo prodotto su

a € 103.50+iva
invece di € 115.00+iva
RISPARMI IL 10%

Q.ta
 
Cod.32100

Scheda di sviluppo per Propeller 44 pin QFP

Ulteriori info:
http://www.elettroshop.com/dettagli.asp?pid=1159
Acquista ora questo prodotto su

a € 80.55+iva

invece di € 89.50+iva
RISPARMI IL 10%

Q.ta
  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 relazione
www.Elettronicamente.com
Utenti attualmente connessi:
(Nessuno)