Gated Timer1, or , Timer1 enable by external pin

Arduino specifieke Software
Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Gated Timer1, or , Timer1 enable by external pin

Berichtdoor astrofrostbyte » 20 Jul 2013, 19:34

Een beetje een specifiek vraagje over de 16 bit Timer1 peripheral in de AVR.

Is het mogelijk om Timer1 te laten tellen op basis van een 'prescaled' interne clock ,
maar alleen telt als een bepaalde PIN Hoog is, als de PIN laag is wordt Timer1 niet incremented.

Wat ik niet wil is een interrupt gebruiken, dus de PIN moet direct de TIMER1 enabelen.

Eigenlijk een gated counter. ik kan geen arduino libje voor zoiets vinden.


Achtergrond:
Ik heb hier enkele Stof sensoren, die een vrij onregelmatige pulsen geven, om een resultaat te meten moet over langere tijd (30sec) bepaald worden wat de laag/hoog (duty) is.

Omdat ik al aardig wat tijdkritisch taken heb lopen in samenwerking met interrupt, zou ik deze taak graag in de achtergrond willen laten meten.

Dus op t=0 zet ik timer1 op 0.
En na 30 seconden kom ik terug en lees timer1 uit.
Als ik de prescaler goed kies, zal ik geen overflow hebben, en kan ik de duty uitrekenen.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Gated Timer1, or , Timer1 enable by external pin

Berichtdoor pjh » 20 Jul 2013, 22:05

Een antwoord heb ik (helaas) niet, maar dat maakt het 100x interessanter dan de dingen die ik wél weet.
Voor mijn eigen begripsvorming:
- is die 30 seconden kritisch of noodzakelijk om de gewenste meetresultaten te verkrijgen? Ik neem aan dat je de millis() o.i.d. gebruikt om het moment van 'kijken' te bepalen.
- ik begrijp dat je feitelijk wil weten welk deel-van-de-tijd (eg. 30 seconden) de sensor HIGH is geweest.

Als bovenstaande klopt, en de hoeveelheid stof (of sensor 'duty') Als volstrekt willekeurig kan worden beschouwd, waarom is het dan nodig een timer te laten lopen? Mogelijk naief van mij, maar kun je niet op "willekeurige" momenten kijken of de sensor high of low is, en dat tellen. Dan eindig je ook met een 'duty'. Ik bedoel: je kijkt niet dertig seconden, maar bijvoorbeeld 10.000x en telt de keren dat hij high is. Je laat dan die dertig seconden varen.

Voorbeeld: stel dat ik wil weten hoe vaak op een dag de minuten oneven zijn, dan krijg ik als ik 1x per dag op een willekeurig moment kijk, na enkele weken al een redelijk beeld. Niet precies, maar statistisch onderbouwd.

Wat ik bedoel: is er niet een alternatieve - meer statische- manier om tot de zelfde resultaten te komen?

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: Gated Timer1, or , Timer1 enable by external pin

Berichtdoor astrofrostbyte » 21 Jul 2013, 09:43

Ik vroeg het eigenlijk omdat ik vaag kan herrineren dat dit met de Microchip PIC timers wel kan .

Had stille hoop dat dit ook met de AVR kon.

Je aannames kloppen, en er zijn wel wat alternatieve meetmethodes te verzinnen, met zo'n stofsensor meet je toch niet op 1% nauwkeurig.

Sensoren zijn:
- DSM501
- Shinyei PPD42NS
Beide op ebay te vinden, Hier zijn al veel arduino voorbeelden voor te vinden.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Gated Timer1, or , Timer1 enable by external pin

Berichtdoor nicoverduin » 21 Jul 2013, 10:40

Waarom niet gewoon een counter naast de arduino. En dan de reset en lees vanuit de arduino?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Gated Timer1, or , Timer1 enable by external pin

Berichtdoor pjh » 21 Jul 2013, 10:54

Begrepen! Het gaat je echt om de methode en niet het doel. Zoals in: hoe maak je vuur met een stok? En dan als antwoord krijgen: gebruik een aansteker, is makkelijker. Lol

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: Gated Timer1, or , Timer1 enable by external pin

Berichtdoor astrofrostbyte » 21 Jul 2013, 14:29

klopt , ging meer om het idee of het kon, het lijkt zo voor de hand liggend, maar als de timer peripheral het niet ondersteund houd het snel op.

Wat ik nu simpleweg doe, is ik gebruik TONE() , en laat 30sec lang een freq. genereren.
deze tone_out_pin "gate' ik extern weer terug naar Timer1 in counter mode (count events on T1).

Ik zie dat arduino ook nog een pulseIn() functie heeft, moet ik nog ff naar kijken , maar vermoed dat die 'locking' is.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: apeqana en 48 gasten