Mega versus Due

Hardware geleverd door Arduino
Gebruikers-avatar
Berichten: 43
Geregistreerd: 09 Jan 2015, 15:09

Re: Mega versus Due

Berichtdoor hv0805 » 14 Jan 2015, 09:24

Nicoverduin,
de pinchangeint werkt inderdaad op andere ingangen. Heb het uitgetest op poort A1 en de pulsen worden geteld. Alleen, alles wordt nu wel dubbel geteld. Ik gebruik dit om de pulsen van de waterteller te meten. Als ik het reedcontact in de teller schuif en ik maak gebruik van de "gewone" interrupt op pin 3 (int0) dan worden er 1 puls per halve liter gemeten. Met de aansluiting op pin A1 en voor de rest niets gewijzigd in het programma (buiten de wijziging van pin3 naar pin A1) worden er nu 2 pulsen per halve liter geteld.
Op zich geen probleem, deel ik gewoon het aantal pulsen door 4 om 1 liter te bekomen. Maar ik heb geen idee waarom die nu plots dubbel telt.

Dit is de command line
PCintPort::attachInterrupt(A1, debounceInterrupt,RISING);

Daar doe ik een debounce en heb de tijd al verhoogd van 15 naar 30 ms

long debouncing_time = 30; //Debouncing Time in Milliseconds 15 default

void debounceInterrupt() {
if((long)(micros() - last_micros) >= debouncing_time * 1000) {
waterpulsInterrupt(); // in routine wordt teller met 1 verhoogd
last_micros = micros();
}


Heb jij, (of iemand anders) een idee waarom dit nu dubbel geteld wordt?

Dank u

Herman

Advertisement

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

Re: Mega versus Due

Berichtdoor nicoverduin » 14 Jan 2015, 09:31

Yep,
Het is Pin Change = bij verandering van level = das van HOOG->LAAG en LAAG->HOOG. Resultaat gewoon door 2 delen en opgelost.
Ik vraag me wel of of debounce nodig is. Mogelijk is het handiger op een 100nF condensatortje over de switch te zetten. 't is maar een idee.

Verder doe je een casting over micros(). Dat is eigenlijk niet nodig. micros() geeft al een long terug.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 43
Geregistreerd: 09 Jan 2015, 15:09

Re: Mega versus Due

Berichtdoor hv0805 » 14 Jan 2015, 09:45

Dank u, inderdaad als het "pin change" is verklaart dit alles.
De debounce routine heb ik zo van het arduino forum geplukt.

Dankt voor de hulp.

Herman

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Mega versus Due

Berichtdoor shooter » 14 Jan 2015, 09:48

ja de diodes heb je nodig als je meer interupts wil afhandelen dan de interupt pinnen die je hebt.
Is een heel oude techniek, om op de Z80 meerdere IC aan te sluiten, zo gauw er iets veranderde op een 8255 dan zet je die intpin aan (laag want is open collector) en dat had weer te maken met dat je meerdfere 8255 aan elkaar kon hangen.


Je moet ervan uit gaan dat als een interupt is afgehandeld de uitgang laag is.
dus zolang je een interupt ergens hebt, dan moet je dus blijven pollen, tot de pin laag is.
paul deelen
shooter@home.nl

Vorige

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 45 gasten