The System Services way of doing Lab. 2 Task 8 What was Lab. 2 Activate EBIU, Flash memory, Flash LED, GPIO flags Connect light sensor to PF11 Each time an interrupt occurs on PF11, record the CYCLES counter. Every second time an interrupt occurs, calculate the frequency of the light sensor voltage, and calculate light level Display the light level on the LED lights 2/14/2015 2 / 28 2/14/2015 3 / 28 All true, the third time you try using it However, that’s what you do in an industrial environment 2/14/2015 4 / 28 All the non-hardware stuff from Lab. 1, 2 and 3 stays the same VDK All the hardware stuff from Lab. 1, 2 and 3 – “better?” 2/14/2015 5 / 28 Shopping list ????? 2/14/2015 6 / 28 Something related to Lab. 2 2/14/2015 7 / 28 2/14/2015 8 / 28 Sounds like Lab. 2 2/14/2015 9 / 28 2/14/2015 10 / 28 Where to start? Make sure we understand the following Lab. 1 – Setting up the EBIU Lab. 1 – Activating the LED Lab. 1 – Activating the GPIO switches Lab. 2 – software interrupts on GPIO Lab. 2 – hardware interrupts on GPIO Lab. 2 – ISR for measuring light sensor output Assignment 3 – Activating CYCLES 2/14/2015 11 / 28 Next step – look for an example This VDSP directory looks promising for GPIO and LED control 2/14/2015 12 / 28 File LEDButtonCallback.c This is a .c file What happens if want to use an .cpp and asm compatible to C++? WAIL 2/14/2015 13 / 28 Callback function What is a “client handle”? What’s a “u32Event”? What’s a “void *pArg”? Why is function “static”? The rest we can guess 2/14/2015 This is NOT an ISR – this is a function called from the ISR activated on PF interrupts 14 / 28 We can guess functionality Whats “ezErrorCheck( )? Same as Lab. 1 InitGPIOFlags( ) but 1 button at a time 2/14/2015 15 / 28 We can guess functionality Guess – interrupts on PF8 and PF9 Guess – ADI_FLAG_TRIGGER_BOTH_EDGES Guess – ADI_FLAG_POLARITY????? Look in service.h files 2/14/2015 16 / 28 More complicated than InitLEDPort( ) Uses “memory variable to remember “LED stat Improved WriteLEDASM( ) ? 2/14/2015 17 / 28 Improved WriteLEDASM( ) This is ReadGPIO( ) & SW3Pressed == true 2/14/2015 Terminate services needed 18 / 28 fopen( ) Still a lot more to understand Many questions still unanswered In principle we could fix this code to handle Lab. 2 and 3 since we know what Lab. 2 and 3 are supposed to do We could re-use most of the code Switch 4 for light sensor Switch 3 and 2 for thermal sensors Switch 1 for “stop” Cut and paste that code 2/14/2015 19 / 28 Call back function Using this “*pArg” thing I could fix it so If button 4 interrupt then read CYCLES and store in light sensor array If button 3 interrupt store CYCLES in temp 1 array If button 2 interrupt store CYCLES in temp 2 array Once 4 values stored in array, leave “message” for main( ) to do necessary calculation 2/14/2015 20 / 28 Main( ) Do all the same init manager stuff Make all three buttons call Callback While loop If light sensor values ready, calculate light level and display If temp1 values ready, calculate temperature and print If temp2 values ready, calculate emperature and print 2/14/2015 21 / 28 Quote from Arthur C Clarke The technology of any sufficiently advanced civilization is indistinguishable from magic. It may be magic, but based on how I got Labs 1, 2 and 3, I reckon I could hack main( ) to get something to happen. How I would test it, debug it or customize it – I have not got a clue – meaning I could not extend the ideas to use SDMA or SPI service 2/14/2015 22 / 28 I recognize this stuff 2/14/2015 23 / 28 I can guess about this stuff 2/14/2015 24 / 28 Next Stage Not entirely sure what is happening But I believe that if I do good code review, frequently check my syntax, and am lucky, I could do Lab. 1, Lab. 2 and Lab 3 tasks using Services Debugging things – especially if services are not written as expected, or I have misunderstood something – may be problematic My code follows 2/14/2015 25 / 28 4 ISR equivalents here 2/14/2015 26 / 28 We know enough to “fake” calling CPP ASM code from C code without rewriting the code 2/14/2015 27 / 28 2/14/2015 28 / 28 Don’t know what we did But that’s Lab. 1, 2 and 3 2/14/2015 29 / 28