generazione onda quadra con Arduino

Ciao, sto cercando di capire come far generare ad un arduino UNO una onda quadra al 50% di duty cycle con una frequenza variabile che vada da 16666,6667 Hz a 165000 Hz.

Ho letto di tutto un po'ma quel che riesco ad ottenere è solo confusione...

Grazie per quanto potrete fare...

Andrea

Due strade ...

... la più semplice usare la funzione tone(), che fa parte del core di Arduino e che trovi ben descritta, con tutte le sue possibilità ed i suoi limiti, QUI

... la più complicata, studiarti il datasheet e mettere mano ai timer della MCU per generare il priodo della durata richiesta.

Guglielmo

... terza soluzione, anch'essa semplice, usare la libreria QUI descritta :smiley:

Guglielmo

Grazie Guglielmo ! :slight_smile: :slight_smile: :slight_smile:

Ho tentato la soluzione numero tre ma compilando il programma di test che si trova nella pagina, ottengo messaggi di errore:

"Arduino:1.8.5 (Windows XP), Scheda:"Arduino/Genuino Uno"

C:\Documents and Settings\Andrea\Documenti\Arduino\sketch_jun19b\sketch_jun19b.ino: In function 'void loop()':

sketch_jun19b:61: error: 'TCCR2' was not declared in this scope

; Serial.println(TCCR2,HEX);

^

sketch_jun19b:63: error: 'OCR2' was not declared in this scope

Serial.println(OCR2,HEX);

^

exit status 1
'TCCR2' was not declared in this scope

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"
"

Io ho guardato ed effettivamente non mi pare ci siano le dichiarazioni per OCR2 e TCCR2...

Qualcuno ha mai usato questa libreria? (Frequencytimer2)

  1. Installa l'ultima versione dell'IDE 1.8.5
    1.1 nelle impostazioni (preferences) metti il segno di spunta per i dettagli (verbose) sia in compilazione che upload.

  2. Seleziona la giusta board nell'IDE Tools -> Board

Ho appena provato e NON da alcun errore.

Guglielmo

Ciao,

  1. l'IDE installato è l'1.8.5 in italiano
  2. ho attivato i flag suggeriti
  3. ho selezionato ARDUINO/GENUINO1 nelle boards

il mio ARDUINO UNO è originale

vado in Verifica/Compila ma il risultato è lo stesso (più dettagliato ora)

Di seguito il log:

Arduino:1.8.5 (Windows XP), Scheda:"Arduino/Genuino Uno"

C:\Programmi\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Programmi\Arduino\hardware -tools C:\Programmi\Arduino\tools-builder -tools C:\Programmi\Arduino\hardware\tools\avr -built-in-libraries C:\Programmi\Arduino\libraries -libraries C:\Documents and Settings\Andrea\Documenti\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10805 -build-path C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261 -warnings=none -build-cache C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_cache_457265 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Programmi\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Programmi\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Programmi\Arduino\hardware\tools\avr -verbose C:\Documents and Settings\Andrea\Documenti\Arduino\sketch_jun19b\sketch_jun19b.ino
C:\Programmi\Arduino\arduino-builder -compile -logger=machine -hardware C:\Programmi\Arduino\hardware -tools C:\Programmi\Arduino\tools-builder -tools C:\Programmi\Arduino\hardware\tools\avr -built-in-libraries C:\Programmi\Arduino\libraries -libraries C:\Documents and Settings\Andrea\Documenti\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10805 -build-path C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261 -warnings=none -build-cache C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_cache_457265 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avrdude.path=C:\Programmi\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Programmi\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Programmi\Arduino\hardware\tools\avr -verbose C:\Documents and Settings\Andrea\Documenti\Arduino\sketch_jun19b\sketch_jun19b.ino
Using board 'uno' from platform in folder: C:\Programmi\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Programmi\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\Programmi\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Programmi\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Programmi\Arduino\hardware\arduino\avr\variants\standard" "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\sketch\sketch_jun19b.ino.cpp" -o "nul"
"C:\Programmi\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Programmi\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Programmi\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Documents and Settings\Andrea\Documenti\Arduino\libraries\frequencytimer2" "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\sketch\sketch_jun19b.ino.cpp" -o "nul"
"C:\Programmi\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Programmi\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Programmi\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Documents and Settings\Andrea\Documenti\Arduino\libraries\frequencytimer2" "C:\Documents and Settings\Andrea\Documenti\Arduino\libraries\frequencytimer2\FrequencyTimer2.cpp" -o "nul"
Generating function prototypes...
"C:\Programmi\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Programmi\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Programmi\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Documents and Settings\Andrea\Documenti\Arduino\libraries\frequencytimer2" "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\sketch\sketch_jun19b.ino.cpp" -o "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\preproc\ctags_target_for_gcc_minus_e.cpp"
"C:\Programmi\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\preproc\ctags_target_for_gcc_minus_e.cpp"
Sto compilando lo sketch...
"C:\Programmi\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Programmi\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Programmi\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Documents and Settings\Andrea\Documenti\Arduino\libraries\frequencytimer2" "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\sketch\sketch_jun19b.ino.cpp" -o "C:\DOCUME~1\Andrea\IMPOST~1\Temp\arduino_build_700261\sketch\sketch_jun19b.ino.cpp.o"
C:\Documents and Settings\Andrea\Documenti\Arduino\sketch_jun19b\sketch_jun19b.ino: In function 'void loop()':

sketch_jun19b:61: error: 'TCCR2' was not declared in this scope

Serial.println(TCCR2,HEX);

^

sketch_jun19b:63: error: 'OCR2' was not declared in this scope

Serial.println(OCR2,HEX);

^

Uso la libreria frequencytimer2 nella cartella: C:\Documents and Settings\Andrea\Documenti\Arduino\libraries\frequencytimer2 (legacy)
exit status 1
'TCCR2' was not declared in this scope

Scusa ma vedo che l'errore è nel loop() ...
... ma hai modificato l'esempio della libreria ? Sicuro di aver installato QUESTA libreria e NON la versione per la Teensy ?

Stai usando ... File > Examples > FrequencyTimer2 > Test ?

Io NON ho alcun problema ...

Sketch uses 3342 bytes (10%) of program storage space. Maximum is 32256 bytes.
Global variables use 436 bytes (21%) of dynamic memory, leaving 1612 bytes for local variables. Maximum is 2048 bytes.

Guglielmo

Come diciamo qui da noi...che mona!

Scusa ma effettivamente ho caricato la libreria sbagliata, ora la compilazione funziona...

Grazie, non ci sarei arrivato :slight_smile: :slight_smile: :slight_smile: :slight_smile: :slight_smile: