programmare ATmega8A standalone

Pelletta:
Salve! Per programmare l'atmega8 a 1MHz uso questa configurazione, l'ha partorita con dolore il nostro grande Menniti e direi che funziona.

Come diceva il grande Giacomo del trio comico nello sketch "PDOR": non è il parto che mi preoccupa ma l'accoppipamento =(
Allora, BUD, ti devo chiedere scusa ma proprio stanotte mi sono accorto di un piccolo errore, riguardo la board da 1MHz. I fuse corretti sono:
.....low_fuses=0xe1
.....high_fuses=0xdf
quindi tu devi correggere (SOLO in quella da 1MHZ!!) il low e Reizel deve correggere l'HIGH, anche se non gli dà problemi con sketch grandi, come invece accade di sicuro con i 168, la cui problematica è stata risolta proprio con quel tipo di calcolo, poi fa' come ti pare :slight_smile:

La tecnica usata e sperimentata con moltissimo successo da Pelletta è quella che andrebbe adottata a tutti gli effetti; ma, per abbreviare, si potrebbe omettere di installare quarzo e condensatori; va verificato se ci sono problemi coi tempi, ma dovrebbe andare comunque; @ Pelletta: se hai modo di fare il test fammi sapere se i tempi vanno bene altrimenti lascia tutto com'è che siamo al sicuro...

@reizel: non ho capito il passaggio della pressione del reset prima di inviare lo sketch, non puoi usare il condensatore da 10µF tra il +5 e Reset?
Ancora, ti ho suggerito di caricare PRIMA il bootloader, anche se devi lavorare a 1MHZ, in modo che gli imponi i nuovi fuses, oltretutto questa manovra potrebbe farti recuperare il tuo 8A bloccato; in caso contrario usa il suggerimento di Leo che è sicuramente funzionante.

men, il bootloader su quello bloccato non riesco a caricarlo e il suggerimento di leo non ho capito come metterlo in pratica, provo in un altro momento che sono piu' concentrato..

in effetti il metodo che ho usato io e' abbastanza grezzo, quello di Pelletta e' piu' lineare, provero' come a fatto lui con il bootloader prima, poi se tutto ok ritento con l'8a bloccato

invec di schiacciare il reset della uno dici di staccare e riattaccare il filo? e' la stessa cosa no?

Il quarzo esterno non serve se si usa un micro vergine o comunque programmato per andare con l'oscillatore interno (da 1 a 8 MHz).

Il reset non serve premerlo se si adopera un condensatore o una resistenza (o entrambi) per disattivare l'autoreset del micro. Alternativamente installate l'Optifix 4.4 (vedi relativo mio thread): vi togliete la pena una volta per tutte :wink:

Il fuse basso corretto è 0xE1, che per avere 1 MHz, che è poi l'impostazione del micro di fabbrica.

Il fuse alto serve per riservare spazio per il bootloader: questo è necessario se volete programmare il micro sull'Arduino ma non serve se usate il micro in standalone e lo flashate tramite ISP. Per cambiare i fuse si può dire all'IDE di programmare il bootloader ma io preferisco usare avrdude da terminale, così sono sicuro che i parametri che gli passo sono quelli che effettivamente vengono scritti sul micro. Questione di gusti.

Cambierò il fuse basso e farò la prova, per il risultato abbiate pazienza che ho al momento tutte le breadboard occupate

Noto che hai spesso problemi di concentrazione, quando ti deciderai a toglierti davanti alla faccia quei due meloni piacevolmente ballonzolanti, ti passerà la voglia di frutta e sarai concentratissimo :grin:
Non ho capito di che filo stai parlando, per scrupolo provo a chiarire un po' questa cosa.
Il pulsante reset resetta solo Arduino, il reset del microcontrollore stand alone invece viene controllato dal pin 10 di Arduino.
Ci sono casi in cui il reset di Arduino riceve un impulso che impedisce la manovra di caricamento su stand alone; in questi casi puoi montare un condensatore tra +5V e pin RESET di Arduino (NON dello stand alone!) e rifare l'operazione; rispetto a quanto leggi nella Guida questa tecnica del condensatore sì collegato è diversa, ma è stata scoperta da Astrobeed, DSO alla mano, quindi è la migliore in assoluto; comunque a me ha funzionato anche quella che prevede il collegamento del condensatore tra RESET di Arduino e GND.

La tecnica di Leo consiste nell'andare (se hai Windows) in modalità PROMPT DOS, spostarti nella cartella che ti ha indicato e scrivere a mano quel comando, ovviamente con la corretta sintassi Windows (quella è per Linux), mettendo al posto di "dev/ttyACM0" la COM a cui è collegato Arduino; appena lo esegui automaticamente imposti il low_fuses al valore e1.

@ Leo: stavo scrivendo.... concordo su tutto ma non sulla questione del fuses_high; nel caso del mega168 (poi mi sono ricordado che l'8 non aveva dato problemi...) se non gli dai il suo giusto valore, diverso da quello di fabbrica, non è in grado di far partire sketch oltre i 15K; te lo può confermare Pelletta, che ha assistito al parto, come dice lui; a tal proposito tengo a precisare che è stato un atto di ermafroditismo, quindi non è lui il padre.... XD
Riguardo il quarzo, la cosa è nata dal fatto che inizialmente programmavo il chip mettendolo su un secondo Arduino; quando sono passato ai test sulla breadboard me li sono portati dietro perché mi pare c he mi avessero dato problemi con i tempi; c'è da dire che però davo un mare di casino con micro già programmati per 16MHz, quindi probabilmente è stato per quello. Da quel momento in poi quando preparo un 3micro ho preso l'abitudine di mandargli il bl per il clock a cui deve lavorare e poi lo sketch, così vado sul sicuro

E' tutto corretto quello che dici. Io preciso solo qualche info di approfondimento/chiarimento.

Parlando del fuse alto ho precisato a cosa serve e come usarlo, nel senso che serve per riservare lo spazio al bootloader. Ed a prevederne l'esistenza, ovviamente. Poi i valori sono da scegliere in base a cosa uno vuol farci col micro.

Per il quarzo son certo di quello che dico perché tutti i Tiny che ho ricevuto li ho programmati tutti senza quarzo esterno dato che arrivano di fabbrica impostati per lavorare con l'oscillatore interno. Invece ho provato a flashare un 328 che era programmato per usare il quarzo esterno senza metterglielo e ho avuto errori da avrdude.

OK, quindi è confermato che allora li avevo programmati col quarzo (parlo dei 328) perché lo erano già stati in precedenza.
I TINY non li ho mai programmati col quarzo, avevo solo provato a cambiare i fuse col solitop sistema, senza riuscirci, è la volta buona che provo sta benedetta riga di AVRDUDE, ma sono anch'io alle prese con i miei lavoretti...

./avrdude -C ./avrdude.conf -P /dev/ttyACM0 -U lfuse:w:0xe1:m -p m8 -c stk500v1 -b 19200

ecco perche' mi sembrava arabo, era linux che non ho mai usato :frowning:

ho installato win-avr che ha dentro arvdude

avrdude -C avrdude.conf -P /dev/ttyACM0 -U lfuse:w:0xe1:m -p m8 -c stk500v1 -b 19200

come la scrivo la porta? ora e' collegato sulla com21

sostituisci dev/ttyACM0 con COM21, però Leo ha scritto che dovresti usare la versione in dotazione all'IDE che è patchata, altrimenti probabilmente non ti funziona, perché non vai semplicemente a trovarti questo .exe nel percorso che ti ha indicato lui?

Difatti ci vuole quell'avrdude altrimenti non ti vede l'Arduino come programmatore ISP.
Cmq non è arabo perché è per Linux, ti risulta arabo perché non hai mai usato il terminale. Da DOS sarebbe stato tutto uguale a parte aggiungere l'estensione al file e togliere i "./" :stuck_out_tongue:

avrdude -C avrdude.conf -P COM21 -U lfuse:w:0xe1:m -p m8 -c stk500v1 -b 19200

ok, dal prompt di dos, nella cartella dove c'e' avrdude dell'installazione originale di arduino0022 l'ho lanciato ma mi dice:

avrdude: ser_open(): can't open device "com21": impossibile trovare il file specificato

bo... x me e' windows che e' troppo contorto in queste operazioni...

Prova a mettere lo slash / davanti a COM21, in alternativo prova a eseguire la riga da "esegui" di Windows, fornendo i necessari percorsi dei file. Non vorrei che in emulazione DOS il Win dimenticasse che si possono avere più di 4 COM, ma mi pare strano....

no niente da fare, ho provato anche a scrivere usb al posto di com coe ho letto qui
http://www.ladyada.net/learn/avr/avrdude.html

dai, lasciamo perdere questo particolare, l'8a non lo butto di certo

senti prima sull'8A funzionante avevo messo uno sketch di fade rgb e si vedeva uno sfarfallio nella luce, cosa che non avveniva sull'arduinoUNO

non e' che la frequenza e' calata mettendolo a 1MHz? xche' l'effetto era evidente

appunto... è ora che passi a linux! vedrai ti cambierà la vita!!

reizel:
no niente da fare, ho provato anche a scrivere usb al posto di com coe ho letto qui
AVR Tutorial - AVRDUDE

dai, lasciamo perdere questo particolare, l'8a non lo butto di certo

senti prima sull'8A funzionante avevo messo uno sketch di fade rgb e si vedeva uno sfarfallio nella luce, cosa che non avveniva sull'arduinoUNO

non e' che la frequenza e' calata mettendolo a 1MHz? xche' l'effetto era evidente

Dipende se nel file board hai messo la frequenza esatta :stuck_out_tongue:
io con gli ATtiny ho combinato di tutto.... prova a dare un occhio al topic giocando con gli ATtiny nell'ultima pagina cè un mio post con tutta la procedura passo passo per settare i fuse per farlo lavorare ad 8Mhz... dagli un occhio potrebbe esserti utile.. ricorda di cambiare il micro nei settaggi però :stuck_out_tongue:

dab, son troppo vecchio per un nuovo sistema operativo, gia' non son piu' capace di giocare con le console, figuriamoci cambiare OS =(

ratto, seguo ogni tanto il topic degli attiny, mi interessa, ma finisce che metto troppa carne al fuoco, poi mi fai venir voglia di provarli... stasera leggo :wink:

[OT]
..mia madre è del '54, con windows non è mai riuscita a far niente. le ho messo ubuntu e finalmente usa il pc...
[/OT]

dab, per linux lo avrei provato e forse/sicuramente ora lo starei usando se avessi trovato qualcuno che mi spiegava le basi, ma son stato circondato e catturato da winzozz.
ora come ora non tento nemmeno di provare linux, poi, per chi comincia da zero, credo sia una gran fortuna partire con linux

reizel:
no niente da fare, ho provato anche a scrivere usb al posto di com coe ho letto qui
AVR Tutorial - AVRDUDE

dai, lasciamo perdere questo particolare, l'8a non lo butto di certo

senti prima sull'8A funzionante avevo messo uno sketch di fade rgb e si vedeva uno sfarfallio nella luce, cosa che non avveniva sull'arduinoUNO

non e' che la frequenza e' calata mettendolo a 1MHz? xche' l'effetto era evidente

Chiaro che la frequenza "cala" se passi da un chip a 16MHz ad un chip a 1MHz! Ciò detto 1MHz è comunque tanto, si tratta di vedere come funziona lo sketch; per capire se il micro sta lavorando correttamente coi tempi mandagli il solito blink e vedi se rispetta l'intervallo di un secondo, altrimenti c'è ancora qualcosa da rivedere.