Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

dsPIC33F! Whoopie!

Status
Not open for further replies.

Oznog

Active Member
Just got samples in of the dsPIC33FJ128GP706.
Man the specs on this are AWESOME. It's faster than a dsPIC30, yet considerably lower power. It's also slated to be a fairly low price device relative to dsPIC30. On the downside, it's a 3.3v-only part so it's hard to interface with many devices. It also has no EEPROM.

The thing that I love is that it's got DMA that work with most of its modules. So you can tell the USART, ADC, DCI, etc to just store one memory location after another in RAM without interrupting the processor after every word. This is particularly useful for audio codecs which could otherwise be interrupting tens of thousands of times a sec. This will probably work well with Idle/Sleep mode to keep power way down.

Oh yes I can dig it. What CAN'T you do with this sort of power?
 
Already has a project. Microchip has libs for noise reduction on a signal, speech recognition, and playing compressed sounds. There's a lot of program space to hold data and an unbelievable number of MIPs.

I would really like to do an active noise cancellation, which should kick ass above the analog solutions. At this point I don't know enough about adaptive digital filters to do this properly, but I do have the Haykin book, might be able to work it out.
 
I just wish they made dsPIC33Fs in 8, 18, and/or 28 pin versions like the 30Fs. Biggest thing I hate is how they only have 3.3V versions and no 5V versions like the 30F because so many periphreals use 5V right now. But they doo soo much more than the 30F. I wish the 30F had DMA, or the 33F to have 5V.
 
Yeah I'm bummed at the lack of 5v DIP pkgs.
I know the 30F had nasty power consumption if you tried to max out the freq at 5v. At 3.3v it couldn't go as fast but the power per MIP is far lower.

I think 33F is some fairly new fab technology. I believe 5v or putting EEPROM on the chip wasn't possible. If you look at the spec sheet, the core doesn't even run at 3.3v, it internally generates a 2.5v rail. Actually if they've already separated core voltage from pin voltages I'm not sure why they didn't make 5v pins a possibility, but there are plenty of technical details not available to us.
 
Allright, I'm blinking an LED at 40MHz!! Try that with your pathetic PIC16F series! Stand in awe of the breathtaking speed of my pointless accomplishment!
 
Last edited:
Mike said:
Code please?

I'm writing in C so the code differences are unremarkable. The assembly is the same as 30F parts too. The peripherals are just better and it's faster at lower power.

One thing I had not seen before- it says ALL pins are 5v tolerant! I was not aware of this, sweet!
 
Thanks. I was hoping for an Assembly example and figured it was same as 30F. Assembler for these dsPICs looks quite alien to me (grin).

Congrats' on getting that puppy up-n-runnin'. I'm very envious.

Did you have to do anything special to your programmer to program that 3.3v device?

Kind regards, Mike
 
I have the Olimex ICD2. MPLAB has a setting for the 33f series. The programmer is different, for one, the normal +12v on MCLR_N to put a 30f in programming mode will fry a 33f. 33f uses I think only 3.3v on MCLR_N.

I cannot make ICD2 work with this part. I don't know why.

PGC/PGD had baffled me. There are 3 sets of PGC/PGD lines on the 706. They're not electrically connected like multiple Vss pins. How do you configure which pair you're using if you haven't started programming it yet?? Well it turns out the part autodetects which one is being clocked. Just hook up the programmer to ANY PGC/PGD pair and it works. It's pretty weird. I'm not sure how I feel about that, it seems dangerous that circuitry on PGC/PGD pairs used to other things might be interpreted as a programming request.

As it turns out the Engineering Samples revision they sent out has already shown a mind-bogglingly weird defect. I wrote TRISG=0x0000; LATG=0xffff; but all of PortG remained tristated. After hours of poking it around, I found that writing any pin of PortB as a high output will make PortG work. It has to be PortB, no other port written to 1 will have an effect. There's no other code to complicate the issue, this is only a few lines of assembly. I consider myself extremely lucky to have found what made PortG operational. I already filed it with Microchip.

"Bleeding Edge Technology"
 
Last edited:
Oz',

You've inspired me to get off my butt. I finally downloaded and installed C18 and I'll try to learn that before jumping into C30. Where to find some good sample C code to disect and learn from?

Take care. Mike
 
There's plenty of examples from Microchip.
I gotta say Microchip MCC18 is terribly slow compared to HTSoft PICC18. Like at least half the execution speed. The code size seems comparable but man MCC18 is pretty ugly.

I'm using C30 only because Microchip makes these libraries for them, and really little execution is done in C anyways. The library functions are where the number-crunching tasks are and those are written in assembly (not compiled).
 
I'll start browsing Microchip for examples. Seems more and more newcomers are showing up on the Forums with C so I know I need to become familiar with it. I don't mind it being slow for the price (free, grin).

Thanks. Mike
 
lol, ref the 1st post Oznog, I remeber getting all excited like this when the 628 came out instead of the 84 and the 508!! Internal OSC WOW!!!!! ;)

Mind you with a part number that long, it's hard not to be impressed!!

How we are spoilt now :)
 
I haven't had the chance to play with a dsPIC33F yet with my ICD2 so I'm not sure why it isn't working for you. They are supported by the ICD2 but consider this: (Ripped from the ICD2 notes in MPLAB)
9 PIC18FXXJ, PIC24F, dsPIC33F Device Programming Considerations
The Programming Specifications for PIC18FXXJ MCUs, PIC24F MCUs, and dsPIC33F DSCs indicate that when programming these devices, bulk erase commands should be issued between successive programming operations, i.e., erase, then program, then erase, then program, etc. Therefore, Microchip advises against multiple-stage programming sessions which may damage the device. For example, you should NOT do the following with these parts:

· load and program a particular hex file

· load a second hex file

· disable erase-all-before-programming

· specify an address sub-range

· program the device

Beta support devices:

dsPIC33FJ128GP206(4)
dsPIC33FJ256GP510(4)
dsPIC33FJ64GP710(4)

dsPIC33FJ128GP306(4)
dsPIC33FJ256MC510(4)
dsPIC33FJ64MC506(4)

dsPIC33FJ128GP310(4)
dsPIC33FJ64GP206(4)
dsPIC33FJ64MC508(4)

dsPIC33FJ128GP710(4)
dsPIC33FJ64GP306(4)
dsPIC33FJ64MC510(4)

dsPIC33FJ128MC506(4)
dsPIC33FJ64GP310(4)
dsPIC33FJ64MC706(4)

dsPIC33FJ128MC510(4)
dsPIC33FJ64GP706(4)
dsPIC33FJ64MC710(4)

dsPIC33FJ128MC710(4)
dsPIC33FJ64GP708(4)

PIC24HJ128GP206(4)
PIC24HJ128GP510(4)
PIC24HJ64GP506(4)

PIC24HJ128GP210(4)
PIC24HJ256GP210(4)
PIC24HJ64GP510(4)

PIC24HJ128GP306(4)
PIC24HJ64GP206(4)


PIC24HJ128GP310(4)
PIC24HJ64GP210(4)
 
The other thing I don't like about the PIC24 and dsPIC33F is their I/O pins can only sink and source 4mA compared to the 20-25mA of the 5V PIC line (including the dsPIC30F)
 
The low pin current may have an impact on the I2C abilities. I2C spec only requires 3mA which means a very short transmission line. The 18F PICs, like most I2C devices, have a much higher drive current and thus could drive far longer lines. The 33F is only barely above that rather marginal requirement. Oh well, for this system I was thinking I'd need a bus extender anyways due to the 3.3v level needing to talk to a 5v device on the other end (like 6 ft away).
 
I2C? pshh! Who needs I2C when you got CAN! But yeah, by far the worst thing I find with the 33F is that I need to level convert everything to communicate with 5V. Even worse is reducing 5V analog signals to be accepted by the 33F's 3.3V ADC, particularily when you need very very precise measurements like integrating gyroscope or accelerometers readings. It kind of really blows when you consider the changing offsets for the op-amp buffers and varying resistance of the resistive dividers, it's enough to add tens of mV of error which is ginormous when you are integrating the thing.

Why no 5V 33F?! Why? Why?! WHY?! Either that or 3V everything else which is a bit of a problem for ring gyros right now
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top