Repository navigation
3.2.0
Una sola versione: la 3.x del sito su GitHub, con le correzioni e i test della 1.x
La 3.1.0 era sviluppata fuori da git e pubblicata solo sul sito; GitHub aveva la linea 1.x, con il
solo 16F84A. La 3.2.0 parte dalla 3.1.0 e porta dentro le correzioni della 1.2.0, poi corregge i
difetti trovati scrivendo un test per ogni istruzione, periferica ed esempio.
Allineamento:
- Licenza GPL v2 or later (era indicata MIT), aggiornamenti da GitHub Releases,
Update URI - Progetti salvati dal simulatore: la cartella era comune e qualunque utente loggato poteva
leggere, sovrascrivere e cancellare quelli di tutti; ora una cartella per utente - Niente Google Fonts; asset caricati anche da blocchi, widget e page builder
- Ripristinati i caratteri accentati corrotti in 14 file
Motore (verificato su 16F84A, 16F628A e 16F877A):
- Il flag Z non veniva mai impostato (Knight Rider e ogni confronto sbagliavano)
- Timer0 non segnalava mai l'overflow (T0IF); ora conta per ciclo, resta fermo due cicli dopo una
scrittura e non conta in SLEEP - Nessun interrupt di periferica: mancavano PEIE e PIR/PIE
- EEPROM agli indirizzi del 16F84A su tutti i device: sul 16F877A occupava PORTD/PORTE/TRISD/TRISE;
la fine scrittura accendeva INTE - Mappa della memoria: specchio dei GPR del 84A, area comune, registri dei banchi 2 e 3, INDF
attraverso le periferiche, PCL con PCLATH<4:0> - SLEEP: risveglio con GIE = 0, istruzione dopo SLEEP eseguita prima del vettore; INTF e RBIF si
alzano anche a interrupt disabilitato, RBIF solo dai pin in ingresso - Run a tempo reale (prima 1000 istruzioni al secondo: minuti tra un cambio di LED e l'altro),
Step Over asincrono, EEPROM che sopravvive al Reset - Periferiche appena create senza reset: TRIS e OPTION_REG restavano a 0 fino al primo assemblaggio
Assemblatore:
- Nucleo della 1.x: espressioni,
$,#define, etichette MPASM, controlli di intervallo, DE in EEPROM - Mancavano i bit delle periferiche (GO, SSPIF, RCIF...): 20 esempi su 53 non si assemblavano
- Sul 16F877A PORTB valeva 0x106 e STATUS 0x183, e
BANKSEL STATUSsceglieva il banco 3 - Nell'Intel HEX ogni NOP diventava 0x3FFF
Hardware virtuale: con la 3.1 nessun esempio I²C o SPI poteva funzionare.
- La MSSP non creava i bus e i componenti non si collegavano
- SPI: nessun device veniva selezionato; ora c'è il chip select (fronte di salita = latch)
- I²C: dopo un indirizzo in lettura il programma restava bloccato (bit R/W di SSPSTAT)
- RTC avanzati a ogni aggiornamento dell'interfaccia invece che col tempo simulato
- 1-Wire: il bit letto era quello dello slot successivo; il DS18B20 ora legge la temperatura
- MCP23017, PWM (CCPRxL), comparatori (modi del datasheet, CMIF), WS2812, servo
- LCD: si perdevano gli impulsi di EN a velocità reale; l'LCD I²C si fermava al primo comando
- Cambiando device i componenti restano collegati alla CPU nuova
Esempi: corretti Voltage Comparator, 7-Seg 4-Digit MUX (si bloccava alla terza cifra), LCD
I²C, LED Bar VU Meter, Servo Sweep e Servo + ADC (tempi tre volte più lunghi), Keypad Scanner.
Interfaccia: select della velocità di Run, cursore di Animate, tempo simulato, Step Over; un
programma con LIST P= sceglie il device; layout su telefono; accessibilità WCAG 2.1 AA; un
secondo simulatore nella stessa pagina mostra un avviso.
Didattica: l'elenco degli studenti di una classe dava id 0 a tutti (le azioni del docente su
uno studente non funzionavano); con i permalink semplici la dashboard del docente non caricava.
Disinstallazione: cancella anche i progetti salvati dal simulatore in uploads/.
Test: 250 unit test (ogni istruzione e periferica sui tre device, assemblatore, motore, ognuno
dei 53 esempi con il suo hardware virtuale) e 61 E2E (simulatore, hardware virtuale, accessibilità,
telefono, classi e consegne via REST con docenti e studenti, dashboard).