Go Down

Topic: [RISOLTO]:clock out su Arduino (Read 3553 times) previous topic - next topic

Michele Menniti

May 06, 2011, 05:25 pm Last Edit: May 08, 2011, 03:33 pm by menniti Reason: 1
Usando il Fuse Calc http://www.engbedded.com/fusecalc/ 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?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Michele Menniti

Ragazzi, nessuno sa nulla di questa cosa?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

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?

Michele Menniti

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.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed

cerca sul datasheet la voce "clock output"
Ciao Uwe

astrobeed

#5
May 07, 2011, 09:44 am Last Edit: May 07, 2011, 01:29 pm by astrobeed Reason: 1

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.

Code: [Select]

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.

Michele Menniti

:smiley-eek: 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. :smiley-eek-blue:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

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

leo72

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

Michele Menniti


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 :(

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  :smiley-roll-sweat:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed


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 :(

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

Quote from: 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  :smiley-roll-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

Michele 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 :(

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.

Quote

Quote from: 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  :smiley-roll-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 :smiley-mr-green:), 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? :smiley-red: Più tardi vado a fare la prova.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

astrobeed


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.

Michele Menniti

#13
May 08, 2011, 11:24 am Last Edit: May 08, 2011, 03:09 pm by menniti Reason: 1
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.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

uwefed

#14
May 08, 2011, 08:17 pm Last Edit: May 08, 2011, 11:02 pm by uwefed Reason: 1
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

Go Up