ethernet and timer library samen

Geef hier suggesties voor extra onderwerpen of andere dingen die je graag gewijzigd zou willen zien
Berichten: 13
Geregistreerd: 08 Apr 2017, 18:49

Re: ethernet and timer library samen

Berichtdoor sebastiaan_maes » 23 Jul 2017, 19:12

Het ledje gaat nog steeds niet, of en toe zie ik heel lichtjes iets oplichten. Maar volledig branden of zien wanneer de 3 seconden om zijn adhv het ledje kan ik niet

Advertisement

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

Re: ethernet and timer library samen

Berichtdoor nicoverduin » 23 Jul 2017, 20:01

Die timer wordt toch elke keer opniuw gezet in de loop? Die verloopt nooit
Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 13
Geregistreerd: 08 Apr 2017, 18:49

Re: ethernet and timer library samen

Berichtdoor sebastiaan_maes » 24 Jul 2017, 20:26

het rare is dan dat wanneer ik de code zonder de ethernet library upload de code perfect werkt, hier staat de timer ook in de loop

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

Re: ethernet and timer library samen

Berichtdoor nicoverduin » 24 Jul 2017, 21:04

Gewoon millis gebruiken.... weet je tenminste wat er gebeurt
Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 1452
Geregistreerd: 06 Aug 2016, 01:03

Re: ethernet and timer library samen

Berichtdoor Koepel » 24 Jul 2017, 23:13

Nico heeft gelijk. Ik heb eens naar RBD_Timer.cpp gekeken: https://github.com/alextaujenis/RBD_Timer
Het is me niet helemaal duidelijk, maar ik zie er geen fouten in. Dus de library lijkt me okay.
Je gebruikt het echter op een merkwaardige manier.
De setTimeout is bedoelt om één keer in te stellen.
Wanneer je een knop hebt ingedrukt, dan wordt een stop of restart steeds maar weer opnieuw aangeroepen. Waarschijnlijk geeft het niet, maar eigenlijk is die library daar niet voor geschreven.

Waarschijnlijk heb je een State-Change-Detection op beide knoppen nodig.
https://www.arduino.cc/en/Tutorial/StateChangeDetection

Om de Ethernet te laten werken, mag je niet de seriele poort overspoelen. Wanneer de TX buffer vol zit door heel veel Serial.println() te gebruiken, dan wordt de sketch opeens 100 of 1000 keer langzamer.
Als de timer aktief is, dan overspoel je de seriele poort met : Serial.println(verstrekenTijd);

Je doet een client.connect() iedere keer als de loop() draait. Wil dat echt tientallen keren per seconde of vaker doen ? Je kunt beter zelf bepalen hoe vaak je dat wilt doen. Dat kan met een software timer met millis().


Sorry dat ik er nu pas goed naar hebt gekeken. De ethernet sketch had een delay, en zonder die delay gaat er van alles mis. De timer sketch overspoelde de seriële poort. En die twee bij elkaar gaat dus helemaal niet goed.
De RBD_Timer library is bedoeld om het gebruik van millis() eenvoudiger te maken. Maar als je die library zo vreemd gebruikt als jij, dan wordt het juist moeilijker. Dan is een recht-toe-recht-aan gebruik van millis() beter te overzien.
Ik zie wel steeds vaker de elapsedMillis library gebruikt worden: https://www.pjrc.com/teensy/td_timing_elaspedMillis.html.
Als je die gaat gebruiken, dan moet je daar weer mee leren omgaan, en dat kan ook weer verkeerd gaan.

Vorige

Terug naar Forum suggesties

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast