RS08 Reset, Interrupt, and ICS behaviour

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RS08 Reset, Interrupt, and ICS behaviour

2,732 Views
jbotte
Contributor I
I have four questions that don't seem to be answered in the data sheets or any of the application sheets I have found:

1. When I set the SOPT_RSTPE to 1 (enable), if the RESET* pin is low, will the chip go into RESET mode until the pin comes high again? This is the behaviour I would expect, and am hoping for.

2. If an interrupt is pending when a WAIT command is executed, will the WAIT immediately exit? Again, this is the behaviour I'd expect, and am hoping for.

3. If I set the trim registers immediately after coming out of POR or any other RESET, do I have to wait for the full 1ms before I can set BDIV to 0 (divide bus clock by one) or is it safe to set it right after I've set the trim? The code example in the MTIM app note (in RS08QRUG) seems to imply that it's okay, but there's a note in the data sheet that states that "The BDIV is reset to a divide by 2 to prevent the bus frequency from exceeding the maximum. The user should trim the device to an allowable frequency before changing BDIV to a divide by 1 operation." The timing in the back also implies that it is possible for an untrimmed clock to exceed the 10MHz internal bus speed maximum (21.33MHz/2), and the data sheet further states that "When changing from FBILP to either FEI or FBI, or anytime the trim value is written, the user should wait the FLL acquisition time, t_acquire, before FLL will be guaranteed to be at desired frequency."

4. Do the parts ship from Freescale with the correct trim values for that specific chip in memory locations $3FFA and $3FFB?
Labels (1)
0 Kudos
4 Replies

454 Views
RockyRoad
Contributor III

1. Yes, you'll immediately go into reset and stay there until you take the pin high. (The pin control only gets changed by power-on reset.)

2. Yes, WAIT will immediately exit if there is an interrupt pending.

3. You should wait the t_acquire time after setting the trim before changing BDIV. The reason is that if you change immediately, you could still be at an out of spec.

4. I have to ask the product engineer. I'll update this when I get an answer.

- Rocky

0 Kudos

454 Views
RockyRoad
Contributor III

I received confirmation from the PE that the production parts do have the trim programmed in flash. (I had looked at some pre-production samples that I had and the trim values weren't there -- so I had to ask the PE for the status.)

- Rocky

0 Kudos

454 Views
jbotte
Contributor I
I received additional information and I'm reposting it here in case anyone else is asking the same questions:

re: 2) Although I realized this, it bears reinforcement: "Note as no vectors are fetched, the interrupt sources must be probed to find which module wants to interrupt."

re: 4) "At the last production test, the tuned value is written into the Flash EPROM bytes $3ffa. Your program should take this value and write it into the ICSTRM register. For additional trimming, the value at $3ffb contains an extra trim bit. It should be copied into FTRIM in the ICSSC register. Yes, the values are to set the oscillator to 31.25 KHz @ 25 C. See Table A-7 in MC9RS08KA2."

And I had a further question that was answered: the CPU clock is ICSOUT/2. Figure 1-2. System Clock Distribution Diagram in MC9RS09KA2 shows ICSOUT routed directly to the CPU. It states that "The bus clock frequency is half of the ICS output frequency and is used by all of the internal modules", but nowhere does it explicitly state that the CPU is also run at the same frequency as the bus. I had assumed that was the case; however, the diagram was potentially misleading.
0 Kudos

454 Views
nataraja
Contributor I

Dear all,

 

I have a kind of application using MC9RS08KA2 where in i have a requirement of generating a pulse of 200n.secs. Could any one of you suggest if this is possible by any chance with safe operation of chip.

 

I am right now using the following code with default clock(9.9Mhz) setting and could achive only         230 n.secs

 

 
PTAD_PTAD1 = 0x0;   // pulse o/p pin low
    asm
    {
        LDA PTAD_PTAD1; // 0--> RegA
    }
        for(;:smileywink:
        {

            PTAD_PTAD1 = 1;     // High state at pulse output pin
       
            asm
            {
                STA PTAD_PTAD1; //  ( RegA )--> port-A reg pulse o/p pin
            }


        }            

 

Thanks in adavance,

Nataraja

 

0 Kudos