start whit micro

hi I want to start with the micro, can you suggest some things I think to arduino uno starter kit It's a good idea or not thanks and bye

Reply to
Silvanononvalevoleciccioli
Loading thread data ...

The Arduino is a reasonable starting place. It has a lot of users around the world and many, many "shields" (add-on cards) for more functions.

You'll eventually want to get to working with a bare microcontroller, where you will take care of setting up things like clocks and peripheral registers -- where it's just you, the user manual, and the chip. But an Arduino is a fairly painless introduction.

Reply to
Rich Webb

Hi Silvano(?)

Am 18.03.2013 13:15, schrieb Silvanononvalevoleciccioli:

"mbed" [

formatting link
]

Would be another option...

  • No need for dedicated toolchains but standard C (or even C++) programming.
  • More than one architecture/manufacturer available with the same (eco-)system.

HTH. Salut, J"org

Reply to
Joerg Schmitz-Linneweber

On Monday, March 18, 2013 8:15:11 AM UTC-4, Silvanononvalevoleciccioli wrot e:

Arduino is a good starting point to experiment with microcontrollers and ge t something working fast. So if this is your goal, I would highly recommend it.

However, if your goal is to really learn about programming microcontrollers and how they really work inside, I think that you need a proper debugger t o see the disassebled code, to be able to examine the CPU registers, to see the content of memory, the stack, and various special registers. Arduino d oes NOT provide this capability, because Arduino does not give you the buil t-in J-Tag debugger.

So, here is my list of inexpensive self-contained boards with built-in J-Ta g debugger. All of them are based on ARM Cortex-M, which is the most popula r CPU architecture in microcontrollers today and for the foreseeable future . Please note that some of them are much cheaper than Arduino UNO:

  1. Stellaris Launchpad from TI
    formatting link
    _head.html) .99, Cortex-M4F
  2. LPCXpresso boards from NXP
    formatting link
    around , Cortex-M0, Cortrex-M3
  3. STM32 discovery from ST
    formatting link
2419.jsp) $14.99, Cortex-M4F
  1. Freedom FRDM-KL25Z from Freescale (freescale.com/FRDM-KL25Z), Cortex-M0+

From these boards, my favorite is the Stellaris Launchpad with the latest C ortex-M4F CPU. In fact, I'm using this board in my YouTube video course "Em bedded Systems Programming Course" available at

formatting link

Miro Samek state-machine.com

Reply to
info

[Cross-posting to news:comp.lang.c.]

Indeed, I've just discovered that they use a specific "Arduino" (e. g., [1]) language for the "sketches."

The question is: how this language is different from C (it surely looks "C-like" enough), and is there any reason to prefer it over the latter, even if only for 8-bit AVR programming?

TIA.

[1]
formatting link
[...]
--
FSF associate member #7257
Reply to
Ivan Shmakov

[Cross-posting to news:comp.infosystems.www.misc, for the Web sites mentioned express a behavior that doesn't seem all that sensible.]

Any idea why this site (or, rather,

formatting link
it redirects to) reports 403 Forbidden when there's User-Agent: Lynx... in the HTTP request header? Also strange is that
formatting link
results in 406 Not Acceptable in such a case...

(No big deal, obviously: Lynx can be configured to send whatever User-Agent: the user desires. Or to send none at all.)

Aren't Arduino boards "free hardware" (as in freedom)? Isn't anyone thus permitted to produce them, or compatible ones? (ISTR, that I've seen some at Olimex.)

--
FSF associate member #7257
Reply to
Ivan Shmakov

something working fast. So if this is your goal, I would highly recommend it.

how they really work inside, I think that you need a proper debugger to see the disassebled code, to be able to examine the CPU registers, to see the content of memory, the stack, and various special registers. Arduino does NOT provide this capability, because Arduino does not give you the built-in J-Tag debugger.

debugger. All of them are based on ARM Cortex-M, which is the most popular CPU architecture in microcontrollers today and for the foreseeable future. Please note that some of them are much cheaper than Arduino UNO:

The Cortex-M processors are my own go-to choice nowadays. Nevertheless, I would not recommend them as a typical user's first "bare" microcontroller. Better to go with something like an AVR ATmega328 in DIP form-factor. Cheap, understandable, bread-boardable. There is also a choice of free (libre) and free (for non-commercial use) compilers, e.g.,

formatting link

Reply to
Rich Webb

I looked at this recently

formatting link
Any resemblance to C is purely superficial (there don't seem to be any user functions for example). And in the implementation I saw, it just got converted to C behind the scenes (where I believe gcc was then used to compile to machine instructions).

If you know C then just use that instead, if you can figure out how to use the tools.

--
Bartc
Reply to
BartC

something working fast. So if this is your goal, I would highly recommend it.

and how they really work inside, I think that you need a proper debugger to see the disassebled code, to be able to examine the CPU registers, to see the content of memory, the stack, and various special registers. Arduino does NOT provide this capability, because Arduino does not give you the built-in J-Tag debugger.

debugger. All of them are based on ARM Cortex-M, which is the most popular CPU architecture in microcontrollers today and for the foreseeable future. Please note that some of them are much cheaper than Arduino UNO:

For moving later up to ARMs (including Cortexes), the avr-gcc might be a good chioce for a toolkit. AVRdude functions well for programming.

IIRC, there are instructions how to integrate Eclipse and AVR GCC + tools, for the IDE people.

--

Tauno Voipio
Reply to
Tauno Voipio

Yes. I'd also thought about recommending WinAVR but from a quick check of the d/l page it looks like WinAVR stalled about three years ago.

Doesn't Atmel's AVR Studio include the gcc toolchain, now? I'll admit that I haven't been keeping up with it -- still running Studio 4 for those rare occasions when I need it.

Reply to
Rich Webb

I noticed yesterday that Atmel Studio 6.1 can create a project for an Arduino Due/X board.

Reply to
Jim Stewart

Both sites seem to dislike that Lynx has "libwww" in the User-Agent string. Seems to be a crude anti-robot measure. I could duplicate the problem with

lynx -useragent='libwww'

But not with either of:

lynx -useragent='libww' lynx -useragent='ibwww'

Elijah

------ has seen this sort of thing before

Reply to
Eli the Bearded

I have in my hand a Chinese Arduino UNO. One of the local hackerspaces built them into convention badges, and sourced these to keep the cost to what they could afford. At least they told me it's Chinese. All the board artwork has been copied 100%, from what I can see. I see Active Tech up here is offering Arduino compatibles from OSEPP and Solarbotics.

Mel.

Reply to
Mel Wilson

Well, as I was able to figure out, it /is/ indeed converted to C++. The conversion is (as per Arduino.mk from [2], which is itself derived from [3]):

# the ino -> cpp -> o file $(OBJDIR)/%.cpp: %.ino $(ECHO) '#include ' > $@ $(CAT) $< >> $@

Naturally, Arduino.mk also makes sure that a number of include directories are added to the search path, and that a number of libraries are compiled and linked into the resulting binary.

[2]
formatting link
[3]
formatting link

... When last year I've ordered my Arduino Uno board (which I haven't found much use to this day), it made me wonder, who'd need that 32 KiB program memory ATmega328P MCU? Now, I've tried to build this simply-looking 540-line code [4] (with -Os and -mmcu=atmega8, = 8 KiB) and got the following from the linker:

/usr/lib/gcc/avr/4.7.0/../../../avr/bin/ld: ArduinoISP section `.text' will not fit in region `text' /usr/lib/gcc/avr/4.7.0/../../../avr/bin/ld: region `text' overflowed by 7112 bytes collect2: error: ld returned 1 exit status make: *** [ArduinoISP] Error 1

I understand that there may be certain advantage in using the libraries they supply. But somehow, I feel that I should try rewriting this particular piece of code in C, with AVR Libc as the only library used...

[4]
formatting link
--
FSF associate member #7257
Reply to
Ivan Shmakov

Ivan Shmakov w

It's C with a small injection of C++ for the libraries. Some "hidden headers" supply types like "byte" and "word" where a mainstream programmer would use "uint8_t" and "uint16_t"; and instead of writing a "main" function, the programmer writes "setup" and "loop" functions which get wrapped into the actual program as

void main (void) { setup(); for (;;) loop (); }

A real beginner would prefer it because it's wrapped into a complete Arduino IDE along with peripheral libraries and a bootloader. This provides everything needed to create a simple project with sensors, actuators and what not.

A sophisticated user is liable to find that the Arduino packaging has expropriated some resources and tied the designer's hands. That's when it's time to either replace the Arduino firmware totally with one's own, or get down and design ones own board.

I've put a sketch of my own at for an illustration of what can be done. Another Arduino-based project is at

Mel.

Reply to
Mel Wilson

No idea - I have not touched AVR Studio in years. My development runs on Ubuntu 12.04 LTS Linux with avr-gcc (and arm-eabi-gcc).

If an IDE is desired, Eclipse takes all flavors of GCC pretty easily.

--

Tauno
Reply to
Tauno Voipio

I've been using an Arduino Due (Cortex M0) for prototyping purposes:

  1. The board is cheap enough for a 1-off compared with the time of messing about with the toolchain. Untar toolchain, run ./arduino, select example code, press download button, board is programmed. It's that straightforward.
  2. The documentation often says things like 'Arduino ...' when it actually means 'AVR Arduino ...'. The documentation for Due is very patchy. I've had to do rather more googling and making random guesses than I would like.

While I /can/ go bare metal on it, it's not worth the extra time involved. I'm shipping exactly one unit of this thing, so time is the major factor here. I've done some fairly complex things (multiplexed LEDs hung off timer interrupts) in a few lines of code.

Theo

Reply to
Theo Markettos

(I've used the "plain C" AVRUSB500 firmware instead.)

First of all, ARM-based boards seem like a different league. To drive, say, an ATmega8, in PDIP, placed on a breadboard, one'd need only a resistor and a button (for the /Reset line; and even these are optional.) It isn't that simple for ARM's.

But then, doesn't every other contemporary OS include some kind of package management software? Thus making downloading and installing GCC (whether AVR, ARM, "native," or some other variety) essentially a "single-click" operation. (The same applies to the Arduino IDE, though.)

My understanding is that the Arduino project relies heavily on the community for the documentation, etc. It may thus be beneficial to edit their Wiki pages as you go.

I tend to agree, as long as the ARM variety is considered.

Well, the point of my question was: could someone please share such "complex things in a few lines of Arduino code" examples?

TIA.

--
FSF associate member #7257	np. Epilogue (Relief) -- Apocalyptica
Reply to
Ivan Shmakov

AIUI, it's more like "full" C++, adorned with certain libraries, implemented in both C++ and C.

Which, however, may be requested explicitly with:

#include

Curiously, how it makes it any simpler?

The Optiboot bootloader seems a sane choice, whether used with or without either the Arduino board or Arduino IDE (or both.)

Also, AIUI, it's possible (even if tricky) to use the Arduino libraries without either the board or IDE (or both.) There's also the "Arduino from the command line" package [2], which offers a specific Makefile, suitable for turning an Arduino sketch into a "stand-alone" source package.

[2]
formatting link

The question is: how sensible is to use Arduino libraries without the board? (Again, I see no compelling reason to forgo the Optiboot bootloader specifically.)

Well, some three years ago, in 2010, one of my students built an NTP clock, following the design by Guido Socher [3]. We've then tweaked the firmware so it'd catch NTP packets broadcast via IPv6 (instead of querying a specific NTP server via IPv4.)

[3]
formatting link

ACK, thanks for the pointer.

--
FSF associate member #7257	np. Tree of Love -- Jami Sieber
Reply to
Ivan Shmakov
[Setting Followup-To: news:comp.infosystems.www.misc.]

ACK, thanks. I've suspected something like that, but stopped short of actually trying to bisect the Lynx' User-Agent: myself. One more site to join the league is

formatting link

What's really surprising in this case, however, that is such a configuration doesn't prevent a /robot proper/ from accessing these sites! Consider, e. g.:

$ wget -O /dev/full --

formatting link
formatting link
... Resolving
formatting link
formatting link
137.118.32.70 Connecting to
formatting link
formatting link
|137.118.32.70|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Wed, 27 Mar 2013 11:22:39 GMT Server: Apache ... Resolving mbed.org (mbed.org)... 217.140.101.20 Connecting to mbed.org (mbed.org)|217.140.101.20|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Server: nginx/1.1.19 Date: Wed, 27 Mar 2013 11:22:40 GMT ... $

OTOH, I've indeed seen many sites which deny access to Wget specifically, and not for Lynx. For instance:

formatting link
formatting link
formatting link

Another strange "crawling prevention" measure is to check Referer:, which is done by, e. g.:

formatting link
formatting link

Which is easy to overcome by giving the --header='Referer: ...' option to Wget.

(Although I'm unsure as to was it the intended behavior for download-central.ws, or just some kind of misconfiguration.)

FWIW, $ wget -U libwww gives the same result.

PS. I think I may want to create a list of such "doing silly things" Web sites...

--
FSF associate member #7257
Reply to
Ivan Shmakov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.