Buongiorno a tutti,
Utilizzo, come microcontrollore, un STM32F103RB, e questo è il suo Reference Manual:https://www.st.com/content/ccc/resource/technical/document/reference_manual/59/b9/ba/7f/11/af/43/d5/CD00171190.pdf/files/CD00171190.pdf/jcr:content/translations/en.CD00171190.pdf.
Lo scopo del mio progetto è di campionare un'onda quadra in ingresso, e di memorizzare in un frammento di memria SRAM, la durata di ogni singolo fronte d'onda preso separatamente, che compone quest'onda.
Allego a questo post un'immagine di come è composta la quadra entrante nel controller stesso.
Per campionare la durata di ogni singolo fronte, utilizzo il modulo "Input capture", associato al Timer quattro. Il timer è cloccato a 32 MHz, ma ho impostato un filtro d'ingresso che divide l'intervallo di campionatura per dare modo di stabilizzare la lettura, quindi per quello che riguarda i tempi di campionatura sono abbondantemente entro le specifiche del Timer integrato nel controller.
Il mio problema è questo: per come è realizzato il timer, io devo selezionare manualmente, di volta in volta la pendenza del fronte entrante dell'nda quadra nel pin del timer, attraverso il bit CC1P, del registro TIMx_CCER, come scritto a pagina 417 del Reference Manual che ho linkato proprio qui sopra.
La domanda è: esiste un modo di impostare il riconoscimento automatico del fronte d'onda del timer, in modo da non dover impostare manualmente ogni volta il fronte opposto, per poter campionare tutti i fronti?
L'alternativa altrimenti sarebbe di ripetere due volte la stessa onda composta e campionare una volta tutti i fronti alti, una seconda volta, tutti quelli bassi, e poi combinare le letture, ma non mi sembra affatto una buona idea.
Qualcuno ha qualche idea migliore?
Grazie.
Saluti.
STM32 Timer input capture, automatic slope detect?
Moderatore:
Paolino
6 messaggi
• Pagina 1 di 1
0
voti
se ho capito bene tu vuoi riprodurre una serquenza del genere
Segnale alto per xtempo
Segnale basso per ytempo
e così via, giusto ?
Se è così prendi due dei 4 capture del timer li abiliti il primo su fronte salita il secondo su fronte discesca
Ad ogni interrupt metti in ram il valore del capture
A quanto arriva la frequenza della tua onda quadra?
Se puoi cambiare quarda TIM9-TIm12 puoi avere il capture su entrambi ifronti se non sbaglio (letto in velocità)
Segnale alto per xtempo
Segnale basso per ytempo
e così via, giusto ?
Se è così prendi due dei 4 capture del timer li abiliti il primo su fronte salita il secondo su fronte discesca
Ad ogni interrupt metti in ram il valore del capture
A quanto arriva la frequenza della tua onda quadra?
Se puoi cambiare quarda TIM9-TIm12 puoi avere il capture su entrambi ifronti se non sbaglio (letto in velocità)
-

luxinterior
4.311 3 4 9 - Master EY

- Messaggi: 2690
- Iscritto il: 6 gen 2016, 17:48
0
voti
EcoTan ha scritto:Ti va di abilitare l'interrupt e nella ISR alternare (toggle) il bit ad ogni intervento?
Non capisco in quale modo l'interrupt risolverebbe il problema. Sempre manualmente va cambiata la polarità.
Giusto?
luxinterior ha scritto:se ho capito bene tu vuoi riprodurre una serquenza del genere
Segnale alto per xtempo
Segnale basso per ytempo
e così via, giusto ?
Non devo riprodurla, ma una volta campionati tutti i fronti che compongono l'onda, li memorizzo nella SRAM del controller e, da qui, con tutta la calma li invio al PC con la USART per classificarle come voglio.
luxinterior ha scritto:Se è così prendi due dei 4 capture del timer li abiliti il primo su fronte salita il secondo su fronte discesca
Ad ogni interrupt metti in ram il valore del capture
Non male come idea, ora vedo di studiare se si può fare.
luxinterior ha scritto:A quanto arriva la frequenza della tua onda quadra?
E' l'onda creata da telecomando di una lmapadina RGB, quindi nulla di problematico, ma al momento non te lo saprei dire cn certezza.
luxinterior ha scritto:Se puoi cambiare quarda TIM9-TIm12 puoi avere il capture su entrambi ifronti se non sbaglio (letto in velocità)
Ne sei certo? Io anche l'ho letto sommariamente, e mi sembra che parli di generica "transiction".
La sequenza descritta a pagina 436, è ben specificato che funziona solo quando l'onda è positiva "T1 input rises".
Ma sarei felice di sbagliarmi.
Grazie per il contributo comunque
-

harpefalcata
326 1 3 6 - Stabilizzato

- Messaggi: 422
- Iscritto il: 28 lug 2015, 21:03
0
voti
Di solito, come ti è stato proposto, si cambia fronte nella routine di interrupt.
-

marioursino
5.687 3 9 13 - G.Master EY

- Messaggi: 1598
- Iscritto il: 5 dic 2009, 4:32
0
voti
Non è chiarissimo pagina 455
Note: 11: noninverted/both edges
Circuit is sensitive to both TIxFP1 rising and falling edges (capture, trigger in reset,
external clock or trigger mode), TIxFP1 is not inverted (trigger in gated mode). This
configuration must not be used for encoder mode
Note: 11: noninverted/both edges
Circuit is sensitive to both TIxFP1 rising and falling edges (capture, trigger in reset,
external clock or trigger mode), TIxFP1 is not inverted (trigger in gated mode). This
configuration must not be used for encoder mode
-

luxinterior
4.311 3 4 9 - Master EY

- Messaggi: 2690
- Iscritto il: 6 gen 2016, 17:48
6 messaggi
• Pagina 1 di 1
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 20 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
