Firmwareland
sabato 6 luglio 2019
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
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
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.
Nell'architettura Harvard le due memorie sono separate.

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,hashtag#GREEN
;---------- 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.
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.
Iscriviti a:
Post (Atom)
In ricordo
Accludo due link in ricordo Angles of view Angles of reflection