Salve ragazzi, ho da porvi alcuni quesiti per il corretto settaggio dei fuse bits.
Partendo dal presupposto che ho capito cosa sono e a cosa servono mi rimane ancora alcuni dubbi su come settarli (prima di combinare un pastrocchio mi informo).
Partendo, ad esempio, da questo articolo del grande Leonardo e che saluto, non viene specificato come ad esempio impostare un oscillatore esterno a 16mhz.
CKDIV8 = 1
CKOUT = 1
SUT1 = 1
SUT0 = 0
CKSEL3 = ??
CKSEL2 = ??
CKSEL1 = ??
CKSEL0 = ??
e poi ancora, se non volessi allocare alcuna memoria per il bootloader ed utilizzare l'intera memoria per il programma come devo settare
BOOTSZ1 = 1 ??
BOOTSZ0 = 1 ??
BOOTRST = ??
Legenda : ?? senza alcun valore anteposto vuol dire tabula rasa
se vi è 1 o 0 anteposto al simbolo vuol dire non ne sono convinto.
Per "sviscerare" la materia, l'unica cosa è lo studio del datasheet.
Poi invece, senza approfondire, ci son un'infinità di programmini, anche via web, che te li calcolano ... ma certamente non ti permettono di "sviscerare" la materia
Quello è per avere un "External Clock", ovvero il clock (un onda quadra) che arriva da un chip esterno (magari un chip di clock ad altissima precisione, volendo anche termostabilizzato) ... da NON confondere con un quarzo o un oscillatore ceramico che metti sui due pin dedicati.
Se sbagli quello sei fregato ... perché poi la MCU si aspetta tale clock e ... non modifichi piû neanche i FUSE senza un programmatore HV o un oscillatore esterno che dia il clock.
Beh fregato non proprio Guglielmo, è capitato..., cosa dici lo resuscitiamo iniettiando un ck mediante un oscillatore esterno, 3 filetti (gnd,vcc e ck) e gli diamo la "scossa" come con il defibrillatore
icio:
Beh fregato non proprio Guglielmo, è capitato..., cosa dici lo resuscitiamo iniettiando un ck mediante un oscillatore esterno, 3 filetti (gnd,vcc e ck) e gli diamo la "scossa" come con il defibrillatore
Icio ... leggi bene quello che ho scritto ...
gpb01:
... non modifichi più neanche i FUSE senza un programmatore HV o un oscillatore esterno che dia il clock.
Allora, leggo e rileggo il datas...(censored)
Clock esterno: va considerato il tipico quarzo e ceramici come low power Crystal oscillator, giusto?
Differenze con il full swing?
Purtroppo navigo nel buio e remo con Google...
Grazie e scusate per le apparenti futili domande...
gpb01: NO, NO, e NO, ... ma lo hai letto con attenzione il mio post #5 ? ? ? :o :o :o
Guglielmo
scusa Guglielmo, forse ho scritto in modo fuorviante. Clock esterno non inteso come da post #5.
ti giuro che ci sto sbattendo la testa come non mai... sai che goduria quando comprenderò
Pag 49 tabella 13.1
i settaggi suggeriti per il mio scopo sono quelli alla voce Low Power Crystal oscillator.
Full swing -> non so cosa è anche se leggendo è molto simile al low power, ma non credo che faccia il mio caso.
LOW frequency -> ma anche no, grazie... Non ho problemi di batteria.
internal 128 khz-> come low frequency e poi non si può nemmeno usare l'ide e l'ambiente Arduino se non leggevo male da Leonardo Miliani
calibrate internal -> come low frequency
external clock-> vedi post #5 Guglielmo
reserved -> non so, ma sicuramente non è quel che cerco.
Sono sulla giusta strada?
... ed ogni singola voce è molto ben spiegata nei successivi paragrafi del data sheet:
Low Power Crystal Oscillator 13.2.3 e 13.3
Full Swing Crystal Oscillator 13.4
Low Frequency Crystal Oscillator 13.5
Internal 128kHz RC Oscillator 13.7
Calibrated Internal RC Oscillator 13.6
External Clock 13.8
Ora ... come te la cavi con l'inglese? Perché in quei paragrafi è chiaramente spiegata ogni singola opzione ... :
In ogni caso TU cosa devio attaccare al ATmega328P? Un quarzo con i suoi due condensatori? O hai una sorgente di clock esterna (un chip che genera un onda quadra)? O vuoi usare il clock interno?
voglio semplicemente collegare quarzo a 16 MHz e condensatori da 22pF come ogni standalone che abbia mai fatto... il discorso è che non voglio fare le cose alla Charlie Chaplin che tornava a casa che stringeva ancora bulloni... quindi ho iniziato a sviscerare un po, forse spingendomi oltre le mie capacità (da perito tecnico agrario ad elettronica qualcosina cambia di base)... :
l'inglese non è il mio forte, ma con il Note 8 ed il suo pennino si fanno miracoli, altro che copia incolla su traslate...
Tornando al discorso, adesso mi è un po più chiaro. Ricado nella casistica dei fuse CKSEL3..1 111, adesso tocca al SUT10 assieme al CKSEL0, sapendo che sono già dei fuse che settano una specie di delay (cicli di clock) per avere una certa stabilità sull'oscillatore.
Anche qui sembra che i valori da settare siano CKSEL0 1 SUT10 11. Confermi? Se si a ho un'altra domanda.
E se mettessi questi ultimi 3 fuse a 110 come suggerito nel fast rising si può incappare in problemi di sorta?
chiedo scusa a tutti se vi sto annoiando...
L'obbiettivo di tutto questo sviscerare è quello di creare prima lo standalone con porta icsp e poi programmarlo, a differenza di come faccio ora che sono costretto a "bruciare" prima il bootloader sul chip (versione AU) e poi saldarlo predisponendo sempre un attacco seriale per la riprogrammazzione, o peggio ancora andare ad inserire un ftdi direttamente sul pcb con porta USB... e comunque devo sempre prima effettuare una scrittura del bootloader con l'adattatore... tutto per paura dei CONfuse bits
Continuo a leggere il datasheet. Mi sono posto un esempio. Risuonatore ceramico a 16Mhz.
E' giusto il low fuse 0xCF ovvero 11001111?
Da quanto leggo sembra essere così. Lo so Guglielmo che non puoi starmi dietro con queste domande imbarazzanti... :
Grazie Guglielmo per la disponibilità. Il fatto è che ovviamente Preferisco il quarzo al risuonatore ceramico, Ma se riesco a capire come settare i fuse potrò scegliere di volta in volta in base al progetto da realizzare. Ritornando al mio post 14 in caso di risuonatore ceramico sarebbero settati correttamente i low fuse?
In caso di quarzo avrei optato per 0xFF.
Corretto?
Allora, intanto ricorda che Arduno UNO monta un risuonatore ceramico e NON un quarzo, per cui, il valore 0xFF che trovi per LF è dato per detto risuonatore
In realtà i FUSE non distinguono più di tanto tra un risuonatore ceramico ed un vero quarzo, salvo per:
[0] le due possibilità Low Power Crystal Oscillator e Full Swing Crystal Oscillator dove, la seconda, garantisce una maggiore immunità al rumore, a scapito di un leggero consumo superiore e del limite inferiore di tensione di alimentazione che sale a 2.7V
[0] lo "Start-Up Time" (vd. tavole 13-4 e 13-6)
Personalmente, in una schedina che ho da poco realizzato, che monta un ATmega1284P (128K di flash, 16K di SRAM) ed un vero quarzo (in formato SMD), per non avere nessun tipo di problemi, ho dovuto impostare i LF al valore di 0xD7 (ho il BOD attivo) ... valore che ho però "scoperto" sperimentalmente dato che, con ritardi superiori (bits SUT0-SUT1), a volte, non funzionava bene il POR :
gpb01:
...
Personalmente, in una schedina che ho da poco realizzato, che monta un ATmega1284P (128K di flash, 16K di SRAM) ed un vero quarzo (in formato SMD), per non avere nessun tipo di problemi...
per vero quarzo intendi tipo questo o c'è di meglio?
E n'altra te la faccio dato che ci sono..
_Edit: Non so come mai, ma il link al datasheet che c'è ora sul sito di Mouser ... NON è corretto (appare quello per i _ST2012SB)**, quello corretto, per i CX2520DB è quello che ti metto in allegato.