Intel 4004

Ho scoperto da poco il nome di chi, per primo, ha inventato un microprocessore. Il processore e’ il 4004 della Intel e la persona e’ un certo Federico Faggin.

Ne parlo perche’ in questo periodo sto leggendo il suo libro (Silicio) e sono rimasto affascinato dalla storia della nascita dell’oggetto che piu’ di tutti ha dato il via all’informatica come la conosciamo.

Giusto per riassumere due info che ho raccolto online:

  • Creato nel 1971 – Gennaio il primo prototipo funzionante
  • le lettere davanti al 4004 stanno per il tipo di package:
    • C – Ceramica bianca (il piu’ vecchio e ricercato)
    • P – Plastica
    • D – Ceramica scura
  • e’ stato pensato per funzionare in simbiosi con altri integrati che prendono il nome dalla serie 4000 quali:
    • 4001 – ROM a 2048 bit
    • 4002 – RAM a 320 bit
    • 4003 – Shift register
  • nato per creare una calcolatrice, la Busicom 141-PF

Goloso come sono di “roba vecchia” ho subito fatto alcune ricerche online e scopro, tra le altre cose, che un processore c4004 (la c sta’ per supporto ceramico) viene ora (10-11-2020) venduto su ebay a oltre 1300€

Altra cosa degna di nota e’ il design interno del microprocessore che potete trovare facilmente online, i siti piu’ carini che ho trovato sono:

http://www.intel4004.com/

https://www.4004.com/

Beh, forse una stampina in casa la metto 🙂

Arduino, il Watchdog

Giocando con Garagino ho scoperto che i carichi induttivi (leggi motori elettrici) o anche alimentatori Switching di dubbia qualità creano “spurie” che interferiscono con il corretto funzionamento di Arduino. Di fatto lo mandano in “tilt” anche se non ho ancora capito se il problema “entra” nel micro controllore dall’alimentazione (passando per 2 alimentatori switching con condensatori vari di livellamento e varistori) oppure dalla connessione i2c che uso per pilotare i relay.

Fatto sta che si inchioda e resta li, a far righette senza senso sul bel display rosso.

L’unica soluzione che sono riuscito a trovare per poterlo utilizzare un po più serenamente e’ il  Watchdog.

Questo “cane da guardia” non e’ altro che un timer che deve essere resettato ogni tot tempo dal programma in esecuzione, se questo non avviene il timer riavvia il micro controllore.

Questo meccanismo è solitamente implementato in hardware ed è presente sul microcontrollore ATMega328 cuore di arduino UNO e familia.

Per utilizzare il Watchdog bisogna inserire la libreria wdt.h

I tempi di reset del Watchdog sono:

Tempo reset Parola Chiave
15mS WDTO_15MS
30mS WDTO_30MS
60mS WDTO_60MS
120mS WDTO_120MS
250mS WDTO_250MS
500mS WDTO_500MS
1 Secondi WDTO_1S
2 Secondi WDTO_2S
4 Secondi WDTO_4S
8 Secondi WDTO_8S

Nel  setup() abilito il watchdog specificando il tempo di reset scrivendo:

In pratica se entro 8 secondi non resetto il time del watchdog questo riavvia il micro che probabilmente si e’ impallato.

Per resettarlo:

In pratica… se so’ che nessuna delle atività svolte dal programma dura 8Secondi… lo resetto ogni volta che ricomincia il loop e ciao, se si impalla si riavvia.

Beh, forse e’ meglio scegliere con piu’ cura dove posizionare il wdt reset() ma ci siamo capiti 🙂