Serial vs. ICSP?

Ok, all this talk about the RBBB has got me confused. I know you program the RBBB with a USB-Serial (or is it USB-TTL) cable (or using the Duemilanove w/ chip removed, which is essentially the same because the FTDI chip is a USB-Serial chip). I also know that the Duemilanove has an ICSP header on is, which stands of "In Circuit Serial Programming". My question is: Is ICSP and the USB-Serial cable you'd use to program a RBBB the same thing? They both have 6 pins (though arranged differently), but I can't seem to find the pinout for the Duemilanove's ICSP header.

If anyone could enlighten me, that'd be great ;D!

The RBBB USB serial cable interface bears no relation to the ICSP on the Duemilanove. They both have 5V and gnd connections but that is the end of it.

Go here and take a look at the Duemilanove schematic, it has the ICSP connections.

Can you explain exactly what the difference is? I'm looking at the schematic, and I can see that it's different, but I thought the ICSP and Serial headers did the same thing ;D!

No, the RBBB usb interface is for programming a bootloaded AVR with a sketch. In use it looks exactly like a Duemilanove hooked up to the USB interface to the IDE. The ICSP interface is what you hook a seperate programmer to to program the AVR directly. You'd use the ICSP for example to burn a bootloader onto a blank AVR chip, something you can't do through the standard USB interface.

OK I understand now. Thanks for clearing that up :D!

But the 6 pin USB-TTL cable is a way of Serial Programming, and the 6 pin ICSP is a "In Circuit Serial Programming"......so how do they differ, excluding pin configuration? :-/

You've followed some of my DIY arduino projects, I put the same interface as the RBBB on them, so I can put sketches onto them without removing the chip and putting it in a Duemilanove. I don't bother with the ICSP because burning a bootloader isn't something you need to do everyday.

But the 6 pin USB-TTL cable is a way of Serial Programming, and the 6 pin ICSP is a "In Circuit Serial Programming"......so how do they differ, excluding pin configuration? Undecided

The ICSP is the raw proramming interface which needs an external programmer which is how a raw AVR chip is programmed. The USB programming interface is what sets the arduino apart from a raw AVR. It provides a simple way for programming the AVR through a USB / serial interface and a bootloader program already programmed onto the ARduino chip.

Is it all a matter of where you send the data? I mean to say, if they're both a form of Serial, what's to stop you connecting a Serial cable correctly through the ICSP and burning the bootloader? :o

Is it all a matter of where you send the data? I mean to say, if they're both a form of Serial, what's to stop you connecting a Serial cable correctly through the ICSP and burning the bootloader?

Yeah, That too!

On a similar subject, I'm looking at the diagram for the RBBB, and I'm a bit confused about the pinout:

Am I to take it that the 5th pin down on the programming header is not connected? I'm just curious, as the others are labeled or obvious (G for ground, and the one with the capacitor leads to reset).

Am I to take it that the 5th pin down on the programming header is not connected?

Correct, no connection. Also be sure your signals from your serial convertor are wired to the correct pins on the RBBB, There is no 'standard' connector line up for serial convertor cables, so the one you get my require you to move the pins around.

Lefty

I'm confused...who asked that about a wall adapter? :-?

[edit]Ah I take it that you accidentally copied the wrong thing? :stuck_out_tongue:

I'm planning on using this guide to make my USB-Serial cable. I'm even using the same model, but I'll double check connections.[/edit]

What? Who's on first, no what's on first. :wink:

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1263755995

Lefty

The USB ttl pinout for the RBBB is a semi standard, its a adaption of the standard FTDI cable which will also work with the RBBB with the exception of auto reset. A near identical FTDI breakout board is sold by Sparkfun amongst others with a compatible pinout (the unused pin is different to the Modern devices board)

Is it all a matter of where you send the data? I mean to say, if they're both a form of Serial, what's to stop you connecting a Serial cable correctly through the ICSP and burning the bootloader?

This is where I get out of my depth, you'd better ask one of the Arduino developers. I've used both the RBBB and its FTDI board and burned bootloaders using a seperate programmer through the ICSP, I just accept they're different........

Is it all a matter of where you send the data? I mean to say, if they're both a form of Serial, what's to stop you connecting a Serial cable correctly through the ICSP and burning the bootloader?

The ICSP uses a different protocol then the serial data link from the Arduino IDE. The ICSP requires discrete control signals, data in, data out, clock and reset. The data is clocked into the AVR chip one bit at a time and does not involve 8 bit data characters like the serial converter that uses the bootloader to program the chip via the Arduiono IDE.

Different methods to accomplish the same task. AVRDUDE is the programming software that accomplishes the task of loading your program, but the Arduino IDE only launches AVRDUDE, telling it to use the Arduino bootloader serial data method.

Lefty

Alright. Now I think I fully get it. Thanks everyone :P.

"Serial" in the computer industry has essentially two major definitions:

  1. Compatible with the thing labeled "Serial Port" on my computer. I don't know offhand whether there is a name that defines the bit format of this without also going into other details like voltage levels and connector pinouts. The details date back to a day when such things were less "layered" in their definitions. The normal "Serial Port" is an "rs232 asynchronous serial communications port", but that's both too much and not enough to really describe it.

  2. Any communications protocol where the bits are sent one at a time on a single wire ("serially") rather than many at one time ("in parallel.")

The Arduino Bootloader uses (1). Since real "serial ports" have been disappearing from modern PCs (they were heavily abused and prone to all sorts of errors), current generation Arduinos use an on-board USB/Serial translator chip. This chip is similar in cost and complexity to the main AVR, so several "cost reduced" Arduino-like clones "factor" the USB/Serial converter into an external cable, leaving the board itself with the "bare" serial interface output by the converter chip.

(2) encompasses a whole lot of different and mutually incompatible protocols. SPI, IIC, Ethernet, SATA, HDLC, FDDI, One-wire, RS232, USB, Firewire, V.35, and many more.
They differ from the "Serial Port" in speed, how speed is determined (clocking),
The "ISP" port on the arduino is actually based on the SPI protocol. Using an ISP port is more difficult than using a pc-style serial port (and there are no external SPI-style ports on any modern computers...)