No, Marco. Quel che dici non è vero !!!
marco_58 ha scritto:
Il firmware del decoder centra nulla, è proprio il princio di base dei decoder che serve conoscere, che al 90% è basato solo sul suo harware.
Ho detto che per capire perchè un dedecoder impazzisce se è alimentato in PWM bisogna conoscere le comunicazioni seriali, solo per fare necessaria differenza fra le varie forme onde quadre visibili all'oscilloscopio.
Diversamente, da ignoranti della materia, ...
A differenza di te, sò bene di non sapere tutto.
Ma se parliamo di decoder e di microcontrollori, sicuramente non sono ignorante in materia. E sicuramente lo sono molto meno di te.
Da quarant' anni ti sei guadagnato la pagnotta con automazione industriale, PLC, SCADA e quant' altro. Non lo dubito.
Ma io da quarant' anni me la guadagno facendo hardware e firmware e software per microcontrollori, fra l' altro programmando i registri per comunicare in seriale e progettando le interfacce elettriche per gli standard di comunicazione.
Ed anche progettando circuiti analogici con transistors, amplificatori operazionali e quant' altro.
Il centro del decoder è un microprocessore che :
- riceve in ingresso il segnale DCC proveniente dalle rotaie e opportunamente riproporzionato ai 5V o 3.3 V a cui il microprocessore funziona
- decodifica il segnale ricevuto trasformandolo in una fila di "1" e di "0" raccolti in bytes (gruppi da 8 bits) o in words (gruppi da 16 o da 32 bits)
- genera il segnale PWM che viene applicato ai MOSFET di uscita (oggi 4, agli inizi erano 2)
- fine
Per la decodifica del segnale di ingresso i processori dispongono di periferiche che deserializzano e immagazzinano (con registri e DMA) i dati che arrivano, o quelli da trasmettere.
Tutti i microcontrollori di oggi (il mio primo l' ho programmato nel 1977 !) hanno la periferica UART (se aggiungi il traslatore di livello a +-9 V, ottieni la RS232, se aggiungi driver e receiver differenziali ottieni la RS422 o la RS485). Ed anche la I2CBUS ce l' hanno praticamente tutti.
Nessun microcontrollore, però, ha la periferica che decodifica il DCC. L' unico modo per eseguire tale decodifica è farla bit per bit dal firmware del processore.
Quindi l' affermazione " il princio di base dei decoder che serve conoscere, che al 90% è basato solo sul suo harware" non è vera. La decodifica è fatta almeno al 90% dal firmware.
Ricordo che nel DCC la codifica è realizzata con impulsi da 58 us per i bits a "1" e >100 us per i bits a "0" indipendentemente dalla polarità, quindi non semplicemente con livelli alto o basso.
Per questo non è utilizzabile una periferica UART (quella usata per RS232/422/485).
Ci si può aiutare con le periferiche di cattura impulsi che alcuni hanno, ma non presentano un dato pronto. Occorre firmware per farli diventare comandi DCC.
Tutto questo, se il decoder è collegato ad una centralina DCC.
Se, invece, lo colleghiamo ad un regolatore PWM come quello di Tz, allora può succedere che il microprocessore capisca fischi per fiaschi, o che entri in una situazione non prevista dal firmware, o che durante il toff (periodo in cui non c' è tensione) si resetti non correttamente. In tutti questi casi il comportamento non è standard e può non essere prevedibile, neanche da chi ha scritto il firmware.
Invece, in quei casi in cui il processore continua ad essere alimentato durante il toff e sono previsti provvedimenti per la gestione degli errori di comunicazione, esso può comandare correttamente il ponte MOSFET di uscita e funzionare correttamente.
Si può non capire cosa ho scritto sopra. E' legittimo.
Se vuoi affermare che la decodifica del decoder è fatta da hardware, mostra quale periferica del microcontrollore la esegue.
Ribadisco che nessun microcontrollore ha la periferica che decodifica il DCC.
Ma, alla fine. Tu sapresti fare un decoder DCC usando solo un microcontrollore e 4 MOSFETS ?
Io, sì. E anche con microcontrollori di tipo diverso.
Stefano Minghetti