Espansione pin PWM

Salve a tutti, oggi mi permetto di chiedervi due cose, la prima è molto semplice e non merita un post tutto suo. C'è un post di alcune settimane fa dove si parlava di cannibalizzare arduino; in quel thread ho capito che dopo aver caricato lo sketch è possibile staccare fisicamente l'atmega328 per impiantarlo direttamente nello shield, risparmiando così spazio prezioso per il nostro pcb. La domanda è questa, quali componenti bisogna mettere da contorno per far funzionare correttamente solo l'atmega328, basta soltanto un quarzo da 16mhz e 5V stabilizzati oppure c'è bisogno di eventuali resistenze e/o condensatori? Adesso arriva la seconda richiesta. Supponiamo di aver bisogno di 18 porte PWM perciò nemmeno l'arduino mega può venirci in aiuto. Ho visto nel playground che è possibile collegare via i2c un atmega8 per aggiungere 18 porte PWM, ecco il link: http://www.arduino.cc/playground/Main/AtmegaI2cPwmExpander. Allora, se mi affido all'atmega8 poi è possibile comandare separatamente ogni pin aggiuntivo? Ho visto anche che si possono aggiungere porte PWM con l'integrato TLC5940 ma non riesco a reperirlo, ne ho trovati un paio sulla baia ma sono smd. Voi smanettoni professionisti come fareste in caso abbiate bisogno di maggiori porte PWM? Per oggi è tutto amici, saluti.

Ragazzi mi è arrivato l'atmega8 e vorrei provare a collegarlo tramite i2c all'arduino 2009 per aggiungere porte pwm segundo questa guida: http://www.arduino.cc/playground/Main/AtmegaI2cPwmExpander soltanto che non mi è chiaro come procedere. Ad esempio lo script presente nel link va inserito nell'atmega8 come bootloader oppure va messo nell'arduino? Spero in un aiuto, non vorrei bruciare qualcosa. Saluti.

devi programmarlo come indicato in questo tutorial http://arduino.cc/en/Tutorial/ArduinoISP oppure con il tutorial di nathanvi (sorry non ce l'ho sotto mano)

poi devi collegare il tutto via i2c

m

eccolo http://zuccala.blogspot.com/2009/08/mini-tutorial-per-usare-arduino-come.html

Fantastici come sempre... appena posso venire ad un raduno vi offro da bere!

Eccomi dinuovo a rompere, ho provato le procedure consigliate sia nel link di Massimo che nel tutorial di Nathanvi ma ho avuto sempre problemi, ricevo l’errore “avrdude program is not responding”. I collegamenti li ho fatti bene, per quanto riguarda il link di Massimo ho provato i collegamenti sia con 2 arduino 2009 che con un arduino e breadboard ma ricevo sempre l’errore. Ho provato sia su windows che su linux ma niente da fare. Ho un programmatore per pic, il pickit2 della microchip e ho trovato una guida per programmare gli amtel: http://pickit2avrisp.wordpress.com/
Ho fatto generare l’hex da arduino facendo l’upload dello sketch senza collegare la scheda e l’ho caricato nell’atmega8; alla fine della procedura il micro è correttamente programmato (avrdude non genera errori), ho provato a caricare lo sketch Blink dove si fa lampeggiare per un secondo un led sul pin digitale 13 ma testandolo su una breadboard il led effettivamente lampeggia ma con intervalli di 16 secondi, sembra che il delay(1000) non venga rispettato. Il circuito per provare l’atmega8 credo sia giusto, ho usato un LM7805 per alimentare il micro, una resistenza per il led e ho provato pure a mettere un quarzo da 16 Mhz con relativi condensatori da 22pf ma la cosa non sembra cambiare. Ieri per me è stata la prima volta che ho usato un programmatore esterno, forse l’errore riguarda il comando che ho passato ad avrdude per programmare l’atmega8 ma non sono sicuro, comunque il comando che ho usato è il seguente: “avrdude” -p m8 -c stk500 -P com8 -U flash:w:“C:\Documents and Settings\Develop\Documenti\Arduino\Blink\applet\Blink.cpp.hex”:a. Cercando un pò di informazioni su come usare i programmatori in generale, ho visto che forse potrebbero essere i Fuse a far questi scherzi ma da principiante non so nemmenno cosa sono, avete idea dove possa essere l’errore? Nel frattempo continuo a documentarmi e a sperimentare, speriamo bene…
Saluti.

assicurati di avere un quarzo da 16mhz collegato e di aver correttamente impostato i fusibili del processore. quelli stabiliscono da dove arriva il clock e che velocità ha... in mancanza di indicazioni il processore un clock interno da 1 MHz perciò c'è un blink ogni 16 sec.

m

Risolto il problema, ora funziona correttamente. Ho riprogrammato l'atmega8 aggiungendo i settaggi per i fuse nel comando di avrdude, ecco il comando funzionante:

"avrdude" -p m8 -c stk500v2 -P com8 -U lfuse:w:0xFF:m -U hfuse:w:0xC9:m -U flash:w:"C:\Documents and Settings\Develop\Documenti\Arduino\Blink\applet\Blink.cpp.hex":a

Ragazzi, i fusibili impostati sopra non sono giusti, per carità non usateli altrimenti il micro si blocca e non accetterà più comandi. In pratica adesso mi ritrovo con un atmega8 "bloccato" che fa lampeggiare un led e non mi permette di caricargli altro. :'( Per ora sto cercando un modo per resuscitarlo, seguirò alcune guide trovate in rete; ho un altro atmega8 a disposizione e non vorrei sbagliare di nuovo, sapete indicarmi come impostare i fusibili per usare l'atmega8 abbinato ad un quarzo da 16MHz?