someone knows if there's a microcontroller with 4 USARTs capable of
working at 31250bps? I need extra 24 I/Os minimum. One USB port would be a
plus. Also, I would need an A/D converter, but I could use an external one.

Perhaps if you give us a little more information we can help you out more. If
you take an atmel or scenix micro you could fairly easily develop 4 software
UARTs if they are all running at the same speed. The PIC probably wouldn't run
fast enough unless you are doing very little or no processing of the data. (I
just mashed a 4800bps full-duplex software UART into a 16c54 running at 4MHz
with a small bit of data processing... It took a /lot/ of planning...)

It is unlikely that you will find an 8-bit micro with 4 hardware UARTs (as a
hobbyist), so you probably should plan on finding one with one or two UARTs and
build the rest in software. If I were in your shoes, I would build them all in
software. If you run a scenix or atmel at 24 MIPs, you'll have exactly 768
instructions (scenix, varies for atmel) per bit time to run the UARTs and your
user process (at the specified 31.25Kbps). Divide it by four (bit slicing) and
you end up with 192 instructions to read the state of four RX lines, change the
state of four TX lines, and then do some data processing. It really would not
be too difficult.

>
> Hello,
>
> someone knows if there's a microcontroller with 4 USARTs capable of
> working at 31250bps? I need extra 24 I/Os minimum. One USB port would be a
> plus. Also, I would need an A/D converter, but I could use an external one.
>
> Maybe a SCENIX can do 4 USARTs as virtual peripherals???
>
> Best regards,
>
> Brusque

Edson Brusque wrote:
.....
>> someone knows if there's a microcontroller with 4 USARTs capable of
>> working at 31250bps? I need extra 24 I/Os minimum. One USB port would be a
>> plus. Also, I would need an A/D converter, but I could use an external one.
>>
>> Maybe a SCENIX can do 4 USARTs as virtual peripherals???
>>

Scenix can easily do this, **BUT** you will have to go to 48 or
52-pin PQFP part - with tiny smt pads - to get 24 additional I/O lines.
No PLCC available. [or possibly do a multiprocessor with 18 & 28
pin parts - not all that hard to build off a single RS-232 host line].

And I suspect with the scenix, you actually could get the weird
31250 rate you indicate here - or any other weird baudrate imaginable.
But whatcha gonna talk to at that speed?
================

Adam Davis wrote:
>Perhaps if you give us a little more information we can help you out more. If
>you take an atmel or scenix micro you could fairly easily develop 4 software
>UARTs if they are all running at the same speed. The PIC probably wouldn't run
..........

I believe with the scenix VP route, the separate UARTs do *not* have
to be running at the same bps. The VPs all run off the same basic
timer interrupt, but each uses a different divider to index its
update rate.

There is a VP on the scenix site with I think 8 USART`s running not sure of
the speed but I know it is on a 50mhz SX28. If you were to get a new 100mhz
SX52/48 I am sure you could do pretty much everything in software, not sure
about the USB.

> Hello,
>
> someone knows if there's a microcontroller with 4 USARTs capable of
> working at 31250bps? I need extra 24 I/Os minimum. One USB port would be a
> plus. Also, I would need an A/D converter, but I could use an external
one.
>
> Maybe a SCENIX can do 4 USARTs as virtual peripherals???
>
> Best regards,
>
> Brusque
>

> Perhaps if you give us a little more information we can help you out more.

As I'm a musician, and my (piano) keyboard controller doesn't makes all
the tricks I would like it to do, I'm thinking in developing a MIDI
black-box that could do everything I want. Maybe I can sell hundreds of
units and make some money :)

> It is unlikely that you will find an 8-bit micro with 4 hardware UARTs (as
a
> hobbyist), so you probably should plan on finding one with one or two
UARTs and
> build the rest in software. If I were in your shoes, I would build them
all in
> software. If you run a scenix or atmel at 24 MIPs, you'll have exactly
768
> instructions (scenix, varies for atmel) per bit time to run the UARTs and
your
> user process (at the specified 31.25Kbps). Divide it by four (bit
slicing) and
> you end up with 192 instructions to read the state of four RX lines,
change the
> state of four TX lines, and then do some data processing. It really would
not
> be too difficult.

I think I'll want to put 16 keys on the thing (8 I/Os for that), an LCD
(6 I/Os for that), four MIDI Ins plus four midi Outs (8 I/Os), and I would
like it to communicate with the PC with Paralell or USB. Even Serial at
115.200bps would do the job nicely. Well, this puts 22 I/Os plus PC
communication. A 48 or 52 pin Scenix at 50MHz seens to be a very good option
(I've took a look at SX documentation and it says it can run eight 19.2Kbps
UARTs using 13% of 50MHz). The hard thing will be to make an adaptor to use
it on a proto-board.

I would also like to put 16 pots on it to control various things (like
volume, pan, reverb, modulation, etc).

I would preffer to make it with PICs, but I don't think it's possible. I
don't want to expend money on another C compiler, debugger, etc...

> Scenix can easily do this, **BUT** you will have to go to 48 or
> 52-pin PQFP part - with tiny smt pads - to get 24 additional I/O lines.
> No PLCC available. [or possibly do a multiprocessor with 18 & 28
> pin parts - not all that hard to build off a single RS-232 host line].
>
> And I suspect with the scenix, you actually could get the weird
> 31250 rate you indicate here - or any other weird baudrate imaginable.
> But whatcha gonna talk to at that speed?

I'm looking at an Atmel datasheet. It says the AT89C55 can do 33MHz, but
how much clocks does it takes to execute one instruction? Why few
manufacturers put this information on the datasheets??? 33Mhz equals to
33MIPS? Or 8,25MPIS? Or 2,75 MIPS???

Edson wrote:
.........
>> And I suspect with the scenix, you actually could get the weird
>> 31250 rate you indicate here - or any other weird baudrate imaginable.
>> But whatcha gonna talk to at that speed?
>
> 31250bps isn't weird: 1,000,000 (instructions for second) / 31250 (bps)
>= 32 (instructions for serial bit).
>

Only weird viz-a-viz the "usual" baudrates, like 19200, 38400, 57600,
etc. For local networks, anything is a go. But I'm not sure whether
a PC, if used as a host, could accommodate anything like 31250. Depends
upon the internal clocks and USART h.w.

The scenix s.w. VP could probably be massaged to accommodate both 31250
and 38400, for example, if you try hard enough. 50Mhz/38400 = 1302 and
50Mhz/31250 = 1600.

| I'm looking at an Atmel datasheet. It says the AT89C55 can do 33MHz,but
|how much clocks does it takes to execute one instruction? Why few
|manufacturers put this information on the datasheets??? 33Mhz equals to
|33MIPS? Or 8,25MPIS? Or 2,75 MIPS???

If it don't say anything more, it may be the classic 8051's: one machine
cycle is formed by twuelve clock cycles, and the instruction cycle
depends on the particular instruction.

If You want more speed enhacement look at Dallas MCS-51 compatible, hi-speed
micros.

>If it don't say anything more, it may be the classic 8051's: one machine
>cycle is formed by twuelve clock cycles, and the instruction cycle
>depends on the particular instruction.
>
>
>If You want more speed enhacement look at Dallas MCS-51 compatible, hi-speed
>micros.

Or the AVR, at one xtal clock per instruction (a few take two). 8 mhz, but
that's 96 to an 8051 apparently.

> >If it don't say anything more, it may be the classic 8051's: one machine
> >cycle is formed by twuelve clock cycles, and the instruction cycle
> >depends on the particular instruction.
> >If You want more speed enhacement look at Dallas MCS-51 compatible,
hi-speed
> >micros.
> Or the AVR, at one xtal clock per instruction (a few take two). 8 mhz, but
> that's 96 to an 8051 apparently.

Ok, but beside the Scenix, there's no 8-bit microcontroller capable of
doing more than 20 MIPS???

And what about the 16-bit micros? Can it be a good option for my
project? A US$10-20 microcontroller isn't very expensive to me if it can do
all I need on this project.

On Sun, May 28, 2000 at 06:21:24PM -0300, Edson Brusque wrote:
> > >If it don't say anything more, it may be the classic 8051's: one machine
> > >cycle is formed by twuelve clock cycles, and the instruction cycle
> > >depends on the particular instruction.
> > >If You want more speed enhacement look at Dallas MCS-51 compatible,
> hi-speed
> > >micros.
> > Or the AVR, at one xtal clock per instruction (a few take two). 8 mhz, but
> > that's 96 to an 8051 apparently.
>
> Ok, but beside the Scenix, there's no 8-bit microcontroller capable of
> doing more than 20 MIPS???
>
> And what about the 16-bit micros? Can it be a good option for my
> project? A US$10-20 microcontroller isn't very expensive to me if it can do
> all I need on this project.

A piece of advise. Stick to environments you know instead of striking out.
Especially when your striking out for more MIPS because you want them for
something that's easily done in hardware.

I'd advise sticking with PICs. Let me throw out a couple of suggestions.

1) I'm planning on using a Cirrus Logic CL-CD180 octart. Unfortunately Cirrus
Logic has obsoleted the part. In fact they've spun off their communcations line
into Basis Communications. I have a couple of samples and an incomplete
data sheet. If anyone has the pinout I'd really appreciate it. I liked the
part because of the number of serial ports and the fact that it came in a
84 pin PLCC package making it easy to use to hobby work. Basis Comm does have
an updated version the CL-CD1865. But it comes in a 100 pin PQFP. Not real
easy to prototype with.

2) My second choice was to build an intelligent UART out of a PIC. Specifically
for MIDI conversion of the stream into events with timestamps would be
very useful. Also having buffering so that the main processor can dump
events ahead of time and have the intelligent MIDI UART deliver them to the
channel at the appropriate time. Also doing MIDI channel mapping, splits and
volume control in the UART seems interesting. It's also interesting to consider
direct transmission of events from one UART to another bypassing the main
processor.

A single software channel can easily be handled by a 12C509 with a software
UART. Of course developing the UART code, the interface to the main processor,
(probably something I2Clike) would take some effort. But once it's done
any number of channels could be added to the system and the main system
wouldn't have to be uberpowered.

Maxim has an interesting discussion in their MAX3100 intro describing the
issues of software UARTs. You can find it here.

The bottom line IMHO is that the traditional approach is better than the
Winmodem approach because you end up having a highly overpowered processor
just so that you can have the MIPS to bit bang UARTS. Just remember that
8 12C509's will give you 8 MIPS just for the UARTS. Think about the
distributed processing solution.

There are some good ideas here, but you have moved the data movement problem
from SERIAL<->PIC to be PIC<->PIC. You're still going to need some hefty
horsepower to do the PIC<->PIC transfers. Remember, the main processor has
to handle all channels at once. MIDI waits for no man (nor PIC) :-)

On Sun, May 28, 2000 at 09:38:33PM -0400, Bob Ammerman wrote:
> There are some good ideas here, but you have moved the data movement problem
> from SERIAL<->PIC to be PIC<->PIC. You're still going to need some hefty
> horsepower to do the PIC<->PIC transfers. Remember, the main processor has
> to handle all channels at once. MIDI waits for no man (nor PIC) :-)

This is true to a point but you can gain a few advantages:

1) Many of the mid level PICs have hardware support for such transfers. A
16F87X could use its hardware USART or I2C module to do the transfers thus
eliminating the high powered need for software bit banging from the main
PIC. And while the auxillary PICs are stuck with the software bit banging
problem, their function is limited to a single channel. Thus you gain an
advantage because the aux processors are not trying to do everything in the
system for all channels, just limited functionality for a single channel.

2) Intelligent buffering can mitigate quite a few of the tight timing
contraints in the PIC to PIC transfers. In short the main processor can dump
events that it knows is going out to the intelligent UART before the actual
moment the event needs to be played. This happens often in a multichannel
MIDI situation because the primary usage is as a multitrack MIDI recorded
where the sequencer plays some or all of the prerecorded MIDI tracks while
the musician adds the next track to the sequence. The timing sequences of
the prerecorded tracks are known apriori and can be scheduled accordingly.

3) Compression can be utilized in the PIC to PIC transfer whereas with a
straight UART the exact data stream that's required for the end unit must
be sent to the UART. For example each event in the MIDI stream encodes a 4
bit channel number. However if an intelligent UART knows that it's only
going to output 1 channel, or possibly two because of a a keyboard split,
then the channel information isn't required at all in the PIC to PIC
transfer, potentially saving a ton of bits. Another example is that typically
in MIDI streams a NOTE OFF events is generated by sending a NOTE ON event
with a volume of 0, requiring 2 to 3 bytes in the actual MIDI data stream.
However we could easily compress a note off event into a single BIT in the
PIC to PIC stream, having the Intelligent MIDI UART (IMU) do the proper
expansion on output.

4) The potential of direct IMU to IMU communication can potentially alleviate
the latency caused on the real time streams that are being recorded. See
typically the controller generating the real time stream and the one playing
that realtime stream are not on the same IMU. For example I generate my
MIDI events using my Yamaha digital piano, but those events are played on
my Alesis Nanosynth or my old Roland MT32. So the transfer sequence is
Input IMU -> main processor -> Output IMU. This would require a low latency
main processor to turn the events around quickly. However if instead the
transfer can be Input IMU -> main processor and Output IMU, then the Output
IMU would get the event with lower latency and the main processor could
take more time recording the event because it's not obligated to turn the
event around to the IMU.

MIDI streams have structure. This structure can be exploited by an IMU
type system. But it requires something more than a dumb UART. This would be
the exact reason I'd look to a software periperal.

> From: "Dan Michaels" <spam_OUToricomTakeThisOuTLYNX.SNI.NET>
> Edson Brusque wrote:
> .....
> >> someone knows if there's a microcontroller with 4 USARTs
capable of
> >> working at 31250bps? I need extra 24 I/Os minimum. One USB port
would be a
> >> plus. Also, I would need an A/D converter, but I could use an
external one.
> >> Maybe a SCENIX can do 4 USARTs as virtual peripherals???
> Scenix can easily do this, **BUT** you will have to go to 48 or
> 52-pin PQFP part - with tiny smt pads - to get 24 additional I/O
lines.
> No PLCC available. [or possibly do a multiprocessor with 18 & 28
> pin parts - not all that hard to build off a single RS-232 host line].

> And I suspect with the scenix, you actually could get the weird
> 31250 rate you indicate here - or any other weird baudrate imaginable.
> But whatcha gonna talk to at that speed?

I'm guessing here, how about the world's second most common serial port,
MIDI?

Something else to check out is the I2C UART chips from Maxim. They have a
family of chips that has either 232, 485, or logic level serial on one side
and SPI or I2C on the other. Very cool part. I also believe they have a
couple byte buffer to avoid overloading your micro.

You should be able to find them on their site by searching for 'uart'...

>> Perhaps if you give us a little more information we can help you out more.
>
> As I'm a musician, and my (piano) keyboard controller doesn't makes all
>the tricks I would like it to do, I'm thinking in developing a MIDI
>black-box that could do everything I want. Maybe I can sell hundreds of
>units and make some money :)
>
>> It is unlikely that you will find an 8-bit micro with 4 hardware UARTs (as
>a
>> hobbyist), so you probably should plan on finding one with one or two
>UARTs and
>> build the rest in software. If I were in your shoes, I would build them
>all in
>> software. If you run a scenix or atmel at 24 MIPs, you'll have exactly
>768
>> instructions (scenix, varies for atmel) per bit time to run the UARTs and
>your
>> user process (at the specified 31.25Kbps). Divide it by four (bit
>slicing) and
>> you end up with 192 instructions to read the state of four RX lines,
>change the
>> state of four TX lines, and then do some data processing. It really would
>not
>> be too difficult.
>
> I think I'll want to put 16 keys on the thing (8 I/Os for that), an LCD
>(6 I/Os for that), four MIDI Ins plus four midi Outs (8 I/Os), and I would
>like it to communicate with the PC with Paralell or USB. Even Serial at
>115.200bps would do the job nicely. Well, this puts 22 I/Os plus PC
>communication. A 48 or 52 pin Scenix at 50MHz seens to be a very good option
>(I've took a look at SX documentation and it says it can run eight 19.2Kbps
>UARTs using 13% of 50MHz). The hard thing will be to make an adaptor to use
>it on a proto-board.
>
> I would also like to put 16 pots on it to control various things (like
>volume, pan, reverb, modulation, etc).
>
> I would preffer to make it with PICs, but I don't think it's possible. I
>don't want to expend money on another C compiler, debugger, etc...
>
> Atmel would also be a good option. What Atmel micros can do 24MIPS?
>
> Best regards,
>
> Brusque

Something else to check out is the I2C UART chips from Maxim. They have a
family of chips that has either 232, 485, or logic level serial on one side
and SPI or I2C on the other. Very cool part. I also believe they have a
couple byte buffer to avoid overloading your micro.

You should be able to find them on their site by searching for 'uart'...

>> Perhaps if you give us a little more information we can help you out more.
>
> As I'm a musician, and my (piano) keyboard controller doesn't makes all
>the tricks I would like it to do, I'm thinking in developing a MIDI
>black-box that could do everything I want. Maybe I can sell hundreds of
>units and make some money :)
>
>> It is unlikely that you will find an 8-bit micro with 4 hardware UARTs (as
>a
>> hobbyist), so you probably should plan on finding one with one or two
>UARTs and
>> build the rest in software. If I were in your shoes, I would build them
>all in
>> software. If you run a scenix or atmel at 24 MIPs, you'll have exactly
>768
>> instructions (scenix, varies for atmel) per bit time to run the UARTs and
>your
>> user process (at the specified 31.25Kbps). Divide it by four (bit
>slicing) and
>> you end up with 192 instructions to read the state of four RX lines,
>change the
>> state of four TX lines, and then do some data processing. It really would
>not
>> be too difficult.
>
> I think I'll want to put 16 keys on the thing (8 I/Os for that), an LCD
>(6 I/Os for that), four MIDI Ins plus four midi Outs (8 I/Os), and I would
>like it to communicate with the PC with Paralell or USB. Even Serial at
>115.200bps would do the job nicely. Well, this puts 22 I/Os plus PC
>communication. A 48 or 52 pin Scenix at 50MHz seens to be a very good option
>(I've took a look at SX documentation and it says it can run eight 19.2Kbps
>UARTs using 13% of 50MHz). The hard thing will be to make an adaptor to use
>it on a proto-board.
>
> I would also like to put 16 pots on it to control various things (like
>volume, pan, reverb, modulation, etc).
>
> I would preffer to make it with PICs, but I don't think it's possible. I
>don't want to expend money on another C compiler, debugger, etc...
>
> Atmel would also be a good option. What Atmel micros can do 24MIPS?
>
> Best regards,
>
> Brusque

At 02:59 PM 5/30/00 -0700, Erik Reikes wrote:
>Something else to check out is the I2C UART chips from Maxim. They have a
>family of chips that has either 232, 485, or logic level serial on one side
>and SPI or I2C on the other. Very cool part. I also believe they have a
>couple byte buffer to avoid overloading your micro.

Max 3100A with internal 232 buffers?
I'm using four of them, along with the on-chip uart, in an AVR project.
The SPI is a little tricky in that it's 16 bit words, and I can't afford to
hang around and bit-bang, but I worked out a way to do the whole mess
interrupt driven.

The hardest thing to do is to poll them and see which one interrupted you
(without having to receive data), but all you have to do is abort the
transaction, and you can have the uart hold the data while you figure the
rest out.

My four have the ints wire-or, so I have to go look at all four's status
before I know who to start pumping data from.

Why am I so busy? 7200 calculations/sec involving polar-rectangular
conversions, a little DSP, and then rect-polar again. (in addition to
parsing the stat-mux protocol that gives me four external full speed full
duplex 4800 baud ports, plus an internal virtual port, and a control
channel, with the on-chip uart talking to a PC at 115200)

I like that part too (MAX3100 family) and have used it and its cousins on
several projects. The buffer is advertised to hold 8 bytes but I have never
been able to use it sucesfully. I don't think that a normal read is clearing
the buffer. It seems to assert it's contents to me twice.

> Something else to check out is the I2C UART chips from Maxim. They have a
> family of chips that has either 232, 485, or logic level serial on one
side
> and SPI or I2C on the other. Very cool part. I also believe they have a
> couple byte buffer to avoid overloading your micro.
>
> You should be able to find them on their site by searching for 'uart'...
>
>
>
>
> At 07:25 PM 5/26/00 -0300, Edson Brusque wrote:
> >> Perhaps if you give us a little more information we can help you out
more.
> >
> > As I'm a musician, and my (piano) keyboard controller doesn't makes
all
> >the tricks I would like it to do, I'm thinking in developing a MIDI
> >black-box that could do everything I want. Maybe I can sell hundreds of
> >units and make some money :)
> >
> >> It is unlikely that you will find an 8-bit micro with 4 hardware UARTs
(as
> >a
> >> hobbyist), so you probably should plan on finding one with one or two
> >UARTs and
> >> build the rest in software. If I were in your shoes, I would build
them
> >all in
> >> software. If you run a scenix or atmel at 24 MIPs, you'll have exactly
> >768
> >> instructions (scenix, varies for atmel) per bit time to run the UARTs
and
> >your
> >> user process (at the specified 31.25Kbps). Divide it by four (bit
> >slicing) and
> >> you end up with 192 instructions to read the state of four RX lines,
> >change the
> >> state of four TX lines, and then do some data processing. It really
would
> >not
> >> be too difficult.
> >
> > I think I'll want to put 16 keys on the thing (8 I/Os for that), an
LCD
> >(6 I/Os for that), four MIDI Ins plus four midi Outs (8 I/Os), and I
would
> >like it to communicate with the PC with Paralell or USB. Even Serial at
> >115.200bps would do the job nicely. Well, this puts 22 I/Os plus PC
> >communication. A 48 or 52 pin Scenix at 50MHz seens to be a very good
option
> >(I've took a look at SX documentation and it says it can run eight
19.2Kbps
> >UARTs using 13% of 50MHz). The hard thing will be to make an adaptor to
use
> >it on a proto-board.
> >
> > I would also like to put 16 pots on it to control various things
(like
> >volume, pan, reverb, modulation, etc).
> >
> > I would preffer to make it with PICs, but I don't think it's
possible. I{Quote hidden}