Corso di C (ATMega) per utenti Arduino?

Ehilà,
un po' perché vorrei sfruttare al massimo i miei chip, un po' perché vorrei programmare su microcontrollori con poca memoria (ATTiny45), un po' per cultura personale vorrei imparare a programmare in C per gli ATMega.
Ho letto su Internet che questi chip differiscono pochissimo da una versione all'altra, quindi una volta imparato a programmarne uno, dovrei essere in grado di utilizzarne diversi...
Ho cercato qualche guida online, ma ho trovato solo esempi come questo (e non mi piace lo stile che ha il tipo) e qualche "tutorial a puntate" pubblicato sul blog di qualcuno che dopo due settimane s'è stufato ed ha smesso di scrivere.

Ora vi chiedo: esiste una guida (in Italiano o Inglese) per chi conosce già un po' di C ed ha fatto un paio di progetti con Arduino?
Mi basterebbe anche una lista di funzioni (nome, che variabili richiedono e cosa ritornano), librerie, operatori (a cosa servono le tildi? E le "e commerciali"?) e tipi (ma immagino abbiano le stesse dimensioni che su Arduino, escluso il tipo String che non esiste) con qualche esempio.

Ed ora il difficile: se fosse su carta, sarebbe anche meglio (:

Qualcuno pensa di conoscere qualcosa del genere?

Non ho capito se vuoi imparare il C o vuoi imparare ad usare altri micro oltre agli Atmega oppure entrambe le cose XD

Se è per il solo C, esistono tantissime guide in rete. Tieni comunque presente che il Wiring che usi per programmare con l'IDE di Arduino deriva dal C, quindi già ne stai usando alcuni componenti.

Se vuoi applicarti agli Attiny, posso darti qualche dritta io dato che spippolo con gli Attiny85 e gli Attiny84 da qualche mese.
Innanzi tutto devi scaricarti il core Arduino-Tiny da qui così da rendere l'IDE compatibile con i nuovi micro. Poi ti consiglio di leggerti i miei appunti su come usare un Attiny85.

Condivido le Tua richiesta di carta ma trovi molto di piú su internet.

per Arduino:
un libro per iniziare; ma non spiegherá tutte le funzioni possibili (inteso quelle per Arduino e quelle generali di C)
sul grande schermo del Tuo PC.
http://arduino.cc/en/Tutorial/HomePage per imparare.
Arduino - Home spiega le funzioni
Arduino Reference - Arduino Reference per accedere direttamente ai pin. Quello che Ti sembra strano nel codice che hai trovato.

per c:
un qualsiasi libro di C o C++
qualsiasi corso C/C++ su internet.

Ciao Uwe

Mmmh credo di essermi spiegato male:
Utilizzo Arduino con successo già da un po' e vorrei passare a programmare in C per gli ATMega senza passare per Arduino e le sue librerie.
Volevo sapere se ci fossero guide per passare da Arduino ad ATMega liscio, oppure una lista di funzioni, operatori e tipi (conq ualche esempio) per l'ATMega (:

Scusate se ho fatto un po' di confusione :S

Nessuna differenza. L'Atmega lo programmi nello stesso modo e con l'IDE di Arduino usando le stesse funzioni. Ricordati solo della corrispondenza tra i pin di Arduino ed i piedini del micro quando effettui i collegamenti :wink:

NeXTWay:
Mmmh credo di essermi spiegato male:

Volevo sapere se ci fossero guide per passare da Arduino ad ATMega liscio, oppure una lista di funzioni, operatori e tipi (conq ualche esempio) per l'ATMega (:

La tua richiesta è lo stesso non molto chiara, il C non cambia se lo usi su un supercomputer o una piccola mcu a 8 bit, gli operatori, i comandi/istruzioni sono sempre gli stessi, addirittura un programma C scritto per girare su un PC con s.o. 64 bit può girare senza cambiare una singola riga anche su un ATmega a patto che non richieda più memoria di quella disponibile.
Ovviamente stiamo parlando di C ANSI perché con il C++ il discorso è diverso ed è altamente sconsigliato per l'uso con le MCU.
La questione può essere scissa in due punti fondamentali, il primo è il linguaggio C vero e proprio, e su questo trovi tonnellate di carta stampata e fiumi di inchiostro elettronico, hai solo l'imbarazzo della scelta, poi c'è il discorso utilizzo della MCU e su questo punto non esiste una soluzione universale.
Ogni MCU/MICRO è diversa da un'altra e richiede modalità diverse per utilizzarla, di base hai sempre un set di registri che ti permette di interagire con le varie periferiche contenute nella MCU, però è indispensabile studiarsi il data sheet, le varie application note e gli eventuali reference manual per poterle usare, Arduino/Wiring ti permette di bypassare questa parte semplificando molto la problematica.
Dal punto di vista del C una mcu è la stessa cosa di un pc con la differenza che non hai una tastiera e un monitor, tieni pure presente che il C non prevede le periferiche, queste devono essere gestite da librerie esterne realizzate dal produttore dell'hardware.
Quasi sempre i compilatori C per le MCU utilizzano come periferica standard per la classica "printf" la porta seriale, che però deve essere preinizializzata a cura del programmatore.
Per programmare in C gli Atmega ti conviene usare il GCC nella sua versione per per questi micro, ovvero l'avrgcc, e la libreria avrlibc come raccolta di funzioni, che poi sono il compilatore e la libreria di base utilizzati da Arduino.
Come ambiente di sviluppo AVR Studio 4 se ti limiti agli 8 bit, oppure AVR Studio 5, molto più pesante e invasivo della versione 4, se vuoi utilizzare pure i micro di Atmel a 16 e 32 bit.

NeXTWay:
...(a cosa servono le tildi? E le "e commerciali"?)...

Forse se non sai a cosa servono... non conosci per bene il C.
I nomi dei registri che puoi usare sono tutti nominati ed elencati nel datasheet del µC che vuoi usare e la maggior parte delle volte vanno bene per tutti i µC(al massimo ci metti delle direttive per il preprocessore...).
Allo stesso modo le funzioni e le facilità sono elencate nel datasheet e nelle referenze del linguaggio(AVRC nel nostro caso).

NeXTWay:
...(a cosa servono le tildi? E le "e commerciali"?)...

vedi

e
http://www.arduino.cc/playground/Code/BitMath
ciao Uwe