sabato 6 luglio 2019

In ricordo

Accludo due link in ricordo

Angles of view

Angles of reflection


Il lato oscuro

I linguaggi ad medio ed alto livello hanno asfaltato le caratteristiche dei microcontrollori. Per i firmwaristi odierni che programmano in linguaggi complessi non ci sono più differenze funzionali fra un micro e l'altro.

La programmazione Assembly ha il "difetto" di amplificare le grandi differenze che esistono fra i microcontrollori. Programmare in Assembly non paga.

Esempio di differenza architettura Hardware nei micro:

Microcontrollore            Il numero di istruzioni assembly

Microchip PIC16C57     33
Zilog Z80.                      158
8051                                115



domenica 30 giugno 2019

Von Neumann vs Harvard

I microcontrollori dall'esterno sono tutti uguali all'interno sono molto diversi. Una differenza sostanziale era quella dell'architettura hardware dei micro che si suddividono sostanzialmente in due tipi

  • Von Neumann
  • Harvard

L'architettura Von Neumann ha un unico spazio di memoria dove viene condivisa l'area dati da quella del codice.

Immagine correlata

Nell'architettura Harvard le due memorie sono separate.

Immagine correlata

Dalla figura soprastante viene evidenziato il collo di bottiglia della architettura von Neumann. L'architettura Harvard riesce a parallelizzare l'esecuzione delle istruzioni con l'accesso alla memoria incrementando l'efficienza della computazione.

sabato 29 giugno 2019

La prima applicazione PID

Siamo intorno la primavera del 1994 qualcuno ci disse che eravamo riusciti a poter fare dei test funzionali veri in una preserie di lavatrici. Imparai presto cosa significava catena di montaggio. Così il nostro piccolo laboratorio doveva accellerare per risolvere gli ultimi problemini nel controllo di velocità.


Una delle caratteristiche del controllo motore era l'implementazione di un PID per la necessaria stabilizzazione della velocità.

Il mercato ci imponeva di sviluppare con PIC16C57. 



Microcontroller molto aggressivi ma con con solo 2K rom. Beh, sì, non sono 2K byte perché l'istruzione del microship è lunga 12 bit ma comunque. Sempre 2K erano


In questo video un'interessante lezione sul PID







In quest'altro video alcune caratteristiche meccaniche del motore




uKernel per PIC16C67

Il progetto più complesso sviluppato è stato senza dubbio il controllo motore con anti-sblinaciamento. Questo è stato anche il primo progetto serio per una grande azienda italiana di elettrodomestici, San Giorgio. 


Anche in questo caso l'intero progetto era stato sviluppato in codice Assembly su un microcontrollore della società che avrebbe presto esaurito l'intero mercato mondiale a 8 bit. 


Il micro era il mitico PIC16C57 ma anche in questo caso avevamo pensato di sviluppare da noi stessi un kernel per gestire i processi interni.

SCHEDULER CLRWDT ; clear wdog ;------------------------------------ ; GESTIONE TIMER DI SISTEMA E TASK GEST_RTCC MOVFW RTCC XORWF RTCC_COPY,W BTFSC STATUS,Z GOTO P_TASK INCF RTCC_COPY,Same ; avanza di un passo il mio orologio C_TASK_0 ; controllo task 0 TASK set 0 BTFSC RET_ADD+TASK,7 ; testa se evento o tempo DECF COND+TASK,SAME
C_TASK_1 TASK set 1 BTFSC RET_ADD+TASK,7 ; testa se evento o tempo DECF COND+TASK,SAME
C_TASK_2 ; controllo task 2 TASK set 2 BTFSC RET_ADD+TASK,7 DECF COND+TASK,SAME


uKernel per 8051

Molti anni fa il codice nel sistema embedded era praticamente scritto in Assembly (e non in Assembler). L'assembly è la lingua dei microprocessori. Il codici sviluppati in quel periodo erano molto densi con molte funzionalità. 

In questo caso, la nostra applicazione doveva consentire un comportamento fluido e uniforme per tutti i cursori che potevano essere spostati simultaneamente. Abbiamo progettato un kernel con uno scambio di contesti semplice ma molto efficace e creato molte attività necessarie per gestire i comportamenti paralleli.

Event e Semaphore erano parte fondamentale di questo kernel 8051

;================================== ; WAIT_SEMAPHORE ; COMMENT : PROCEDURA DI ATTESA SEMAFORO ; ; ON ENTRY : ( INDICE_TABELLA ) INDICE ; ON EXIT : NONE ;==================================== WAIT_SEMAPHORE: ;---------- SALVA CONTESTO TASK CHIAMANTE POP SAVEPCH POP SAVEPCL CALL SAVE_CONTEXT MOV EVERGREEN,hashtagGREEN ;---------- PASSAGGIO A TASK SUCCESSIVA NEXT_TASK: INC TSK_CNT MOV A,TSK_CNT DEC A CLR C SUBB A,TSK_MAX JC OK_TASK_NUMBER MOV TSK_CNT,#1 OK_TASK_NUMBER:

MIDI ed embedded

Questo era il futuristico emulatore Metalink che abbiamo usato per i sistemi embedded con il microprocessore 80MC522 di Philips. Uno dei tanti derivati dell'80C51. 

https://www.nxp.com/docs/en/data-sheet/80C552_83C552.pdf?


Il microcontrollore era un derivato del microprocessore 8088 utilizzato per le schede su PC. Le prestazioni anche se ridimensionate ad 8 bit erano di primissimo rilievo tanto che si potevano fare dei veri e propri PC industriali.


L'insolito apparato è stato progettato per testare i parametri del Midi una caratteristica utile per le applicazioni musicali professionali. Il protocollo MIDI è la base delle strumentazioni musicali digitali.

https://docs.isy.liu.se/pub/VanHeden/DataSheets/The_MIDI_Specification.pdf

Ogni canale era stato configurato con uno dei parametri e testato con SoundGenerator. Non mi sono mai annoiato di fronte a 2 altoparlanti da 2 Kilowatt.

Nessuna descrizione alternativa per questa immagine


In ricordo

Accludo due link in ricordo Angles of view Angles of reflection