Come Funziona?
La stazione meteo Oregon WMR918 è dotata di una porta seriale DB9pin attraverso la quale ritrasmette immediatamente e senza interruzione, i dati che riceve dai vari sensori. I dati, codificati in questo modo (vedi DOWNLOAD), arrivano all'integrato MAX232 che converte le tensioni dai livelli tipici delle seriali RS232 ovvero +/- 12V in livelli compatibili con i classici integrati TTL (0V, +5V) e li inoltra al microcontrollore PIC16F877 che "viaggia" a 4Mhz. Questo per ogni singolo byte che riceve, lo ritrasmette (sempre tramite il MAX232 riesegue la conversione di livello) sulla seriale dedicata al collegamento con il PC.
Il microcontrollore a questo punto deve inviare il byte ricevuto alla memoria MMC per la scrittura. Questa è una operazione che richiede parecchio tempo (alcuni milli-secondi) ed il PIC rischierebbe di non accorgersi dell'arrivo altri byte, pertanto scollega la massa tra PIC e stazione meteo (tramite l'integrato 7407), facendo credere alla stazione meteo che il cavo si è scollegato e costringendo la stessa a mantenere i dati nella memoria buffer della sua seriale.
Il PIC negozia con la MMC l'inizio della scrittura, indicando l'indirizzo da dove vuole scrivere e che vuole scrivere solo 512 byte (la MMC gestisce in scrittura multipli di blocchi di 512 byte) ed inviando il primo byte. Da notare che anche in questo caso il byte prima passa in un traslatore di segnale poichè la MMC "lavora" a +3.3 Volt e non può accettare segnali di 5Volt. L'integrato 4050 eseguita tale operazione manda il dato alla MMC.
Il PIC ricollega quindi la massa della seriale in modo che possano arrivare altri byte, fino al raggiungimento del 512esimo byte. Ora e solo in questo punto la MMC scrive fisicamente i byte nella sua memoria:
Il PIC scrive nella sua memoria interna che la MMC ha già un blocco di 512 byte pieno di dati per evitare che in caso ritorni l'alimentazione elettrica dopo un blakout, vengano sovrascritti dei byte che contengono dei dati. Inoltre scrive sul display che è iniziata la scrittura del blocco n+1 e che rimangono liberi 62720-1 blocchi di memoria. (la MMC infatti contiene 62720 blocchi di 512 byte che fanno poco meno di 31MB effettivi)