Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C] Opgaande flank in C

Pagina: 1
Acties:

  • Hugo_ijslijk
  • Registratie: Oktober 2012
  • Laatst online: 10-10 12:02
Hallo.

Voor een project gebruiken wij een PIC16F690 met een aantal sensoren. De sensoren aansluiten etc. is geen probleem, maar het ligt mij in het programmeren. Nu is het het handigst voor ons project als ik een opgaande flank (verandering van de sensor van 0 naar 1) zou kunnen registreren, en alleen de verandering. Is er een manier om dit te doen in C? Ik heb het zelf niet kunnen vinden op Google.

Alvast bedankt.

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:34

Onbekend

...

Maak gebruik van een interupt. Of langzamer: steeds een poortje pollen.

Wat heb je zelf al geprobeerd, want Google staat bijna vol met dit soort projectjes.

Speel ook Balls Connect en Repeat


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik snap niet waar jij op googled dan want ik heb bij de eerste-de-beste zoekopdracht bij de eerste hit bingo :?

* RobIII mept Onbekend :( Voorkruipert :P

[ Voor 28% gewijzigd door RobIII op 13-06-2013 00:24 . Reden: Typo ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Hugo_ijslijk
  • Registratie: Oktober 2012
  • Laatst online: 10-10 12:02
Ja, hier blijkt dus dat ik nog een beginnner ben qua programmeren (en qua googlen). Een interrupt dus. Hartstikke bedankt allebei.
Ik had zelf een while loop geprobeerd, maar dan krijg je een aantal problemen in mijn situatie. Ik ga verder kijken of ik genoeg kan vinden over de interrupt functie.

[ Voor 39% gewijzigd door Hugo_ijslijk op 12-06-2013 23:20 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23-11 13:12
Onbekend schreef op woensdag 12 juni 2013 @ 23:09:
Maak gebruik van een interupt. Of langzamer: steeds een poortje pollen.
Afhankelijk van de situatie is pollen sneller btw ...

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Matis
  • Registratie: Januari 2007
  • Laatst online: 20:57

Matis

Rubber Rocket

farlane schreef op donderdag 13 juni 2013 @ 00:26:
Afhankelijk van de situatie is pollen sneller btw ...
Als je nagenoeg al je cpu-cycles wilt verstoken aan polling wel ja. Daarbij komt nog dat dan alles synchroon loopt; Dat is vaak niet wat je wilt in uC's.

Ik stel voor om het voorbeeld van RobIII te volgen en netjes een interrupt-handler aan die pin te hangen.

If money talks then I'm a mime
If time is money then I'm out of time


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23-11 13:12
Matis schreef op donderdag 13 juni 2013 @ 08:53:
Als je nagenoeg al je cpu-cycles wilt verstoken aan polling wel ja. Daarbij komt nog dat dan alles synchroon loopt; Dat is vaak niet wat je wilt in uC's.
Ligt er aan, als je iets hebt in deze trend:
C:
1
2
3
4
5
6
7
8
9
10
11
void main()
{
    set interrupt;

    while( true );
}

void interrupt_handler()
{
   ...do stuff...
}


maakt het geen reet uit. ( Het enige dat RobIII doet is een oplossing linken trouwens, en die is in ASM )

Dat gezegd hebbende, een extern interrupt gebruiken is natuurlijk een goede oplossing.


Wat ben ik toch blij dat we bijna geen PICs meer gebruiken

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Aangezien je de hele call-riedel krijgt bij een interrupt en je bij een PIC16F maar 1 interrupt vector hebt en dus moet gaan checken waar je interrupt vandaan komt is pollen in zo'n situatie wel degelijk sneller als het het enige is wat je moet doen :P

Same here :+

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Matis schreef op donderdag 13 juni 2013 @ 08:53:
[...]

Als je nagenoeg al je cpu-cycles wilt verstoken aan polling wel ja. Daarbij komt nog dat dan alles synchroon loopt; Dat is vaak niet wat je wilt in uC's.

Ik stel voor om het voorbeeld van RobIII te volgen en netjes een interrupt-handler aan die pin te hangen.
Een interrupt kost vaak wel veel meer cycles dan pollen. Pollen is ook critical voor het maken van RT applicaties. En voor meet en regelsystemen zijn interrupts gevaarlijk.

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Megamind schreef op donderdag 13 juni 2013 @ 11:46:
[...]

En voor meet en regelsystemen zijn interrupts gevaarlijk.
Niet per definitie. Sterker nog, ik ken ook regelsystemen die puur op interrupts draaien (timers) JUIST omdat ze zo tijdkritisch zijn.

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Radiant schreef op donderdag 13 juni 2013 @ 11:47:
[...]


Niet per definitie. Sterker nog, ik ken ook regelsystemen die puur op interrupts draaien (timers) JUIST omdat ze zo tijdkritisch zijn.
En als er nu 2 interrupts tegelijk worden aangeroepen? Dan krijg je dus een onregelmatige regeling.

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Megamind schreef op donderdag 13 juni 2013 @ 11:49:
[...]

En als er nu 2 interrupts tegelijk worden aangeroepen? Dan krijg je dus een onregelmatige regeling.
Daar heb je in veel controllers interrupt priorities voor. Heb je die niet dan kan je altijd nog ervoor zorgen dat je regelinterrupt de enige is die ingeschakeld is. Loopt de rest van je programma in je "hoofdthread" en gebeurt het kritieke regelen in de interrupt op een vaste interval.
Pagina: 1