[RISOLTO]:clock out su Arduino

Usando il Fuse Calc AVR® Fuse Calculator – The Engbedded Blog ho visto che si può settare un valore per avere in uscita su un pin (mi pare il 14 di ATmega = 8 di Arduino) il clock del chip; l'ho testato ma l'oscilloscopio non rileva nulla. Sarebbe utilissimo laddove shield esterne avessero bisogno di un oscillatore. Ho impostato il pin in OUTPUT ma credo gli si debba dare un comando.
Chi ne sa qualcosa?

Ragazzi, nessuno sa nulla di questa cosa?

Io so quello che c'è scritto sul datasheet. Quel pin viene abilitato con il fuse.
Se non ti funziona, torno a pensare quello che ti ho chiesto già in un altro thread: se stai usando sempre lo stesso micro, non è che per caso ha subito qualche alterazione e non funziona più correttamente?

Hai ragione, ma ieri , tra le mille cose che stavo facendo, sembravo un Robocop con tutti quei chip attaccati addosso XD
Sì, domani (oggi digiuno :() provo con un altro chip ma il datasheet dove parla di questa cosa? Io ho visto solo la voce sul Fusecalc, se hai la pagina me la indichi, per favore? Altrimenti me la cerco io, giusto per capire se bisogna fare qualcosa anche a livello software.

cerca sul datasheet la voce "clock output"
Ciao Uwe

menniti:
ho visto solo la voce sul Fusecalc, se hai la pagina me la indichi, per favore? Altrimenti me la cerco io, giusto per capire se bisogna fare qualcosa anche a livello software.

Il datasheet ne parla al capitolo 8.9 Clock Output Buffer, sono poche righe ma dicono tutto quello che c'è da sapere.

The device can output the system clock on the CLKO pin. To enable the output, the CKOUT
Fuse has to be programmed. This mode is suitable when the chip clock is used to drive other circuits
on the system. The clock also will be output during reset, and the normal operation of I/O
pin will be overridden when the fuse is programmed. Any clock source, including the internal RC
Oscillator, can be selected when the clock is output on CLKO. If the System Clock Prescaler is
used, it is the divided system clock that is output.

Non serve settare nulla in software, basta settare il relativo fuse che a sua volta scavalca la normale funzionalità di I/O settando PB0 esclusivamente come OUT del clock.

:astonished: ma mi confermate che PB0 è il 14 del micro e 8 di Arduino? non dovrei vedere una qualche sinusoide (viste le frequenze in gioco dubito sia una quadra) alla frequenza del clock; ho impostato il micro 8MHz e attivata questa uscita, l'oscilloscopio, tra questo pin e massa non vede né misura un bel nulla, è un digitale. Forse ha ragione leo, farò la prova con un altro chip, ma questo sta funzionando senza problemi. :fearful:

No dovrebbe essere una forma quadrata.
Senó per sicurezza prova con un semplicissimo tester tutte le uscite con un sketch che non fa niente (basta un loop() vuoto); dovresti leggere ca 2,5V sul uscita che porta il segnale del Clock.

Comunque confermo, dovrebbe essere il PB0 pin 14 del Atmega e 8 del Arduino.

Ciao Uwe

Ma a quanto lo alimenti? Che forse dipenda dalla tensione che riceve in ingresso?

uwefed:
No dovrebbe essere una forma quadrata.
Senó per sicurezza prova con un semplicissimo tester tutte le uscite con un sketch che non fa niente (basta un loop() vuoto); dovresti leggere ca 2,5V sul uscita che porta il segnale del Clock.
Comunque confermo, dovrebbe essere il PB0 pin 14 del Atmega e 8 del Arduino.
Ciao Uwe

Ciao Uwe, grazie, gli avevo mandato il blink che non tocca il pin 8, farò anche
questa prova, però ho due oscilloscopi (analogico e digitale) ed un buon frequenzimetro, mi pare davvero da oppio che riesca a rilevare qualcosa con un tester dopo non aver preso niente con tutta quella strumentazione :frowning:

leo72:
Ma a quanto lo alimenti? Che forse dipenda dalla tensione che riceve in ingresso?

Questa è una cosa interessante, in effetti ho lavorato sempre a 3,6V sulla board anche perché a 5v ottenevo cose strane sul comportamento del blink, a ben pensare è possibile che qualche cosa sia davvero andata in palla nel chip, e comunque ti avevo già confermato che domani proverò un altro chip a cui non ho fatto sevizie. Penso di fare così, per essere sicuro: lo metto sul Arduino2009 e lo programmo da Arduino UNO per farlo lavorare su Arduino (clock esterno 16MHz) eclock out attivo; poi lo piazzo su Arduino UNO e misuro. Vi farò sapere :cold_sweat:

menniti:
Ciao Uwe, grazie, gli avevo mandato il blink che non tocca il pin 8, farò anche
questa prova, però ho due oscilloscopi (analogico e digitale) ed un buon frequenzimetro, mi pare davvero da oppio che riesca a rilevare qualcosa con un tester dopo non aver preso niente con tutta quella strumentazione :frowning:

Non posso immaginarmi la Tua disponibiliá di strumentazione. Se do un consiglio cerco di darlo con i mezzi piú semplici.

menniti:
Questa è una cosa interessante, in effetti ho lavorato sempre a 3,6V sulla board anche perché a 5v ottenevo cose strane sul comportamento del blink, a ben pensare è possibile che qualche cosa sia davvero andata in palla nel chip, e comunque ti avevo già confermato che domani proverò un altro chip a cui non ho fatto sevizie. Penso di fare così, per essere sicuro: lo metto sul Arduino2009 e lo programmo da Arduino UNO per farlo lavorare su Arduino (clock esterno 16MHz) eclock out attivo; poi lo piazzo su Arduino UNO e misuro. Vi farò sapere :cold_sweat:

Ma Tu sai che a 3,6V non puoi usare un clock da 16MHz, ma solo da 12MHz?

pagina 316, capitolo 28.3 Speed Grades.

Ciao Uwe

uwefed:

menniti:
Ciao Uwe, grazie, gli avevo mandato il blink che non tocca il pin 8, farò anche
questa prova, però ho due oscilloscopi (analogico e digitale) ed un buon frequenzimetro, mi pare davvero da oppio che riesca a rilevare qualcosa con un tester dopo non aver preso niente con tutta quella strumentazione :frowning:

Non posso immaginarmi la Tua disponibiliá di strumentazione. Se do un consiglio cerco di darlo con i mezzi piú semplici.

Sì, hai ragione, ma io avevo scritto nel post di apertura che ho misurato con l'oscilloscopio.

menniti:
Questa è una cosa interessante, in effetti ho lavorato sempre a 3,6V sulla board anche perché a 5v ottenevo cose strane sul comportamento del blink, a ben pensare è possibile che qualche cosa sia davvero andata in palla nel chip, e comunque ti avevo già confermato che domani proverò un altro chip a cui non ho fatto sevizie. Penso di fare così, per essere sicuro: lo metto sul Arduino2009 e lo programmo da Arduino UNO per farlo lavorare su Arduino (clock esterno 16MHz) eclock out attivo; poi lo piazzo su Arduino UNO e misuro. Vi farò sapere :cold_sweat:

Ma Tu sai che a 3,6V non puoi usare un clock da 16MHz, ma solo da 12MHz?
http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf
pagina 316, capitolo 28.3 Speed Grades.

Ciao Uwe

[/quote]
No, non lo sapevo, ma in realtà sto facendo prove a 1 e 8MHz con 3,6V, quindi i problemi derivano da altro, infatti a me succede l'opposto: cioè il circuito minimal (senza oscillatore esterno) a 1 o 8MHz, se lo alimento a 5v si blocca, ma forse ora mi è venuto un flash: poiché ho messo un led "arancio" (il primo che ho acchiappato nello scatolino :grin:), che mi pare consumi tanto, e ho dimensionato la R su 3,3V (il primo esperimento a bassa tensione), probabilmente aumentando a 5V il pin di Arduino eroga oltre 40mA e mi blocca tutto, pensi sia possibile? :blush: Più tardi vado a fare la prova.

menniti:
non dovrei vedere una qualche sinusoide (viste le frequenze in gioco dubito sia una quadra)

Da un'uscita digitale può uscire solo un'onda rettangolare, però quello che vedi dipende dalla strumentazione che usi e dalla qualità, oltre che la tipologia, dell'accoppiamento tra pin e resto del circuito.
Se guardi un clock a 8 MHz con un oscilloscopio da 20 MHz vedi una sinusoide distorta, se lo guardi con un oscilloscopio da 200 MHz vedi l'onda quadra con i fronti di salita leggermente arrotondati verso il picco e relativa piccola sinusoide, da poche decine di mV a pochi mV, smorzata in 2-4 cicli, è dovuta alla componente induttiva del pcb e dalla qualità della sonda.
Sicuramente lo sai già, però ricordarlo non fa mai male, la sonda deve essere settata a 10x (10 Mohm di impedenza), il limitatore di banda, tipicamente 20MHz, del canale su cui fai la misura deve essere OFF, altrimenti non solo non vedi l'onda quadra, vedi qualcosa di molto distorto, ma rischi pure di dare fastidio al normale funzionamento del circuito.
Ultima nota, per questo tipo di misure è indispensabile che GND sia preso tramite il cavetto della sonda e da un punto di massa il più vicino possibile, questo più che altro per non introdurre ulteriori distorsioni, e rumore, alla misura, però nel tuo caso è più una misura di verifica presenza segnale che qualitativa, quindi va bene pure usare un cavo GND collegato all'apposita presa dell'oscilloscopio.

Grazie, mi riferivo al fatto che ho avuto a che fare recentemente con la problematica dei generatori di onde quadre, quindi sapevo che per generare una quadra degna di tale nome servivano molte armoniche; ho un generatore da 10MHz (niente di pauroso, comunque a controllo digitale, abbastanza stabile) e oltre i 6MHz i circuiti riconoscono comunque i due livelli ma sull'oscilloscopio si vede una cosa che è un misto tra una sinus e una triangolare; nell'AT in effetti la situazione è opposta, cioè stiamo partendo da un'oscillatore più "grande" per avere una frequenza più piccola, quindi mi devo aspettare proprio una quadra.
L'oscilloscopio è un digitale da 60MHz, la sonda è impostata a 10x ed uso il cavetto attaccato ad essa e collegato al pin 14(GND) ma non vedo niente, però ancora non ho fatto le nuove prove...; invece ti ringrazio per la fiducia ma non so del limitatore di banda; non è che le "mie" distorsioni dipendono proprio da questo? Mi daresti qualche altra indicazione su dove cercare la funzione? Ho un GW-Instek GDS-2064.

EDIT:
Ce l'ho fatta! vedo 8 o 16MHz sull'oscilloscopio, l'onda è quadra ma piuttosto distorta (vorrei che astrobeed mi chiarisse la questione del limitatore). Non chiedetemi come ho fatto, sto provando mille cose in contemporanea, stasera cerco di riordinare le idee.

Se non vedi la quadra come tale puó anche essere che la sonda non sia regolata bene. L'oscilloscopio ha un pin con un segnale di calibrazione. Attacca lí la Tua sonda e regola il condensatore nel BNC della sonda in modo che vede una bella quadra.
Qua é spiegato come fare col Tuo oscilloscopio:
http://www.testequipmentdepot.com/instek/pdf/gds2000_manu.pdf a pagina 115
e spiegazione come funziona:
http://www.salvitti.it/geo/scope/index.htm in basso capitolo "sonde".

Ciao Uwe

menniti:
Ce l'ho fatta! vedo 8 o 16MHz sull'oscilloscopio, l'onda è quadra ma piuttosto distorta (vorrei che astrobeed mi chiarisse la questione del limitatore). Non chiedetemi come ho fatto, sto provando mille cose in contemporanea, stasera cerco di riordinare le idee.

Su tutti i DSO se apri il menù relativo al canale c'è la voce "BW limit" , o qualcosa di simile, che se attivata limita la massima banda del canale ad un valore compreso tra 10 e 20 MHz, dipende dal DSO, serve per tagliare fuori il rumore ad altissima frequenza quando si fanno misure su segnali lenti.
Se quell'opzione è attiva distorce moltissimo le onde quadre con frequenza maggiore di 0.5-1MHz.

uwefed:
Se non vedi la quadra come tale puó anche essere che la sonda non sia regolata bene. L'oscilloscopio ha un pin con un segnale di calibrazione. Attacca lí la Tua sonda e regola il condensatore nel BNC della sonda in modo che vede una bella quadra.
Qua é spiegato come fare col Tuo oscilloscopio:
http://www.testequipmentdepot.com/instek/pdf/gds2000_manu.pdf a pagina 115
e spiegazione come funziona:
http://www.salvitti.it/geo/scope/index.htm in basso capitolo "sonde".

Ciao Uwe

Ciao, grazie per il link, lo strumento l'ho comprato proprio da loro e sembrava che avrebbero realizzato un manuale in italiano, per questo non avevo scaricato l'originale, ho testato le sonde con l'uscita di calibrazione e sono perfette, ho misurato anche le quadre che escono dal mio generatore e vanno bene, fino a certe frequenze (max 4-5MHz), oltre è il generatore che distorce; l'altro link è piuttosto interessante; in effetti non ho avuto tempo di studiarmi questo strumento comprato da poco, e vedo che diverse delle voci che ho trovato nei menu qui sono spiegate, sei una fonte infinita di informazioni! XD

astrobeed:

menniti:
Ce l'ho fatta! vedo 8 o 16MHz sull'oscilloscopio, l'onda è quadra ma piuttosto distorta (vorrei che astrobeed mi chiarisse la questione del limitatore). Non chiedetemi come ho fatto, sto provando mille cose in contemporanea, stasera cerco di riordinare le idee.

Su tutti i DSO se apri il menù relativo al canale c'è la voce "BW limit" , o qualcosa di simile, che se attivata limita la massima banda del canale ad un valore compreso tra 10 e 20 MHz, dipende dal DSO, serve per tagliare fuori il rumore ad altissima frequenza quando si fanno misure su segnali lenti.
Se quell'opzione è attiva distorce moltissimo le onde quadre con frequenza maggiore di 0.5-1MHz.

Ok, tra manuale e pulsanti vari, se c'è la troverò e la attiverò, ti faccio sapere
Grazie ancora, ora riassumo le prove che ho fatto.

Bene, per chi è interessato a questa cosa: personalmnete trovo estremamente utile poter disporre di un clock bell'è pronto e, soprattutto, sincronizzato con l'ATmega, si perde il pin 8 ma si guadagna hardware $) Avviso gli elettronici che con il quarzo esterno si ottiene una stabilità perfetta, con l'oscillatore interno (che mi pareva d'aver letto fosse gestito da un quarzo integrato nel chip, avete conferme o smentite da fare?), invece si ha stabilità con risoluzione del KHz (ma devo fare altre prove), comunque più che valida per svariate applicazioni
La manovra, alla fine semplice per avere su questo pin lo stesso clock del micro è questa: prelevare dal file boards.txt i 3 valori di fuses dalla board con cui stiamo lavorando (p.es. UNO o 2009); inserirli manualmente nei tre spazi previsti nel programma Fusecalc in modo da settare quest'ultimo con la configurazione originale della board; attivare la casella "clock out" e ricalcolare i fuses; creare in boards.txt una nuova board, identica all'originale, ma con diverso codice identificativo (i caratteri iniziali di ogni riga) ed i nuovi valori di fuses; inviare bootloader e sketch (qualsiasi) ad Arduino; già col bootloader si avrà il clock out attivo.
Descritta così sinteticamente è una tecnica che potranno eseguire solo coloro che già si muovono in questi ambiti; nella guida che sto per pubblicare, invece è spiegato come trovare e modificare il file boards.txt, cercherò di mettere anche una nota riguardo questa cosa che mi sembra interessante, in tal modo anche chi è meno esperto (come me...) potrà eseguirla con facilità.
Grazie a tutti per le preziose notizie (informatiche, elettroniche e sulla strumentazione) e la disponibilità a fornirle XD

2 cose ( scusami che mi é venuto in mente la seconda soluzione solo ora):

Ciao Uwe

uwefed:
2 cose ( scusami che mi é venuto in mente la seconda soluzione solo ora):

Ciao Uwe, ci manca solo che devi scusarti :~ i tuoi interventi sono come benedizioni, in qualsiasi momento arrivino! XD

  • L' oscillatore interno al ATmega é un circuito RC non uno quarzo.

L'avevo immaginato dal comportamento "ballerino" della frequenza, ma volevo conferma di non aver commesso errori. Grazie.

Ottimo! Questa p.es. è una tecnica eccellente quando il circuito esterno richiede un proprio oscillatore, magari ad una frequenza particolare, che dovrebbe essere ottenuta con dell'hardware in uscita dal micro. Un esempio di ciò che ho realizzato tempo fa (ne avevamo parlato anche con te); un circuito generatore di sequenze di bit clockato a 10MHz; ho dovuto usare un quarzo+circuito (ma poteva essere qualsiasi altro hardware); invece di mettere anche il quarzo di stand alone al micro, avrei potuto inviargli tranquillamente questa frequenza al pin XTAL1. Allora non sapevo ovviamente del clock out altrimenti avrei potuto mettere un divisore per 1,6, ma il circuito sarebbe stato "scomodo" da realizzare, oppure mettere il quarzo da 10MHz al micro e prelevare il clock out per il circuito. Insomma ora che tutte queste tecniche sono note e sono uscite tante info forse vale la pena scriverle, dopo aver fatto le opportune prove, così chiunque abbia questo tipo di necessità potrebbe decidere quale sia la soluzione migliore.
Grande Uwe, e grazie ancora!

EDIT: aggiungo che il reference dell'ATmega è davvero una miniera di informazioni, devo mettermi in testa che va stampato (448pp!!!) e almeno sfogliato una volta; io non riesco a fare ricerche "a video" su file così lunghi, sono un antico all'antica :wink: magari poi uso il pdf per cercare l'argomento e la stampa per studiarlo (anche perché con l'inglese :~)