Visual Studio

I am led to those conclusions by the dearth of real information.

Aren't we all, there hasn't been a thread about the Due for weeks now, I think people are resigned to "whatever".

2K X 12 banked memory map with 4, 512 byte "banks" of ram for program area. I used those chips 10 years ago and never again.

If you really want a clean architecture go ARM.

Re the use of a real IDE (I'm talking Eclipse here but they all have similar features), there are a lot of things I like but for example the line

for (int i = 0; i < SOME_CONSTANT; i++)

I just mouse over SOME_CONSTANT to see the definition, I don't have to go looking for it in one of 30 include files. If I F3 the editor opens the appropriate file and places the cursor at the right line. Even if it's buried deep in the core libraries somewhere.

Same goes for functions, macros etc. With functions you get the first X lines of the function in a popup, so in this line

swTimerAttachCallback (led_timer, LEDon);

I put the mouse on the function name and get

/////////////////////////////////////////////////////////////////////
//
// Function name:		swTimerAttachCallback
//
// Description:			Set the callback function for a timer.
//
// Parameters:			swTimer * t, pointer to the timer
//						void (*callback_func)(swTimer *), pointer to
// 							the timer's	callback function
//
// Returned value:		Hardcoded to NOERROR at present
//
// Errors raised:		ERR_BAD_OBJECT if the t parameter pointed
//						to a corrupt structure.
//
// Example:				myFunc () {
// 							// do this when timer 1 times out
//						}
//						...
//						swTimerAttachCallback (1, myFunc);
//
// Notes:				Executes the FATAL macro if the t parameter
//						pointed to a corrupt structure.
//

Hit F2 and I can see all of the function in a popup window.

Can't remember the exact function name or parameters?, start typing and hit ^SPACE, all functions that match the characters entered so far pop up in a window, select one and you get a list of parameters and their types.

This sort of thing makes life a lot easier.

Now let's look at part of an Arduino core file

#if defined(TCCR0A) && defined(WGM01)
	sbi(TCCR0A, WGM01);
	sbi(TCCR0A, WGM00);
#endif  

	// set timer 0 prescale factor to 64
#if defined(__AVR_ATmega128__)
	// CPU specific: different values for the ATmega128
	sbi(TCCR0, CS02);
#elif defined(TCCR0) && defined(CS01) && defined(CS00)
	// this combination is for the standard atmega8
	sbi(TCCR0, CS01);
	sbi(TCCR0, CS00);
#elif defined(TCCR0B) && defined(CS01) && defined(CS00)
	// this combination is for the standard 168/328/1280/2560
	sbi(TCCR0B, CS01);
	sbi(TCCR0B, CS00);
#elif defined(TCCR0A) && defined(CS01) && defined(CS00)
	// this combination is for the __AVR_ATmega645__ series
	sbi(TCCR0A, CS01);
	sbi(TCCR0A, CS00);
#else
	#error Timer 0 prescale factor 64 not set correctly
#endif

	// enable timer 0 overflow interrupt
#if defined(TIMSK) && defined(TOIE0)
	sbi(TIMSK, TOIE0);
#elif defined(TIMSK0) && defined(TOIE0)
	sbi(TIMSK0, TOIE0);
#else
	#error	Timer 0 overflow interrupt not set correctly
#endif

Quickly, tell me which of the above code is actually compiled. You have no idea without hunting for a dozen #defines using grep or whatever. In a real IDE the code that is def'd out is also greyed out. It's a no-brainer.

I know people do large projects in the Arduino IDE, what I don't know is why.


Rob