Salve ragazzi, ho delle domande che riguardano la libreria PinChangeInterrupt.
Per cominciare, funzionano su ATMega328?
Cosa cambia fra PinChangeInterrupt e PinChangeInterruptSimple?
E poi ho un piccolo problemino, quando vado a fare l'upload dello sketch che include questa libreria mi dice:
In file included from Led_a_scorrimento_con_telecomando_IR.cpp:1:
D:\Programmazioone\Arduino\libraries\PinChangeInterrupt/PinChangeInterrupt.h:29:32: error: core_build_options.h: No such file or directory
Ho visto nel post "giocando con l'attiny85" qualcuno che aveva lo stesso problema ma non sono riuscito a capire come ha risolto...
Note: PinChangeInt only officially supports arduino's based on the atmega 168 and 328. Using this Lib on the mega is untested and unsupported. If you would like to add mega support please let us know at the google code group.
Per il errore: la libreria non si trova nel posto giusto.Il posto giusto é la cartella //arduino0022/libraries. I file della libreria devono trovarsi in una cartella col nome della libreria.
Eh, sì.
PinChangeInterrupt è un modulo per i core Tiny e funziona sui micro TinyXX.
Per gli Atmegaxx8 devi usare PinChangeInt.
@Uwe:
l'errore che ha lui deriva dal fatto che sta usando una libreria per il core Tiny su un Atmega328. Difatti gli dà errore di assenza del file core_build_options, che è un file proprio del core Tiny.
leo72:
@Uwe:
l'errore che ha lui deriva dal fatto che sta usando una libreria per il core Tiny su un Atmega328. Difatti gli dà errore di assenza del file core_build_options, che è un file proprio del core Tiny.
Nonò, io ho impostato come board "ATtiny85 (/w Arduino as ISP)"
Dai registri, come si fa ad esempio per impostare i timer:
PCICR |= (1<<PCIE2); vuole il PinChangeInterrupt con l’INT2, che controlla i pin dal 16 al 23
PCMSK2 |= (1<<PCINT19); sceglie il pin: PCINT19 è sul pin D3
MCUCR = (1<<ISC01); attiva l’interrupt
leo72:
Dai registri, come si fa ad esempio per impostare i timer:
PCICR |= (1<<PCIE2); vuole il PinChangeInterrupt con l’INT2, che controlla i pin dal 16 al 23
PCMSK2 |= (1<<PCINT19); sceglie il pin: PCINT19 è sul pin D3
MCUCR = (1<<ISC01); attiva l’interrupt
Grazie.
e come fa a lanciare la routine “ISR(PCINT2_vect)”, è la sigla che stabilisce l’automatismo?
e come fa a stabilire il tipo di evento (HIGH, LOW, Rising, Falling, CHANGE)?
Attivando l’interrupt la routine ISR(PCINT2_vect) la intercetta in automatico dato che ha detto di usare un cambio di stato su un pin dell’INT2.
La modalità la stabilisce ICS01, che è un cambiamento sul pin.
leo72:
Attivando l'interrupt la routine ISR(PCINT2_vect) la intercetta in automatico dato che ha detto di usare un cambio di stato su un pin dell'INT2.
La modalità la stabilisce ICS01, che è un cambiamento sul pin.
Quindi va chiamata proprio così, mentre in ICS01 CS starà per "Change State"? E per gli altri tipi di eventi chissà che codici bisogna usare? Provo a guardare sul datasheet :)
:disappointed_relieved:
Comunque l'esempio postato è facile da implementare, lo provo, poi vedo di capirci qualcosa in più; in fondo nelle mie applicazioni ho usato sempre il CHANGE finora. Ma questi sono i registri del 328 o funzionano anche con i tinetty, secondo te? Sai, un tocco di professionalità ai miei nanetti non guasterebbe anche se devo riaprire i cassonetti :cold_sweat: :cold_sweat:
Sicuramente funziona anche con i Tiny. Non so se bisogna adattare i registri, non ho il datasheet sottomano.
Provato al volo su un Arduino e funziona (ho usato una clip fermacarta come interruttore... non ho altro, qui): il led 13 cambia di stato quando sente un cambio di stato sul pin.
leo72:
Sicuramente funziona anche con i Tiny. Non so se bisogna adattare i registri, non ho il datasheet sottomano.
Provato al volo su un Arduino e funziona (ho usato una clip fermacarta come interruttore... non ho altro, qui): il led 13 cambia di stato quando sente un cambio di stato sul pin.
Hai Arduino al lavoro? XD
La clip-interruttore è da raccontare ai nipotini $) $) $)
Proverò, speriamo che non ci sia da cambiare nulla, in realtà io gli INT li sto usando solo sui tiny, finora.
Me lo porto sempre dietro, d'altronde se qualcuno chiede qualcosa da provare "in situ" e non solo come codice, che figura ci farei?? :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:
No, non è così. Siccome l'altro giorno ho comprato il nuovo portatile, stavo sistemando un po' tutto. Oggi ho sistemato l'IDE, così mi sono portato dietro l'Arduino perché volevo verificare se avevo fatto tutto correttamente (se compilava, se uppava lo sketch, se dava qualche errore la toolchain durante la compilazione degli sketch ecc...)
leo72:
Me lo porto sempre dietro, d'altronde se qualcuno chiede qualcosa da provare "in situ" e non solo come codice, che figura ci farei?? :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:
No, non è così. Siccome l'altro giorno ho comprato il nuovo portatile, stavo sistemando un po' tutto. Oggi ho sistemato l'IDE, così mi sono portato dietro l'Arduino perché volevo verificare se avevo fatto tutto correttamente (se compilava, se uppava lo sketch, se dava qualche errore la toolchain durante la compilazione degli sketch ecc...)
Ma col lavoro che fai, quando non passa nessuno, a chi dai fastidio anche se te lo porti? Il brutto sarebbe se qualcuno restasse lì ad aspettare mentre litighi con l'RTCsw ]:D