Всем Привет.
Проблема решилась.
Дeло оказалось в PLL. И очень странная ситуация: Сначала использовал обвеску из 1.5 кОм, 1 нФ, 10 нФ с настройками PLL: делитель 5, умножитель 25, PLL_counter 28 (845 мкС). Это не работало. Скачал программу калькулятор PLL. И оказалось совсем другое, что резистор нужен не 1.5 кОм, а 1 кОм, а для конденсаторов 1 нФ и 10 нФ, нужно выставить делитель не 25, а 23. Заработало, но с глюками. Выставил PLL_counter 33 (1000 uS) - глюки пропали.
Почему такая разница??? В чем кроется подвох?
Программирую через SAM-BA. Почему-то, если не отключусь от PA16 (ножка для SAM-BA), то может не запуститься ARM, а может и заработать моя прошивка. В чем может быть причина?
Да и почему-то не обрабатывает одновременное нажатие 2-х кнопок и даже не инициализируется процессор. Но это лишь в том случае, если этот код используется (не закомментирован). А когда я его комментирую, то проблем нет и я их использую по отдельности. процессор инициализируется.
Код:
CODE
#define button3 ((m_pPio->PIO_PDSR)&(BIT27|BIT28)) // 27, 28 - ноги
void delay (volatile unsigned long int a) { while (--a!=0); }
int main (void) {
...
while (1) {
...
if (!button3) {
delay(10000)
if (!button3!) {
setLED1;
delay(1000000);
clearLED1;
setLED2;
delay(1000000);
clearLED2;
while (!button3);
}
};
}
}
Данным способом я уже давно пользуюсь, но только на 8 битках и он работает на УРА. В чем может быть проблема?
Заранее спасибо
Забыл указать, что среда программирования IAR ARM 6.30
Сообщение отредактировал IgorKossak - Oct 15 2013, 13:07
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!