Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^6: Call function no more than every 0.1 seconds

by jmlynesjr (Chaplain)
on Aug 14, 2020 at 00:24 UTC ( #11120699=note: print w/replies, xml ) Need Help??


in reply to Re^5: Call function no more than every 0.1 seconds
in thread Call function no more than every 0.1 seconds

Sorry, I know this is not ArduinoMonks, but to close the loop... From: "Arduino Projects for Amateur Radio" by Jack Purdum, W8TEE (Any book by Jack is an excellent reference)

The F() Macro

Suppose you have the following statement in your program code:

    Serial.println("Don't forget to activate all of the external sensors.");

The message contained within the double quotation marks in the statement is called a string literal. A string literal is a sequence of text characters that does not change as the program executes. These string literals are imbedded in your program's memory space and, hence, do use up Flash memory. The problem is that the compiler sees these string literals and copies them into SRAM just before the program starts executing! In other words, the same string literal is duplicated in Flash and SRAM memory! With the message above, you just wasted 53 bytes of precious SRAM. However, if you change the statement to:

    Serial.println(F("Don't forget to activate all of the external sensors.");

Note that the string literal is contained within the parentheses of the F() macro. Without going into the mechanics of how this works, the end result is that the F() macro prevents the compiler from copying the string literal to SRAM.

James

There's never enough time to do it right, but always enough time to do it over...

Replies are listed 'Best First'.
Re^7: Call function no more than every 0.1 seconds
by haukex (Bishop) on Aug 14, 2020 at 20:09 UTC
    the end result is that the F() macro prevents the compiler from copying the string literal to SRAM

    That's perfect, thank you very much! I've worked with other compilers that did this by default, but I guess this is fine too.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11120699]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2020-09-19 00:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If at first I donít succeed, I Ö










    Results (114 votes). Check out past polls.

    Notices?