Skip to content

WebPicSimulator 3.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Oct 04:23
· 2 commits to main since this release
1916978

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 STATUS sceglieva 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).