So, same kernel but RT PREEMPT enabled. The only code that's changed:
sleep(.2);
printf("PWM1 %u Z1IN %u\n", !!(*gpio0_out & PWM1), !!(*gpio1_in & Z1IN));
printf("PWM2 %u Z2IN %u\n", !!(*gpio0_out & PWM2), !!(*gpio1_in & Z2IN));
printf("PWM3 %u Z3IN %u\n", !!(*gpio1_out & PWM3), !!(*gpio1_in & Z3IN));
printf("PWM4 %u Z4IN %u\n", !!(*gpio0_out & PWM4), !!(*gpio1_in & Z4IN));
printf("PWM5 %u Z5IN %u\n", !!(*gpio1_out & PWM5), !!(*gpio1_in & Z5IN));
printf("PWM6 %u Z6IN %u\n", !!(*gpio0_out & PWM6), !!(*gpio1_in & Z6IN));
printf("\n");
*gpio0_out &= ~(PWM1 + PWM2 + PWM4 + PWM6);
*gpio1_out &= ~(PWM3 + PWM5);
sleep(.2);
printf("PWM1 %u Z1IN %u\n", !!(*gpio0_out & PWM1), !!(*gpio1_in & Z1IN));
printf("PWM2 %u Z2IN %u\n", !!(*gpio0_out & PWM2), !!(*gpio1_in & Z2IN));
printf("PWM3 %u Z3IN %u\n", !!(*gpio1_out & PWM3), !!(*gpio1_in & Z3IN));
printf("PWM4 %u Z4IN %u\n", !!(*gpio0_out & PWM4), !!(*gpio1_in & Z4IN));
printf("PWM5 %u Z5IN %u\n", !!(*gpio1_out & PWM5), !!(*gpio1_in & Z5IN));
printf("PWM6 %u Z6IN %u\n", !!(*gpio0_out & PWM6), !!(*gpio1_in & Z6IN));
sleep(.2);
For those of you who do not know what !! is. Think of it as a double NOT
being used as a shorthand for a ternary conditional check. Anyway. . .
root@wgd:~/dl-i2c-test# nano tst.c
root@wgd:~/dl-i2c-test# gcc -Wall -o tst tst.c
root@wgd:~/dl-i2c-test# ./tst
PWM1 1 Z1IN 1
PWM2 1 Z2IN 0
PWM3 1 Z3IN 0
PWM4 1 Z4IN 0
PWM5 1 Z5IN 0
PWM6 1 Z6IN 0
PWM1 0 Z1IN 0
PWM2 0 Z2IN 1
PWM3 0 Z3IN 1
PWM4 0 Z4IN 1
PWM5 0 Z5IN 1
PWM6 0 Z6IN 1
root@wgd:~/dl-i2c-test# uname -r
4.4.55-ti-rt-r94
So what seems to be happening to me is this: There is a lazy check
*somewhere* in the kernel, or kernel module code for the gpio driver(s)
when changing the state of an input pin. Of course that's an assumption.
After thinking about this for a long time last night, This could be one of
many things. Possibly even more than one thing. It could possibly even be
*something* else slowing down the input pin updating. I am using a DS18B20
1-wire temperature sensor, which since 1-wire is technically power, ground,
and a GPIO data pin . . . Maybe 1-wire could potentially be interfering or
slowing down the systems GPI's ? That's a pretty "thin" guess, but I
suppose possible ?
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/54447544-6dee-4746-bff4-891e2918e960%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.