Jump to content

Speakjet - A PIC ready sound chip?


herr_prof
 Share

Recommended Posts

  • Replies 345
  • Created
  • Last Reply

Top Posters In This Topic

Hello everyone,

I just completed and tested v1.3 of the breadboard construction. New plans are already online, pics are coming when I find time for that...

it has just one cable on the backside (instead of 5), all parts should fit now and the format is landscape (like DINs/DOUTs)

http://www.midibox.org/dokuwiki/doku.php?id=speakjet_breadboard_construction

http://www.audiocommander.de/downloads/midibox/mbhp_iic_speakjet_13.board.pdf

Maybe the next version supports the TTS256 too... but that's not my main priority right now.

I also discovered, that some MAX232's are NOT working!

MAX232EPE, MAX232CPE are not working correct (producing only garbage)

MAX232EEPE is okay.

I have also tried a chip labeled "MAX232N", that's working, too -- but note that the MAX232CPE has also MAX232N printed on top... and I don't get a clue out of this ... :-X ...datasheet  ::)

I'm also working on updates for the control app, got cascading modules in mind ;D

maybe also a tiny DIN control to set the envelope and scale but I think the plain midi control is not the badest idea ;)

cheers,

Michael

Link to comment
Share on other sites

Great work!!

I'm looking forward to building this, but I think i'll wait till you've ironed out all the bugs ;)

Can I just vote for the 'lnobby' approach in terms of envelope and scale. I much prefer dedicated controls, besides it doesn't preclude the use of MIDI either.

Strange about the MAX IC's though..

Link to comment
Share on other sites

  • 5 weeks later...

Hmm, I just found out about the "problem of the MAX-chips":

The described "problems" nearly drove me mad the last days and now I got the explanation finally!

Whenever I try to start the box and there's a MIDI-connection that's not active (ie no program on the PC started), the Box will usually not start. Whenever this happens, the Init() is delayed so long, the the SJ will produce garbage sounds 'cause somehow the whole Initialisation-Process will get scambled...

I didn't notice that because I deactivated the LCD for debugging purposes; but this morning I saw clearly what's been the reason for all this :D

So I think, the MAX-Chips should be fine ;)

Cheers,

Michael

btw: the HandTracker is making great progress; I think it won't take long for a nice demo-video 8)

Link to comment
Share on other sites

  • 1 month later...

Hi everyone,

I'm in big (big!) troubles: after soldering a complete new core board and SJ module, everything worked quite fine for some months. But today I had exactly the same troubles than described above.

Sometimes MIOS isn't starting up properly: the result is that I can hear about 4 sonar pings. Then I guess the SJ is using the default baud-rate, because all signals are dreadfully mixed.

However, this behavior now comes up every time I'm switching the device on. Every fifth time or so it starts up normal and everything is okay. But the next start it's happening again.

I tested out different voltages from 9 to 12V with an 800 mA power supply. No success.

I disconnected all unnecessary connections one by one without any success (besides the current equipment is 1 Core, 1 SJ-Module, 4 Distance-Sensors connected unmuxed to the Core.

Is there a way I can deal with that?

Am I the only one that discovers a delay in MIOS when Midi-Cables are connected but the connected devices are offline?

Would it make sense to use the default baud-rate?

How can I debug the Core-Module and find out why there's sometimes a delay in the startup-sequence?

There's an exhibition scheduled next week and I'm totally upset about this, because everything went so great in the past few months.  :'(

Any help or thought would be desperately appreciated!!

Best regards,

Michael

Link to comment
Share on other sites

... all signals are dreadfully mixed.
stay cool... i got the same problems 2 times. You have to switch on power, than pull the IIC line so that the SpeakJet got no power anymore... after a while plug in IIC Line again... should work normal after few times....

4 Distance-Sensors connected unmuxed to the Core.

if all not worked...disconnect them ....

upload mios again within 2 seconds after power on... again

PS: I never got this problem:

Whenever I try to start the box and there's a MIDI-connection that's not active (ie no program on the PC started), the Box will usually not start. Whenever this happens, the Init() is delayed so long, the the SJ will produce garbage sounds 'cause somehow the whole Initialisation-Process will get scambled...

my board starts every time fine...

Link to comment
Share on other sites

Hi Rio,

that's indeed interesting!

unfortunately the boards are screwed inside a box that's screwed on a podest. :-\ no chance of getting to the IIC wire easily.

I need to find out if this is a problem of the SpeakJet, the PIC16 firmware (syncing) and/or the IIC-Connection to the Core.

If I remember right, last time this happened (with my old boards) I hooked them up to the PC (via RS232) and set the baud rate with the Phrase-A-Lator Software... which brings me to the idea of setting the baud rate manually:

Does anyone know how I can set the M1 (Mode Select) Pin to momentary low? And then sending a sync-character (hex 55). Is something like this supported by the PIC16 Firmware?

Uhhh...

(thanks Rio for the cooldown. the thing is, however, that I have to get this working in the next days. If not, I'll have to reprogram it on a mac... which would really annoy me after all the work I've put into this little thing)

Edit:

4 Distance-Sensors connected unmuxed to the Core.

if all not worked...disconnect them ....

Already tried this. I think I can relatively safely assume that it's nothing to do with the AINs. :-\

really appreciate your help!

Link to comment
Share on other sites

ok tell me what is actually the behaviour:

1. all sounds will be disarray played at start up?

2. MIOS will not boot? or with delay?

to 1: i believe i got the problem, because i've to fast switch power off and on again .... switching on before speakjet speaks slow down... this problem i solved through diconnecting ... and waiting...after few minutes - all runs fine again..

to2: has you upload within 2 seconds, after power on, MIOS again?

Link to comment
Share on other sites

to 1: I can hear 1 "eh" or "ready" and afterwards 4 Sonar-Pings. this is just sometimes! and that's what puzzles me. It's totally unpredictable.

So my problem is not, that it does not start at all. My problem is, that it does not start correctly sometimes. And I fear that this "sometimes" increases over the time.

to 2: Normally this is only if I have a Midi-Cable attached and the MidiServer is not running (on the mac). But if there's no Midi-Connection, it's starting up. But maybe this is the reason for a short delay that disturbs the syncing sequence; that's why I mentioned it.

Elsewise I have no troubles with MIOS.

I really think (hope?) it has to do with syncing the SpeakJet and setting it to the BaudRate of 19200 (the SJs default baud-rate is 9600).

I need a break and some sleep... will be back tomorrow morning...

Link to comment
Share on other sites

AC if you have MSN I'll be online for live support when you wake up, otherwise we could meet up on IRC or something..... Point is, I am on-call for work, so can't be for away from the PC all of the 3 day weekend, so I'll be here with 72 hours to spare to help you out. Unless a server explodes somewhere ;)

Don't worry man, we'll get her working :)

if there's no Midi-Connection, it's starting up.

We should work from that point. If you can disconnect the midi cables, start it OK, then connect them up and it is all fine, then we need to find out why it fails to boot up with the cable connected, and why it succeeds in booting if the cable is connected and there is software running at the other end of the cable.

That sure is weird.

Link to comment
Share on other sites

Hey, stryd! That's great!

I'll take a huge cup of coffee first, then I'll take a look into the PIC16F code and take a visit in the #midibox chatroom.

As this error has occurred to Rio too, I'd say the problem is not so much the delayed startup of MIOS, but rather somewhere in the baud-setup in the PIC16 Firmware.

See you later -

Link to comment
Share on other sites

I can't duplicate this behavior...

Everything works fine at home....(except the one time, when speakjet startup playing in disarray, but maybe because i switched to fast on /off) ... but never got this again.

if you found the error, let me know how you solved it.

Best greets, Rio.

Link to comment
Share on other sites

All right, I'm carefully optimistic :)

Thanks to stryd, the chat was really helpful.

I think the pointer to the baud sync was right. Stryd suggested, that I should add a short delay between the pin going low (M1) and the 0x55 sync byte.

So, uart.asm is now looking like that:


;; --------------------------------------------------------------------------
;;  FUNCTION: UART_SpeakJetInit
;;  DESCRIPTION: initialises the SpeakJet baudrate by using the detection
;;  IN:   -
;;  OUT:  -
;;  USES: -
;; --------------------------------------------------------------------------
UART_SpeakJetInit
;; reset SpeakJet, enter baud rate configure mode
bcf SPEAKJET_RST_N_PORT, SPEAKJET_RST_N_PIN ; low active!
bsf SPEAKJET_M0_PORT, SPEAKJET_M0_PIN ; enter demomode
bcf SPEAKJET_M1_PORT, SPEAKJET_M1_PIN ; baud rate configure mode

;; initial delay
call UART_Init_Delay

;; release reset
call UART_Init_Delay
bsf SPEAKJET_RST_N_PORT, SPEAKJET_RST_N_PIN ; low active!

;; (we hear a "sonar ping" sound now!)

;; now wait until the SJ has catched up
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay

;; continue with baudrate detection: send 0x55 to SpeakJet
movlw 0x55 ; write to TXREG directly - should only be done during initialisation phase!
movwf TXREG

;; wait until byte has been sent
SWITCHBANK_0_1
UART_SpeakJetInit_TxPoll
btfss TXSTA, TRMT
goto UART_SpeakJetInit_TxPoll
SWITCHBANK_1_0

;; wait > 2 mS (just an assumption, it could also work without this delay)
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay
call UART_Init_Delay

;; go back to normal mode
bcf SPEAKJET_M0_PORT, SPEAKJET_M0_PIN ; suspend demomode
bsf SPEAKJET_M1_PORT, SPEAKJET_M1_PIN ; leave baud rate configure mode

return

;; subroutine which causes a delay of ca. 150 uS @ 20 MHz
UART_Init_Delay
clrwdt
clrf UART_DELAY_CTR
UART_Init_Delay_Loop
decfsz UART_DELAY_CTR, F
goto UART_Init_Delay_Loop
return
[/code]

Recently I had about 65% errorneous startups.

Since I updated the PIC16F88 to the firmware 1.2, I tested it about two dozen times with 0% errors. I tried it fast, slow, continouus and I even pretended a walk and presentation in the college ;D

So, wish me luck this fixed it!

I attached the new hex-file for mbhp_iic_speakjet_v1_2.

The complete sources will be part of a download package that I will release soon!

Now I hope that this really helps fixing the startup sync issues.

Thanks to everybody, I really appreciate all your immediate help. That's what I love about the midibox community.  :D

Cheers,

Michael

ps: a movie preview will follow asap!!!

puhhh, it's good to feel some optimism coming back to me :D

mbhp_iic_speakjet_v1_2.hex.zip

Link to comment
Share on other sites

hey stryd, you're being missed in the #irc ;D

anyway: I got two SJ's and two boards (and two cores, of course).

The new PIC16F fw did the trick on the old board too!

but the old one does not reveal that one sonar ping either.

But I can't remember having hear the sonar ping ever :-\

And I'm very lucky that I don't hear it anymore!!! ;D

cheers,

Michael

Link to comment
Share on other sites

:D I love when stuff works.

You gave me the big hint when you said you heard 4 pings... That sounded real fishy. Thanks to Moebius for keeping #midibox warm for us, a live chat's really the best thing for troubleshooting.

For everyone's future reference, it seems that the SpeakJet is not as fast as the PIC16 that drives it, so we need to insert a delay by using a number of

	call	UART_Init_Delay

before sending the signal to the SpeakJet to set the baud rate. I thought I should mention this in case the slow response is a problem that comes up again in future.

Link to comment
Share on other sites

hey, still looking good. switched the box on/off very often. once I heard one ping (and then my heartbeat, 'cause I thought the error would be back), but it was only one sonar ping and then everything started okay. I'm pretty sure that this was one of the moments where it would start with the wrong baudrate (with the old firmware).

So my optimism grows daily that this strange thing has been fixed.

And I can now compile the PIC16-fw on windows (still strange that GPUtils won't compile the project correctly under OSX, but the same tools will do fine on Win), but anyway, I'm digging into that later. It would be nice to have a firmware that  checks the SJ's buffer state and the integrity of received messages. But that's a future thought, now I'm first going to record a video of the new sensor matrix 8)

see ya,

Michael

Link to comment
Share on other sites

hey, still looking good. switched the box on/off very often. once I heard one ping (and then my heartbeat, 'cause I thought the error would be back), but it was only one sonar ping and then everything started okay.

i've no problem on start up - and sometimes i hear only 1 ping, yes... but i believe, i've got SpeakJet Firmware 1.0 on it.. I don't get such problems...

(I don't know how i can burn or upload a new firmware. Mike has done it for me for a time...)

I'm pretty sure that this was one of the moments where it would start with the wrong baudrate (with the old firmware).

So my optimism grows daily that this strange thing has been fixed.

i don't know, whether this behaviour is solved by a version update... maybe your old firmware on pic16F was damaged ?? My version runs fine til now, and i have so often switched on / off...

Link to comment
Share on other sites

i don't know, whether this behaviour is solved by a version update... maybe your old firmware on pic16F was damaged ??

no, definitely not. I have two SJ-IIC-Modules and two cores, ie two totally independent SJ-projects I never mixed up. One has a Core from Mike & SJ-Module v1.0, the second one uses a Core from SmashTV & SJ-Module v1.3. Because I had a soldering error on the first board (killed my blue backlight :'( ) - I thought this might have damaged something and began from scratch. That also explains my panic when I discovered the same startup issues on the fresh second board(s); both showed exactly the same behavior:

everything was fine for quite some time - until I plugged them off and took 'em somewhere else. Both times the Startup-Issues began then and got worser. Maybe this has also something to do with using a switch (IIRC I soldered a power-switch both times shortly before having to move the whole stuff).

I also tried with fw 1.0 (the original one, reburnt, fresh PIC16) but it did not help. Besides, fw 1.1 has only a reduced IIC-input buffer. Due to my compilation problems with ASM-based projects on the mac, I have checked the modified hex-files byte-by-byte, so I am pretty sure, that the .hex-files I uploaded were okay (besides that the burner software shows an error if the .hex-file is damaged). I also tried four different PIC16's! Very unlikely that they all were somehow "damaged" :)

Now on both my modules the error has vanished (until now, fingers crossed).

I expect that you will sooner or later stumble over this behavior, too. If this is the case, I can burn the new fw for you. But this should not be necessary until the problem shows up.

An MBHP-Burner and a PIC18->PIC16 Adapter is used. Flashing just takes a second and is pretty straightforward :)

Best regards,

Michael

Link to comment
Share on other sites

good to know ;D Where did i found the new firmware to download? But actually i don't know which version Mike has burnt into my PIC16F88... how old is the new?

PS: I've updated k2mod about 1 CC more...but this was necessary  ;) i'll send it to you tomorrow... I think this was the last change...

Link to comment
Share on other sites

no prob, I will update the whole sources the soonest in two weeks anyway, so change what you like.

As I have only worked upon the speech part, I really like it that you provide new and updated stuff for the synth part :)

I posted the new fw here, a few messages above (that one with the updated uart.asm code-snippet; attached a zip file), but I'd really appreciated it, if you would keep your fw 1.0 just for some weeks to see if that issue hits you too. that would be really interesting!

(but of course it's up to you...)

I will also enclose the whole updated fw incl. sources with the next release!

Cheers,

Michael

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...