New 1Dec2020. Updated 27Jun2022 (#174). This note is in group Technology (plus My XMOS pages).
Important: see About (below). For the TIOBE index 016:[10]: «xC programming».
Downloads
lib_xcore code
None yet. See C plus lib_xcore black-boxes xC (13May2021). I still use xTIMEcomposer 14.4.1 on a reserved machine! (Jun2022)
xC code
In-note code, especially at #165 and #141 (below).
BLOG | ABOUT | DOWNLOAD | |
#219 | My Beep-BRRR notes (intermediate downloads in there. Usage of lib_mic_array ) |
9Sep2021 | here |
#218 | IEEE-COPA 2021 fringe | 18Apr2021 | code |
Extra: testing global synch | 20Apr2021 | code | |
#217 | My xC combined combinable notes | 28Mar2021 | code |
Just for some of the examples in the note, not updated | 21Feb2021 | builds | |
#214.sub | My button presses vs bounce vs EMI notes Explaining button handling SW and caveats |
See #208.starKIT | |
#209.note | My xC softblinking PWM notes Explaining about pulse width modulation, download for the exact code described there. Stopped, but see #209.alive: |
10Jul2020 | here |
#209.alive | My xC softblinking PWM notes Code with lib_pwm_softblinker . Explaining about pulse width modulation. Also barrier code, using chan chanend |
31Aug2021 ver.0.7.7 |
here |
#208.startKIT | My processor-to-analogue audio equaliser notes Also contains code for sub-note #214. Bass/treble control box |
20Apr2021 ver.1.2.01 |
here |
#208.xCORE-XA | My processor-to-analogue audio equaliser notes Bass/treble control box, but the board could not be flashed. Stopped |
9Jul2020 ver.0.1.97 |
here |
#206 | Fault injection detection My most experimental, up from earth code.. |
12May2020 ver.0.1.9 |
here |
#202 | kode24 – as in kode24.no article. Describing xC | Apr2020 | here |
#174 | My aquarium notes Controls aquarium and sends to #164 over radio. 5.1 MB zipped, unzips to 31.8 MB. No .git , but the _version.h file lists all changes |
27Jun2022 ver.1.5.37 |
here |
#165 | xC code examples | Code in note | |
#164 | My aquarium’s data radioed through the shelf Listens to #174 over radio |
27Jan2020 ver.0.8.93 |
here |
#141 | xC is C plus x | Code in note |
About
These projects have been built with XMOS xTIMEcomposer 14.4.1 with a downgraded Java runtime, running on macOS High Sierra (10.13.6: June2017 to June2018 but still being updated) and XMOS boards xflash
‘ed from Terminal only. (But try not to step up, yet (here)).
These xC sources contain all versions, visible in the local GitHub directory .git
(visible in xTIMEcomposer). I commit quite often. However, some downloads don’t contain< code>.git for size reasons.
These downloads also contain sources of all the libraries used, simply because finding them may not be as easy as in the Arduino or Python worlds, and the actual version I use in a particular project, may not be easily available elsewhere. They would mostly be XMOS libraries.
The other libraries would be some display code from Adafruit and radio code from RadioHead (inspirational) and the RFM69 library (closest to my port). These I often have rewritten, since just importing C/C++ is more of a chore than one should think. The closer to the edges, the worse. Why translate pins as bits in IO memory bitmaps when xC has port
as a first citizen in the language? With multithreaded protection! Why do while true milliseconds(n)
as something single threaded when xC has timer
and while true select when timerafter(n)
as multithreaded – also as a first citizen? Besides, my secondary (or some times primary) purpose has been to learn xC. But you would see the odd .c
file.
All of this coding has been done after I ended my professional career. Everything is a hobby and everything is coded «for myself».
In view of this.., I assume that this is a kind of disclaimer: I try to make function names (always in programmer’s lingua franca: English) so descriptive that headings aren’t much needed. It’s the same with variable names etc.. I use comments when I think I would need them to help my own understanding, including the one – a year away. However, I have also been thinking about any other reader out there, like you. Assuming you were more intelligent then me; if I can understand it, you can. One more thing: I don’t nest #include
files..
Since I have been learning xC all the way, the code would reflect this. My goal has not been to find some library and get the job done as fast as possible, it’s rather the opposite – since I also have been doing much blogging while I developed the code.
Please help yourself! Of course, there is no guarantee, other than – there are errors that I can’t blame XMOS for. But all the projects run 24/7 and are in use. No, not #206. During all these years none of the code has crashed. Hat off for the XMOS tools xTIMEcomposer, compiler and mapper (++). They are (999‰) really good.
The photo is from an invited lecture at the local university, NTNU in April 2019. Lecture: here. My affiliation: here.