From: aleksi on
Hi There

I'm new with programming a microcontroller, so sorry for some questions.
I have a HCS08 SofTec starterkit.

I want to control the light intensity of a external LED with a PWM.
Therefor, I want to control the Duty Cycle of the PWM with the
potentiometer on my starterkit. The ATD conversion is working. But my timer
is not working and I have no idea why. To confirm that the timer is
working, I set an interrupt. When the Timer has reached the channel value,
port F on my starterkit should be increment (On port F are eight LEDs). But
as I said, it dosen't work.

Can you help me?

Here's my code:

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include <MC9S08GB60.h>

#define Input 0x00
#define Output 0xFF

int low = 0; //low-value from ADC
int high = 0; //high-value from ADC

void interrupt ISR_Timer(void)
{
PTFD++; //verification, that the flag is set
TPM1C0SC = TPM1C0SC; //clear channel 0 interrupt falg
TPM1C0SC_CH0F = 0;
}

void InitPorts(void)
{
SOPT_COPE = 0; //disable Watchdog

PTBDD = Input;
PTDDD = Output;
PTFDD = Output;
}

void InitAD (void)
{
ATD1C_ATDPU = 1; /* power on */
ATD1C_RES8 = 0; /* 10-bit Resolution */
ATD1SC_ATDCO = 1; /* continuous mode */
ATD1PE_ATDPE0 = 1; /* enable bit 1 */
ATD1SC_ATDCH = 0; /* select channel 1 */
}

void InitTimer(void)

{
//Timer 1 Control & Status Register
TPM1SC_TOIE = 0; //Timer 1 Overflow Interrupt disable
TPM1SC_CPWMS = 1; //Center aligned mode
TPM1SC_CLKSA = 1; //Internal Clock source
TPM1SC_CLKSB = 0;
TPM1SC_PS0 = 1; //Prescaler = 128
TPM1SC_PS1 = 1; //Prescaler = 128
TPM1SC_PS2 = 1; //Prescaler = 128

//Timer 1 Modulo Register
TPM1MODH = 0xF4;
TPM1MODL = 0x24;

//Timer 1 Channel 0 Control Register
TPM1C0SC_CH0IE = 1; //Channel 0 Overflow Interrupt enable
TPM1C0SC_MS0B = 1; //PWM mode
TPM1C0SC_ELS0A = 1; //Edge aligned mode
}


void main (void)
{
InitPorts();
InitAD();
InitTimer();

for (;;)
{
if(ATD1SC_CCF == 1)
{
TPM1C0VL = ATD1RL;
TPM1C0VH = ATD1RH;
high = ATD1RH;
low = ATD1RL;
}
}
}


Allocation in *.prm file:

VECTOR 8 ISR_Timer





---------------------------------------
Posted through http://www.EmbeddedRelated.com