Я использую MC9S08DZ60 . Мне дали принципиальную схему, согласно которой я должен запрограммировать микроконтроллер. Я использую CodeWarrior с Processor Expert, который позволяет мне инициализировать необходимые регистры, мне не нужно писать для этого код.
Требование из кода: Обнаружить импульс ШИМ на выводе 0 регистра D. В ответ включить светодиод и подать сигнал ШИМ на выводы 3,4,5,6 регистра А. Согласно даташиту я приравнял значение Значение канала записывается на ожидаемый пин на микроконтроллере. Как подать ШИМ-сигнал на требуемый PIN-код? Я попытался сделать то же самое в следующем коде.
Пожалуйста, обратитесь к данному коду:
unsigned int result;
unsigned int pwmSignal()
{
If(PTDD_PTDD0) // to check for the incoming PWM signal.
{
PTDD_PTDD2 = 1; //light up LED.
do // check Channel for 300ms.
{
//my understanding is to latch the values of the channel value registers to the
//expected pin.
result = TPM2C0VH;
result <<=8;
result = result + TPM2C0VL;
result = PTAD_PTAD4;
result = PTAD_PTAD5;
} while (TPM2C0_CH0F == 0);
}
else PTDD_PTDD2 = 0;
}
Код компилируется абсолютно нормально. но я не вижу никаких изменений. На данный момент я хочу сказать, что это моя первая попытка сделать это.
Также у меня есть еще один вопрос, как мне использовать, например, PIN 2 регистра D для двух разных операций в одном main.c ?? Пожалуйста, дайте мне знать, если я могу предоставить больше данных обо всем вышеперечисленном. Заранее спасибо!
В вашем коде отсутствует скобка между while и else и дополнительная в конце.
Вот, вот так:
unsigned int result;
unsigned int pwmSignal()
{
If(PTDD_PTDD0) // to check for the incoming PWM signal.
{
PTDD_PTDD2 = 1; //light up LED.
do // check Channel for 300ms.
{
//my understanding is to latch the values of the channel value registers to the
//expected pin.
result = TPM2C0VH;
result <<=8;
result = result + TPM2C0VL;
result = PTAD_PTAD4;
result = PTAD_PTAD5;
} while (TPM2C0_CH0F == 0)
} // here, this one is missing.
else PTDD_PTDD2 = 0;
}
// }
// ^ This one you added at the end isn't necessary.
Это очень помогает, если ваш код имеет правильный отступ. Я очень удивлен, что ваш компилятор не пожаловался на это.
Apprently, согласно техническому описанию, PWM может быть настроен только на определенные контакты MCU, т.е. Edge-aligned PWM. И в то же время только некоторые конкретные пины (согласно даташиту) могут быть настроены только на обнаружение ШИМ т.е. Input Capture.
Поскольку этот вопрос больше не вызывает интереса на форуме, я рассмотрю это как ответ.
Джо Бейкер
станри
Джон Ю
листанш