Blog

PIC 18F and its stinking stack

During the past week PIC 18f continued to be my main headaches supplier. I think I already wrote enough about the messiness of the Harvard architecture combined with “modern” languages such as C. Well, since two separate address spaces didn’t seem enough, the chip designers opted to add a third for call return stack. The place where the CPU stores the return address before jumping to a subroutine is into a distinct address space… that’s not so addressable – since you can read and write only the topmost location.
Being our model the top of the range, it features 31 levels in the stack. That means that you can sub-call no more than 31 times without breaking the stack (or, you can’t compute factorials greater than 31! :-)).
Well 31 is a reasonable amount, or at least I thought so. Then we ran out of Program Memory, so we enabled the compiler space optimization. I must admit that these optimizations are quite effective being able to trim down the size of your binary of some 30%. Most of this percentage is achieved by the so-called “procedural abstraction” optimization. This procedure factorize common sequence of assembly into sub-routine. By repeatedly applying the technique, more and more blocks get extracted and replaced by a CALL instruction.
The side effect is that this technique has a dramatic impact on the stack – it may doubles the number of nested calls.
In our case the stack exploded when a deeply nested graphic routine was interrupted by the low-level interrupt that in turn was interrupted by the high level interrupt.
I had the terrible “game-over” feeling – I had to use the optimization to fit in the memory, but I had no control over the nesting of the calls. In fact every action I could take to soften the nesting would be undone automatically by the optimizer.
I don’t like to give up, so I fired up acrobat reader on the datasheet trying to dig a way out of troubles.
PIC 18f datasheet about call return stack isn’t terribly clear, so I had to read it several times. Eventually I concluded that stack overflow and underflow have two kinds of handling selectable once for all by configuration bits (sort of fuses you set when programming the device). In the first way when the execution attempts to push the 31st entry in the stack, just flips a flag. Next pushes just overwrite the entry. I thought hard about this, but I found no use whatsoever.
Next mode provides a sort of interrupt. On the 31st push the execution jumps to 0x000000 (the reset vector) with the overflow condition flagged.
Woha, I realized, I could trap this address and check for the overflow before handing the execution flow to the standard firmware. If I am here for an overflow, I could dump the hardware stack (one entry at time, it is possible) into somewhere in RAM and continue the execution where…
Exactly, where?
The CPU discards the target address of the call, it just pushes the return address into the stack. Well I could peek around the return address to see whether a CALL either relative or absolute has been issued and recover the target address.
I really enjoyed the idea, but the more I though of it, the more I found critical cases. What if the jump was caused by a call to a pointer? The PIC code for such an addressing is all but straightforward. Maybe I could detect the call pattern and perform some recovery.
Eventually I found the real killer of my idea in interrupts. In fact the call return stack is shared for normal execution and interrupts. The code for recovering the target address would have to be rather convoluted – check for a CALL/RCALL instruction, check for a CALL to a pointer, check for interrupt flags (there are tons of them) and decided whether a low or high priority interrupt has triggered…
Dead end. I wondered what was the idea of the chip designer when implementing the stack overflow mechanism. I found it useless, done this way, and it could have worked fine with some additional circuitry – it needed just to save the target address and it would have been great.
Back to paper and headache.
I did some search on internet and found another compiler (a bit too experimental to be employed in an industrial project) that save the return address from the hardware stack into the software stack. Doing this, the hardware stack never grew over 3 entries. Good! But the MCC18 compiler is really basic, it doesn’t allow this technique, nor it allows the programmer to specify user defined prologue/epilogue for functions.
At this point occurred to me that the stack explosion had always been during interrupt time. So, I thought, I may save the stack when I enter the low level interrupt and the stack level is over a certain threshold, and then restore everything before leaving the interrupt.
The implementation was quite straightforward (almost flawless, if you pardon my ubiquitous off-by-one bug). The only problem is that sometimes the low level interrupt incurs in a bad penalty of copying some 100 bytes from the stack into RAM in order to avoid the stack explosion.
But it makes a good war story.

Sorpresa

E’ la prima volta che ci capita ed è stato bello, ci ha lasciato senza parole, ma con una bellissima sensazione di tenerezza. Oggi è il nostro anniversario di matrimonio, e Juan e Mariana ci hanno fatto una bellissima sorpresa nel poco tempo che c’è tra il rientro in casa e la cena.Juan, questa mattina ha preparato un biglietto di auguri, mentre Mariana si è messa a decorare la tavola con le candele e i segnaposti a forma di cuore. Poi, mentre la pasta cuoceva, si sono chiusi in cameretta intimandoci di non entrare. A pasta già in tavola, gli abbiamo dato ben 10 secondi per completare la sorpresa. 1 (corr) 2 (nnguardr) 3 (spost) 4 (torn) 5 (attac) 6 (stacc) 7 (quilì) 8 (ecco) 9 eeee… 10.
Oh, ma come hanno fatto così in fretta a gonfiare e legare insieme così tanti palloncini e appenderli in cucina?! E i palloncini numerati riportano 14… come i nostri anni di nozze.
Grazie bimbi!

messed up startup

  /* we'll make the assumption in the following code that these statics
   * will be allocated into the same bank.
   */

When I first saw the this comment in the MCC18 C startup code some time ago, it sent a chill down my spine. But promptly I recovered, after all, this is one of the most widely used MCU on the planet and this is the preferred development environment. If they did it this way, they would have good reasons.

Then I wasted a whole afternoon tracking a problem in initialization, only to discover that the assumption had been silently broken by the linker and the code ceased to properly work, wreaking havoc in initialization of the static data.
It is beyond my understanding how could you, while professionally doing your job, base a core component (the startup code) on such assumption without either being sure that the assumption is always correct or there is an automatic detection that reports when the assumption no longer holds true.
Objectively it would have been fairer to provide a less efficient version safely and always working leaving to the eager programmer the task of crafting a high performance version if needed, rather than vice-versa.
Valentino, in comments to a previous post, asked me if I have data about difference in pricing among PIC and other MCUs. Well, not handy, but the difference is really small (my guess is 0.5€ to 1.5€) and it doesn’t really make sense to undergo all these troubles unless your volumes are filthy high.

Pic Indolor

Some time ago, there was a tv-ad about a syringe named “Pic indolor” (I guess, if not clear, it could be translated as “Pic painless”). Fast forward some decades, long is gone that ad – now Pic, to me, is only Pic painful, the regrettable MCU from Microchip that I am so unwillingly forced to use in my daily job. I already wrote about it, but there are still complains.
The current device I am working on sports quite a comprehensive set of complex features that are expected to run at once:
• proprietary field bus communication with failure detection and avoidance;
• distributed monitoring;
• Usb communication;
• Graphical User Interface, with status and menus;
• Audio (analogical, thanks god);
We have the top range Pic 18f, meaning 128k of program memory and about 3.5k of Ram (or, as Microchip engineers meant us to say, general purpose registers or shortly GPR).
Pic is renowned for its code density, or, to put it better is known for the lack of thereof. The Harvard architecture makes things even worse. In fact there isn’t such a thing as a generic pointer. The good ol’ void* is not. Pointers have to be differentiated in Program Memory pointers (24 bit wide) and GPR pointers (16 bits wide). But the difference does not end here: it goes down to the assembly level – different instructions and registers have to be used whether you want to access Program Memory or GPR. That means that the same algorithm, that can be coded in C with the help of some macro tricks, has to be translated in two copies or into a combinatorial explosion of copies if the pointers involved are more than one. A perfect example of this nightmare is in the standard library that comes with Microchip C Compiler (MCC18) – take a strcpy and you will find four versions since you may want to copy from ram to ram, ram to rom, rom to rom or rom to ram. That is annoying only up to the point where you run out of memory. At this point you can no longer afford the flexibility.
That was my case for image blitting functions – I left open the chance to copy images either from Gpr or Program Memory. Now that chance is gone.
The troubles do not end here.
Pic 18f architecture provides two levels of interrupts – high and low priority, since the name tells it all, I will not insult your wits by explaining it.
High level interrupt has some hardware facilities to save and restore non-interrupt context, but we can not even think of use it since it is strictly dedicated to the proprietary field bus driver. This ISR has some hard time constraints needing a run every bunch of microseconds, but this is another story.
So we use the low priority interrupt vector for anything else, most notably timers.
Since we are a gang of C programmers we try to stay away as much as possible from assembly. That’s fine, but writing interrupt code on Pic18 with MCC18, comes with a hefty price.
On entering the interrupt the C language run time support dumps 63 bytes of context into the stack. Given that, if you don’t want to incur in extra penalties, the stack size is 256 bytes, CRT eats up one quarter of the stack.
To be fair it is not just MCC18 fault, it is more how the PIC architecture has been designed – rather than having real CPU registers and operations that work on those registers, PIC has memory mapped hardware registers that both implements CPU registers and addressing modes.
For example, when saving the context you have to save:
• FSR0, FSR2 indirect addressing into RAM registers;
• TBLPTR indirect addressing into Program Memory;
• TABLAT indirect addressing into Program Memory read value,
• PRODH, PRODL multiplication operands.
By comparison you save the whole Z80 context in 20 bytes, but if you restrict code to not use the alternate register set, then you just save 12 bytes moreover you don’t have dumb limitation on the stack size.
Well enough with digression. What is in my ISR?
There is an interrupt source detection routine that calls the specific ISR for the occurred interrupt. If the specific ISR is a timer tick, the timer list is swept and triggered timers are notified by using a deferred procedure call.
That’s another piece of code I am proud of having written. Basically rather than performing callbacks from within the interrupt callbacks you just register your callback with your defined arguments and let a handler to perform the call later from non interrupt context.
This has the main advantage that the callback code can take its time to do what it is supposed to do since interrupts are enabled. Also the called back code could mostly ignore interrupt re-entrance problems since it is always called synchronously with the non-interrupt main loop.
This proved to be also a life saver in this occasion so that stack doesn’t grow too much in interrupt adding to those 63 bytes. To ease the impact I moved all the timer code from interrupt to non-interrupt via deferred procedure call.
This bought me some oxygen, but still the application was suffocating in limited amount of stack.
I turned my attention to display driver and its functions. Their weight on the stack was considerable and basically they don’t need to be re-entrant. Consider masked blit aside from offset registers, coordinates, read and write value you have one pointer to data, one pointer to mask and, in my case two pointers to the previous data and mask line, that’s quite a lot of stuff living in stack space.
With a deep sense of sadness I moved all those auto variables into the static universe and almost by magic I solved both the stack problem and freed enough Program Memory to fit in the memory space even without optimization.
The emergency alert just went off, but I am not sleeping relaxed sleeps because I know that it is just a question of time, soon or later, well before the end of the project, the problem will rise its ugly head again.
The cost impact on the project is unlikely to be light…

È come andare in bicicletta

Una volta che hai imparato è per sempre. Non c’eravamo quando è nata, non eravamo li quando ha mosso i primi passi, quando ha detto la prima parola e ci siamo persi tanti altri “primi”, ma questa volta eravamo lì, sull’asfalto del parcheggio, emozionatissimi, a vedere la nostra piccola pedalare senza rotelle, un po’ incerta, ma sicuramente da sola, senza più il nostro aiuto. Tra i mille dubbi tipici del genitore e i milioni di ansie di quello adottivo, questa è una bella certezza: c’eravamo e ha imparato con noi.

La montanara OE’! Si sente cantare…

Troppo lontani dalle vacanze di Pasqua e ancora troppo presto per le vacanze estive… che si fa? Qui urge una soluzione! Detto, fatto: un week end lungo (o una settimana breve a seconda che il bicchiere lo consideri mezzo pieno o mezzo vuoto) in un posto a noi congeniale – le Dolomiti.Cerca che ti cerca ci siamo detti: “ma perchè non andiamo in Val Pusteria che è tanto tempo che ci vogliamo andare?”. Già, perchè no?

Ecco il dinamico duo in una statuaria posa davanti al lago di Braies.
All’acuto osservatore (quali sono i lettori del nostro blog) non sarà sfuggito che il dinamico duo è a piedi nudi. E la risposta alla domanda che immediatamente ne consegue è “si, hanno messo i piedi nell’acqua del lago di Braies” la cui temperatura è di poco superiore al punto di congelamento (e si sono pure divertiti, tanto che li abbiamo convinti ad uscire con difficoltà).
Vi state divertento? YEAH! Siete pronti? YEAH! Siete forti? YEAH!! Un po’ di auto-incoraggiamento aiuta sempre a superare le salite più dure.
Le tre cime di Lavaredo. Ecco i due intrepidi colombiani sulle Dolomiti al rifugio Locatelli a circa metà del giro delle tre cime.
Un altro laghetto alpino. Si, quella dietro è neve. No, questa volta i piedi se li sono tenuti asciutti nelle scarpe.
Se dico “Pino Mugo” cosa viene in mente? Grappa!!
E dopo le tre cime è la volta di Prato Piazza. Un alpeggio stupendo e magico.
Ma è chiaro che se non arriviamo in alta quota non siamo contenti. Tali i genitori, tali i figli.
Ultimo giorno. Ma non è un particolare che ci ferma: escursione alla Malga Nemes partendo dal passo di Montecroce.

Ora, sono sicuro che esiste un inferno speciale per i genitori che pretendono troppo dai loro figli. E forse, come potrebbe pensare qualcuno, ce lo meritiamo. Ma vedendo il loro interesse, la loro voglia di vedere, provare e esplorare, la loro energia pressochè inesauribile, se così fosse… ne sarà valsa la pena.

Giugno, hophophop, dindindin

Da due anni a questa parte giugno è particolarmente caldo. E non mi riferisco alle condizioni metereologiche (che poi quest’anno smentisce decisamemte), ma a tutta quella girandola di feste e ricorrenze – al 2 c’è il compleanno di Juan, al 6 l’anniversario del nostro incontro (o compleanno di famiglia come lo chiamiamo noi), poi ci sono le feste di fine asilo o scuola, il saggio e quest’anno, new entry, il Palio di Castellanza.

Ecco l’inizio del compleanno di Juan, un attimo prima di aprire i regali.
Al pomeriggio festa con i cuginetti con tanto di spettacolo improvvisato.
Ed eccoci al giorno del nostro compleanno. Foto di gruppo con sole negli occhi.
Peace and love, bro’
Il giorno del Palio di Castellanza. Questi sono dei figuranti del CERS (? ? Rievocazioni Storiche) (ebbene no, non siamo noi in uno dei nostri più riusciti travestimenti). A causa della presenza di tanti altri bambini non possiamo mettere altre foto.
Il saggio di ginnastica ritmica. Prima dell’esibizione, Mariana era nervosissima, preoccupata e ansiosa, ma nello spettacolo ce l’ha messa tutta ed è stata bravissima.
Naturalmente quel giorno faceva caldissimo e il body in velluto la… fastidiava (questo spiega come mai ha le maniche annodate al collo).
Festa del grazie all’asilo, con lancio dei palloncini. Mentre eravamo distratti dai puntini di colore che rimpicciolivano nel cielo, gli altri si avventavano su patatine e pizzette lasciandoci a becco asciutto… amen, ci siamo rifatti con la torta.
Non siamo tornati alla casa delle farfalle di Cervia, ma in una gita al Ticino abbiamo trovato questa che si è voluta far fotografare.

Assemblea soci CIAI 2010 (Cervia)

Ormai anche Mariana si é rassegnata e non ci chiede piú quanto manca. E Juan, quieto, ha smesso di dare fastidio alla sorella. Sai che sei nel mezzo di un’impresa che sfiora l’epico anche se, probabilmente, nessun futuro poeta o menestrello canterà le tue gesta.
Ti trovi in macchina al buio, la pioggia che allaga il parabrezza malgrado gli affannosi sforzi dei tergicristalli, in un posto sconosciuto alla ricerca del tetto dove dormire.
Le indicazioni di google sono ormai inservibili dopo che sulla tua via sono comparse rotonde e incroci ignorati dal gioiello tecnologico di navigazione del famoso motore di ricerca.
L’unica speranza per risparmiarti ore e ore di giri a vuoto é il tuo senso di orientamento del quale stai iniziando a dubitare, finché tanto inaspettato quanto gradito, dalle tenebre emerge un cartello che, attraverso l’acqua scrosciante, indica la tua meta. Giri deciso e ti ritrovi su una stradina sterrata che attraversa i campi o, considerando acqua e buio, quelli che potrebbero essere campi).
E finalmente l’ombra di un casolare. La proprietaria premurosa ci apre il cancello e noi capiamo di essere arrivati.

Il Jazz Country Club é, prima di essere il nostro Bed & Breakfast, un casolare di campagna circondato da alberi. Troviamo riparo sotto un ampio e lungo portico. Attraverso le ampie finestre vediamo un grande camino acceso abbracciato da innumerevoli libri. Entriamo in un accogliente collage di cimeli vintage, giocattoli di qualche tempo fa e locandine di film degli anni ’70. Al secondo piano la proprietaria ci ha preparato due stanze: cosí staremo piú comodi perché siamo gli unici ospiti del JCC.

Notte di pioggia
Ci prepariamo per andare a letto. Nella nostra camera c’é un letto sicuramente comodo da rifare, ma che richiede una certa agilitá per poterci salire sopra. Il materasso é a non meno di 80cm dal pavimento.
Peró é comodo e ci addormentiamo rilassati dal rumore della pioggia che batte incessantemente aritmica sulle tegole. E ci sentiamo allo stesso modo che si sentirono i primi uomini quando trovarono una grotta asciutta e dove dormire e stare al sicuro.
E di tanto in tanto nella notte, tra il dormiveglia sentiamo il rassicurante suono della pioggia sul tetto.

La colazione
La signora Gabriella ci aspetta in cucina dietro ad una tavola imbandita. Ci ha anche preparato una torta margherita ed un rotolo con la marmellata, di cui ci promette la ricetta. Uno spettacolo. Ma Juan e Mariana sono attratti dal cane e dai numerosi gatti. Ognuno con la sua personalissima storia che ci viene raccontata con trasporto e tenerezza da Gabriella. C’é Oswald, il gatto che sopravvive, malgrado tutti volessero farlo fuori, Brutus, il gatto in perenne lotta con il mondo (ma, soprattutto con i gatti del vicinato), Bianca l’enorme cagnolona tranquilla e rilassata con il solo terrore dei temporali…
Finché arriva anche il momento di risalire in macchina, sotto ad un cielo grigio e minaccioso e partire alla volta del…

Hotel Dante
Non che sia facilissimo trovarlo, dopotutto se non facciamo un girettino per il centro di Cervia non siamo contenti. E anche quando ben l’abbiamo trovato non é che sia cosí immediato parcheggiare la macchina visto che la zona é tutta una riga blu di parcheggi a pagamento.
Comunque l’hotel Dante – Centro Congressi é esattamente come ce lo ricordavamo: grande e brutto.
Anche dentro é come ce lo ricordavamo e anche l’impatto é simile: un senso di soggezione e di trovarsi nel posto sbagliato… troppo lusso, troppo vip… noi siamo in jeans e scarpe da ginnastica.
Per fortuna, girato l’angolo siamo investiti dalla calda confusione dei soci CIAI: bambini e ragazzi di tutti i colori e tanti “grandi” alla mano come noi.
Salutiamo le nostre vecchie conoscenze (vecchie non in senso anagrafico) e accompagniamo Juan e Mariana nel salone dove un disperato manipolo di animatori tenta, senza troppo successo di non perdere la voce organizzando i giochi per i bambini.
I nostri figli non sono particolarmente entusiasti alla proposta, ma probabilmente l’idea di passare un tempo interminabile alla riunione barbosa dei grandi li convince a rimanere.

La conferenza della presidente sembra giá avviata, ma in realtà la sig.a Rossi Dragone si stá ancora scaldando. Quando entra nel vivo la sua voce non lascia scampo, agisce direttamente. Come avevo giá avuto modo di scrivere, in altri tempi, voci come la sua avrebbero mosso eserciti, spinto miti contadini a immolarsi per la difesa della patria. Un piglio deciso come il suo avrebbe spinto semplici marinai a sfidare onde alte quanto una casa o i terribili tentacoli del Kraken.
Insomma quando ci dice che nessuno uscirá da questa stanza senza aver comprato un libro, la mia mano corre al portafoglio senza che riesca a fermare il gesto.
L’autocontrollo entra piú facilmente per impedirmi di sottoscrivere un sostegno a distanza. La causa é nobile, non costa piú di un caffé al giorno, ma si sta comunque parlando di 300 euro l’anno. Niente a confronto del bene che si puó fare, ma una voce non trascurabile del bilancio familiare. Meglio rifletterci sopra e fare una scelta ragionata.
La situazione nei paesi dove opera il CIAI non sembra molto diversa dall’anno scorso – buone le collaborazioni con Etiopia e Burkina Faso, in Colombia solo un numero elevato di adozioni, mentre problemi nel sud est asiatico. In Vietnam ci sono serissimi problemi di corruzione e il governo sembra essersi messo di mezzo bloccando le adozioni del Ciai. Cambogia e Thailandia sono altrettanto problematiche per un verso o per l’altro. La Cina invece sembra essere piú rigorosa e collaborativa.

Sono un po’ perplesso sulla mancanza di progetti di collaborazione in Colombia. Per il trattato dell’Aja infatti gli enti che operano facendo adozione in un paese si devono operare attivamente con progetti che abbiano come fine ultimo quello di ridurre il numero di minori in stato di abbandono in quel paese. La Colombia é il paese con cui il Ciai realizza il maggior numero di adozioni (nell’anno scorso piú della somma di tutti gli altri). Ma é anche l’unico paese (Cina a parte) in cui non é in corso alcun progetto di collaborazione.
La risposta alla mia domanda é un po’ fumosa: si c’era un progetto, ma il bienestar familiar non l’ha gradito, adesso assistiamo un bambino (?!)

I bambini comunque non rimangono con gli altri a lungo e Ale interviene lasciandomi da solo a sentire la parte su bilancio e contabilità. Non che ci capisca molto… ma spunta sempre qualcosa di interessante. Tra le informazioni più interessanti ci sono sicuramente quelle sulla crisi. Le fasce piú colpite coincidono con le persone che piú sottoscrivono sostegni a distanza. Quest’anno, seppur con qualche difficoltá hanno retto. Ma si avvicina la fine della cassa integrazione e l’inizio della mobilitá. Il fatto che non riescano a continuare il SAD mi sembra il male minore rispetto al dramma che queste persone e famiglie si troveranno ad affrontare.
Il bilancio é tutto sommato buono e anche la revisione ha dato esito positivo.

Arriva il momento della pausa pranzo. Il tempo é sempre inclemente: pioviggina e fa freddo. Andiamo alla ricerca di un posto dove mangiare una piadina e dopo qualche minuto di disperazione e fame lo troviamo. Mariana, dimostrando di essere veramente americana, prende un hot dog, mentre noi altri europei e suo fratello prendiamo una piadina. Anzi una piadina con lo scquacquerone (potrebbe anche scriversi così) il formaggio tipico del posto.
Tutto molto buono, ma la temperatura é bassina e rimaniamo per tutto il pomeriggio con una sete fossile.
Il mare d’inverno è un concetto che la mente non considera cantava più di qualche anno fa la Bertè. Magari non è così, ma il grigio e l’umido, la pioggia e il vento, in riva al mare hanno una malinconia e una contraddizione tutta propria. Torniamo verso l’hotel del Sommo Vate (Vate, non Water).

Conferenza il lavoro minorile, le difficili sfide.
Il pomeriggio del primo giorno inizia con una sorta di tavola rotonda sul lavoro minorile. Lo spunto è dato dalla necessità via via più pressante per il CIAI di avere una posizione ufficiale su questa problematica.
Sicuramente il primo pensiero, quando si parla di lavoro minorile, corre ai bambini Afghani che cuciono palloni da calcio, o ai bambini che lavorano in miniera in cunicoli così stretti che solo loro riescono a passarci, sguardi seri, occhi grandi. Disperazione e dolore.
Così la prima, naturale reazione è di categorizzare il lavoro minorile come un torto, una stortura qualcosa che al pari delle altre degradazioni dell’uomo dovrebbe essere eliminato dalla faccia della terra.
Ma, come tutti i ragionamenti in bianco e nero, è riduttivo. Infatti basta pensarci più di un attimo e ci si accorge che anche il ragazzino che abbiamo visto al bar questa mattina aiutare i suoi genitori nell’attività di famiglia rientra nella categoria “lavoro minorile”. Ma pensandoci ancora, ieri sera in televisione, una buona percentuale di spot pubblicitari aveva dei bambini come protagonisti, per non parlare dei film.
Però passando ancora per la zona grigia ci sono casi in cui è difficile dire “giusto” o “sbagliato” – per esempio casi dove il lavoro del minore può portare un miglioramento delle condizioni economiche della famiglia e quindi diventare un fattore di protezione della famiglia stessa.
E non dimentichiamoci anche che l’Italia è una repubblica fondata sul lavoro. Se il lavoro ha un insieme di valori e di caratteristiche formative, tanto da fondarci sopra la nostra Repubblica, allora probabilmente non è così sbagliato che ci siano degli ambiti dove anche bambini e ragazzi possano lavorare in una maniera declinata alle proprie capacità e nel pieno rispetto dei loro diritti.
La posizione del CIAI tiene conto di tutti questi aspetti, e questo mi fa piacere perchè è l’ennesima riprova che il “nostro” ente ha un procedere pragmatico e analitico, dove al centro rimane sempre e comunque l’interesse del bambino senza inutili preconcetti o demagogie. Senza contare che nel nostro mondo complesso e intricato, l’ultima cosa di cui abbiamo bisogno è di persone che pensano in bianco e nero sostenendo crociate a destra e a manca.
La posizione ufficiale è contenuta in questo documento: http://www.ciai.it/images/stories/Lavoro_minorile_la_posizione_CIAI.pdf e sostanzialmente dice che ci sono delle situazioni di sfruttamento e pericolo e pertanto illegali che il CIAI rifiuta perentoriamente. Ci sono invece delle situazioni dove il lavoro minorile può essere accettabile o anche utile, purchè vengano prima i diritti dei bambini e dei ragazzi.
La discussione che segue alla presentazione del documento è accesa e partecipata a riprova del fatto che l’argomento tocca corde profonde vicine alle differenti sensibilità.

Non appena si conclude la tavola rotonda e viene annunciato il nuovo argomento la sala si svuota e con una certa apotropaica sollecitudine… e probabilmente non a caso visto che ora si parla di lasciti.
Ne approfitto anch’io per tornare nella hall. Malgrado le dimensioni l’ambiente è molto rumoroso, è difficile rilassarsi o anche solo riuscire a fare quattro chiacchiere. Tra le cause sicuramente è il tempo inclemente all’esterno che obbliga i bambini a rimanere all’interno con conseguente scatenamento (scatenazione?) degli stessi. Malgrado tutto Juan è riuscito, con altri bambini, a fare i compiti. Probabilmente anche grazie alla pazienza (al limite della santità) del papà di N. e V. che li ha seguiti in questa non indifferente fatica. Per fortuna la conferenza lasciti è finita e l’agenda prevede adesso un filmato:

Filmato del burkina faso – il paese degli uomini liberi.
È l’Africa e più precisamente il Burkina Faso ad essere protagonista di questo appuntamento in sala conferenze. Viene proiettato un video-documentario sui progetti di cooperazione del CIAI in questo paese.
Sullo schermo scorrono le immagini dell’Africa, di gioia, di povertà, di voglia di fare e di riscatto. Fa un certo effetto vedere le riprese della Jeep con il logo CIAI sulla fiancata, ma rincuora sentire le attività in cui il nostro è impegnato. Il filmato è sicuramente ben fatto e avvincente e ci fa immergere nella calda Africa, facendoci dimenticare almeno per un attimo che fuori piove.

Il pomeriggio è finito, quindi è ora di tornare al Jazz Country Club e prepararsi per la cena. La sig.a Gabriella ci consiglia il Ca’ nori, un ristorante poco distante e ci raccomanda anche Strozzapreti e cappelletti come piatti tipici della zona.

Ca’ nori è un grosso ristorante affacciato sulla provinciale, uno di quei posti che, dalle dimensioni del parcheggio, attira alla ristorazione avventori da tutto il circondario e probabilmente oltre.
L’ambiente e il servizio sono alla buona, ma senza nulla da eccepire e ben presto il locale si riempie. Decidiamo di seguire le indicazioni che abbiamo ricevuto. I cappelletti sono un incrocio tra raviolotti e tortelloni, con ripieno di formaggio. Le tagliatelle al ragù sono trionfali e non ci facciamo mancare al tavolo anche gli strozzapreti, un’altra specialità locale simile alle trofie liguri, con panna e speck.
Chiudiamo la cena con una condivisione di patatine fritte giusto prima di partire di corsa di nuovo verso l’hotel Dante per lo spettacolo serale.
Di sera (buia e tempestosa) l’hotel Dante è leggermente meno brutto da fuori grazie all’oscurità. All’interno è un tono suffuso d’oro giallo e lampade preziose. Lo spettacolo organizzato dai disperati animatori (dopo la nostra partenza hanno deciso di cambiare le loro vite facendosi chi frate trappista, chi monaca di clausura e chi cercando sé stesso in un monastero tibetano) è un po’ meno ambizioso di quello dell’anno scorso. Hanno cercato di avvantaggiarsi di quello che i bambini e i ragazzi già sapevano fare improvvisando una sorta di circo acrobatico.
Ma la serata non è finita, un’attrice prova a raccontare una storia ai bambini. La storia è bella e poetica, parla di un bambino che scopre che la luna in realtà è un buco nel cielo che lui può attraversare e dall’altra parte trova altri bambini. Purtroppo sarà per l’ora che inizia ad essere tarda o sarà che l’attrice, per quanto brava non riesce molto a coinvolgere i bambini, ma l’attenzione dura poco e la maggior parte dei diavoletti preferisce rincorrersi nel salone anziché ascoltare la storia.
Tutto questo movimento, unito al vociare necessario al gioco, alle urla di incoraggiamento e di richiamo, non contribuisce certo a creare un ambiente rilassato.
Con le orecchie ovattate, come se fossimo usciti da una discoteca, ritorniamo al Jazz Country Club.
Al nostro rientro troviamo una gradita sorpresa: la sig.a Gabriella ci ha preparato la ricetta del rotolo. Ci addormentiamo pregustando prelibatezze di pasticceria.

Finalmente domenica mattina troviamo … il sole!
Il sole asciuga i ricordi della pioggia dei giorni scorsi e conferisce un aspetto allegro e spensierato al mare (d’inverno o meno). Oggi non ci sono particolari conferenze, c’è un lavoro sulle emozioni e sul corpo, ma decidiamo di bigiare (o marinare, o far filone o salina a seconda della cultura locale) e andare a vedere la casa delle farfalle.
La casa delle farfalle è un tri-parco che contiene un giardino botanico ai minimi termini una serra con millanta e più farfalle e una mostra-terrario sugli insetti.
Il giardino botanico illustra una decina di alberi con le loro proprietà e il loro uso nella storia dell’umanità. Interessante, ma niente di particolare.
La serra delle farfalle invece è molto interessante, ci sono i vari stadi di vita delle farfalle illustrati con tabelloni grandi e chiari, ma soprattutto ci sono tantissime farfalle enormi e coloratissime. Ci sono anche un paio di gruppi con la guida. C’è il sole, è primavera, la mia felpa è calda, siamo in Romagna (dove qualche anno fa il “poeta” cantava: “facciamo fiki-fiki insieme”), così un farfallo e una farfalla decidono di scambiarsi effusioni amorose sulla mia pancia.
Faccio finta di niente sperando che se ne vadano, ma non c’è nulla da fare… finchè una guida se ne accorge e mi salva dall’imbarazzo prendendo i due passionali amanti li sposta su una foglia lì vicino.
Il museo degli insetti è interessante, ma un po’ meno affascinante di quello dei lepidotteri. Però, posto di avere abbastanza pazienza, può essere anche divertente, ad esempio i bambini possono entrare in un formicaio a loro misura e vedere cosa fanno le formiche (all’interno del formicaio vero). Ci sono vari esemplari di insetti nei loro terrari, e la mostra si chiude con una sala dedicata alle api e agli alveari, con tanto di vero alveare.
Usciamo soddisfatti e ci dirigiamo di nuovo verso Cervia alla volta del Dante e alla ricerca di un posto accogliente che ci possa sfamare (dietro equo compenso s’intende). Giusto vicino all’hotel, in una stradina troviamo un chiosco che vende piadine, ci sono anche sedie e tavolini anche se, ci tengono a precisarlo, loro non possono avvicinarsi al tavolo, né per prendere le ordinazioni, né per portarci da mangiare.
Riproviamo con la piadina e questa volta, complice probabilmente il bel tempo, è veramente uno spettacolo. Spiace di averla finita così rapidamente.
La nostra mini-vacanza sta per volgere al termine. Entriamo al Dante per salutare soci e amici che rivedremo, se va bene, tra un anno.
È un peccato andare via così presto… con questo sole. Decidiamo allora di fare una camminata sulla spiaggia, anche perchè, in questi giorni c’è una manifestazione di aquiloni. La spiaggia è camminata intensamente da molte persone. Ci sono aquiloni di tutte le fogge e dimensioni, ma, sfortunatamente non c’è vento, e quindi sono quasi tutti a terra.

La nostra Scenic ci attende per portarci via dalle vacanze e tornare alla città più bella del mondo (forse in qualche universo parallelo) Castellanza.

È difficile trarre delle conclusioni su questa assemblea soci. Da una parte il fatto di aver pernottato al Jazz Country Club e non al Dante ci ha impedito di vivere e condividere pienamente con le altre famiglie; dall’altra la confusione che abbiamo vissuto al Dante non ci ha fatto rimpiangere questa scelta. Senza contare che il Dante è veramente un hotel di lusso in cui è difficile, almeno per noi, sentirsi a proprio agio. Resta il ricordo di due giorni passati in quasi vacanza con tanti amici che non vedevamo da tanto.

Juan al Jazz Country Club. Sulla tavola si intravvedono delle gustosissime crostatine.
Marian al Jazz Country Club, nel salotto.
Una perplessa famiglia Pagani legge le didascalie al parco botanico della casa delle farfalle.
Una delle più grandi farfalle del mondo (probabilmente la più grande)
Primo piano, dica “FarfallAAA” *click*
Pranzo di domenica con piadina… *slurp*
Festa degli aquiloni con bonaccia

Digitale Terricolo

(English follows)Ho deciso di iniziare una nuova sezione del blog dove commentare quello che succede in Italia. Pensavo di non scrivere in inglese per due motivi – il primo è che malgrado la mia “fluenza” in inglese riesco comunque a scrivere più velocemente e meglio in italiano; il secondo è che difficilmente quello che scrivo può interessare a qualcuno che non parli italiano. Naturalmente se ci fosse qualche anglofono all’ascolto interessato ai miei deliri sarò felice di aggiungere le traduzioni “on demand”.

Fine dell’introduzione. Spinto dal martellare incessante delle ultime settimana sulla necessità di approvvigionarsi di un decoder per il digitale terrestre (o DVB-T per gli addetti ai lavori) volevo scrivere qualche riflessione in merito.
Sul DVB-T e sulla sua utilità sono già stati spesi fiumi di inchiostro, distrutte foreste e riciclati gazillioni di pixel. In sintesi sono d’accordo: che tutti i soldi bruciati in questa operazione potevano essere più proficuamente investiti per ridurre il digital divide (ma forse era comunque necessario adeguare la tecnologia TV in Italia al resto del mondo); che sicuramente il DVB-T non è la tecnologia del futuro (ma posto il futuro abbastanza in là nel tempo, nessuna tecnologia odierna lo è); che col fischio che non si devono fare lavori all’antenna ecc. ecc.
Sicuramente ci sono almeno due fattori positivi: 1) adesso (dopo che è passato l’antennista) riesco a vedere sul mio anzianotto TV (analogico doc) circa 140 canali di cui più o meno la metà in chiaro e 2) dal 18/5/2010 l’informazione TV è migliorata dal momento che il TG4 è sparito dalla sintonia analogica.
Ma parliamo dei contributi. Non quelli passati (ormai sono andati) che hanno avuto come effetto principale quello di tenere alti i prezzi dei decoder, ma l’ultimo, quello attualmente in vigore. La normativa recita che tutte le persone di 65 anni o più, (a) in regola con il pagamento del canone RAI e che (b) abbiano dichiarato meno di 10k€ nel 2009 hanno diritto a un buono di 50€.
Senza voler istigare nessuno alla diserzione del canone, penso che se qualcuno rientra nella categoria (b) abbia spese molto più urgenti e vitali che non quella per rientrare nella categoria (a).
Non solo, ma il contributo è valido solo per il decoder interattivo (MHP che è più costoso del decoder semplice (circa un 4x sui prezzi minimi: 80€ contro 20€) con 400€ di soldi gabellati ai contribuenti si potevano aiutare 20 famiglie anzichè 5. Che poi a ben vedere non le aiuti nemmeno tanto, visto che il contributo è di 50€ e che per arrivare a 80€ ne devi spendere ancora 30€ che più di quanto costa un decoder semplice.
Aggiungo anche che il decoder interattivo ha senso solo se lo colleghi al telefono per partecipare alle trasmissioni interattive e quindi sono potenzialmente altri soldi da spedere per chi probabilmente (visto (b)) non arriva a fine mese con le spese essenziali.
C’è da chiedersi se bisogna ricorrere, ancora una volta, al rasoio di Hanlon oppure se questi incentivi sono fatti per favorire qualcuno in particolare.
Ora se solo trovassi una guida tv semplice per stabilire quale dei 70+ canali posso guardare senza passare un’ora a fare zapping….

(English)
I decided to start a new blog section where I am going to comment what is currently happening in Italy. My intention is to write in Italian (and not in English) for two reasons – first, despite my “fluent” English, I am faster and better at writing in Italian; next it is unlikely that what I’ll write here could be of any interest for those who can’t read Italian. Should this not be the case and one or more English speaking people be interested in my rants, I’ll be happy to add translations “on demand”.