Re: [PIC] Learning C

David C Brown <[email protected]>
Newsgroups gmane.comp.hardware.microcontrollers.pic
Message-ID <CAFo_nNrvSj7=J-8Eohu6begXbw7wxqfTod0+iQ5TZkzAdWumgg@mail.gmail.com>
I must stress that I want to learn C as a desktop language before
converting to PIC use..
Recommendations for a good book would be appreciated
__________________________________________
David C Brown
43 Bings Road
Whaley Bridge
High Peak                           Phone: 01663 733236
Derbyshire                eMail: [email protected]
SK23 7ND          web: www.bings-knowle.co.uk/dcb
<http://www.jb.man.ac.uk/~dcb>



*Sent from my etch-a-sketch*


On Mon, 11 Nov 2024 at 00:26, Isaac Marino Bavaresco <
[email protected]> wrote:

> I rarely use other people's code, unless it is deemed to be of very high
> quality. I prefer to study the code and write my own version based on
> it. It is slow but has proven to save a lot of problems in the long run.
>
> I write the absolute majority of my code in C (C99 if possible) and try
> to keep with GCC. If a platform doesn't have a GCC port it is very
> likely that I won't adopt it. That's not the case for PICs, which I use
> for so many years that it predates the GCC wide availability.
>
> My LCD routines were written in C in the early 1990s for 8051 MCUs and I
> still use them for ARM and MIPS (PIC32). If they were written in
> assembly language I would have needed to recreate them at least five
> times (AVR, PIC, PIC18F, PIC32, ARM).
>
> I rewrote a large part of FATFS, because the code was so complicated and
> obscure that I could not understand it. I think that I found a few
> mistakes in the implementation during the process.
>
> I also wrote my own RTOS because I was not satisfied with the code of
> FreeRTOS.
>
>
> Cheers,
>
> Isaac
>
>
> Em 10/11/2024 21:36, smplx escreveu:
> > Hi Isaac,
> > The point isn't really what I could or should do, it's more to do with
> > what someone else has written and the rest of us have to use. How
> > often have you come across some code that was abandoned by the
> > original author many years ago and has been hacked by uncareing
> > individuals to fix an immediate problem. How often have you come
> > across comments that no longer reflect what the code actually does.
> >
> > And to make the NaN situation even more interesting a floating point
> > library might implement NaNs correctly (or not) where the "noddy" MCU
> > compiler doesn't. This is another reason why it's best to learn C in a
> > proven high quality dev environment like a PC. Look at the early PIC C
> > compilers - I dare you not to laugh.
> >
> > Another way to express a NaN's character is to say "it is unordered".
> >
> > Friendly Regards
> > Sergio Masci
> >
> > On Sun, 10 Nov 2024, Isaac Marino Bavaresco wrote:
> >
> >> But you could use also the function 'isnan', which is easier to
> >> understand for someone reading your code.
> >>
> >> There are also other functions like 'isinf', etc.
> >>
> >>
> >> Interestingly, a NaN is not greater, nor smaller nor equal to
> >> anything, not even itself. It is only different than everything.
> >>
> >>
> >> Cheers,
> >>
> >> Isaac
> >>
> >>
> >> Em 10/11/2024 20:09, smplx escreveu:
> >>> Hi Colin,
> >>>
> >>> You might be intested to know that to check for floating point
> >>> errors / exceptions in C you would use:
> >>>
> >>> if (x == x)...
> >>> or
> >>> if (x != x)...
> >>>
> >>> where x is a float
> >>>
> >>> e.g.
> >>>     float    x
> >>>
> >>>     x = 1.0 / 0.0;
> >>>
> >>>     if (x != x)
> >>>     {    // x is a NaN which is an error
> >>>     }
> >>>
> >>> Here clearly "x 'is the same as' x" but the test is "x 'is a NaN'".
> >>>
> >>> Friendly Regards
> >>> Sergio
> >>>
> >>> On Sun, 10 Nov 2024, CDB wrote:
> >>>
> >>>> I have always separated the difference of =  and == in C by
> >>>> referring to the latter as 'is the same as'
> >>>>
> >>>> if (X is the same as Y) then ......  if (X == Y) then
> >>>> x = y       x now contains the value of Y.
> >>>>
> >>>> Colin
> >>>>
> >>>>
> >>>> --
> >>>>
> >>>> [email protected]  11 November 2024
> >>>>
> >>>> Hosted by: www.superdomains.com.au
> >>>>
> >>>> This email is to be considered private if addressed to a named
> >>>> individual or Personnel Department, and public if addressed to a
> >>>> blog,  forum or news article.
> >>>>
> >>>>
> >>>>
> >>>> __________________________________
> >>>> Sent from eM Client | www.emclient.com <https://www.emclient.com/get>
> >>>>
> >>>>
> >>>> On 11/11/2024 08:24:15, "smplx" <[email protected]> wrote:
> >>>>
> >>>>>
> >>>>>
> >>>>> On Sun, 10 Nov 2024, Neil wrote:
> >>>>>
> >>>>>> Agree with a couple things from other comments such as C being
> >>>>>> high-level assembler and using a PC at first (you can just use
> >>>>>> gcc already on Linux).
> >>>>>>
> >>>>>> Already knowing a structured language is very helpful.
> >>>>>> But IMO you'll have to wrap your head around pointers, which can
> >>>>>> get confusing. I find this C visualizer very helpful for figuring
> >>>>>> out some algorithm... https://pythontutor.com/c.html
> >>>>>>
> >>>>>> One more note: = != ==
> >>>>>> Or in other words, the equal sign ( = ) and the double equal size
> >>>>>> ( == ) are very different things in C. The first assigns a value
> >>>>>> and the other compares values. But people new to C will
> >>>>>> invariably use a single equal for a comparison and the code is
> >>>>>> true every time, as C will compile it as valid code, do the
> >>>>>> assignment, then the comparison. You have been warned ;P
> >>>>>
> >>>>> Sorry to wade in here but:
> >>>>>
> >>>>> if (y = x)...
> >>>>>
> >>>>> assigns x to y then compares the result to 0. 0 is nomally taken to
> >>>>> mean false and "not 0" as true. So it is almost alway true except
> >>>>> in the case where x is 0.
> >>>>>
> >>>>> I'm not sure what happens if x and y are floats and x is a NaN or
> >>>>> if x and y are structures.
> >>>>>
> >>>>> if you're looking for a real headache try debugging a program that
> >>>>> contains:
> >>>>>
> >>>>> if (! x == y)...
> >>>>>
> >>>>> Trying to learn C on bare metal is like trying to learn to fly by
> >>>>> crashing a lot. It's a lot quicker and easier if you learn on a
> >>>>> simulator.
> >>>>>
> >>>>> Friendly Regards
> >>>>> Sergio Masci
> >>>>>
> >>>>> -- http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
> >>>>> View/change your membership options at
> >>>>> https://mailman.mit.edu/mailman/listinfo/piclist
> >>>> --
> >>>> http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
> >>>> View/change your membership options at
> >>>> https://mailman.mit.edu/mailman/listinfo/piclist
> >>>>
> >>
> >> --
> >> O software antivírus Avast realizou uma checagem de vírus neste e-mail.
> >> www.avast.com
> >> --
> >> http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
> >> View/change your membership options at
> >> https://mailman.mit.edu/mailman/listinfo/piclist
> >>
> --
> http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
> View/change your membership options at
> https://mailman.mit.edu/mailman/listinfo/piclist
>
-- 
http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
View/change your membership options at
https://mailman.mit.edu/mailman/listinfo/piclist
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.