Сразу написал программку по переменному переключению двух областей светодиодов LED0...LED7 (по 4 в каждой) через некоторую паузу. Все сразу заработало.
Далее решил ускорить работу микроконтроллера (по умолчанию все такты идут с частотой OSC0=20 MHz). Тут и возникли трудности.
ПРОБЛЕМА 1
Никак не могу заставить работать PLL на частоту 100 MHz (деление на 4 с последующим умножением на 20).
Текст программы следующий (часть кода, только то, что касается PLL):
Код
volatile avr32_pm_t *pm=&AVR32_PM;
pm->PLL0.pllosc=0;
pm->PLL0.pllmul=19;
pm->PLL0.plldiv=3;
pm->PLL0.pllopt=4;
pm->PLL0.pllen=1;
pm->MCCTRL.pllsel=1;
pm->PLL0.pllosc=0;
pm->PLL0.pllmul=19;
pm->PLL0.plldiv=3;
pm->PLL0.pllopt=4;
pm->PLL0.pllen=1;
pm->MCCTRL.pllsel=1;
Микроконтроллер при запуске программы на выполнение сразу подвисает, в том числе и в режиме отладки.
После тщетных попыток добиться нормальной работы PLL, попробовал притормозить работу микроконтроллера, поделив тактовую частоту для CPU. Взамен приведенной выше части кода написал новые строки:
Код
pm->CKSEL.cpusel=2;
pm->CKSEL.cpudiv=1;
pm->CKSEL.cpudiv=1;
Единственный раз мне удалось откомпилировать и запустить на выполнение в STK1000. Вроде пауза между переключениями светодиодов увеличилась. Решил еще уменьшить частоту тактирования CPU изменив значение CKSEL.cpusel=5.
Вот тут и возникла
ПРОБЛЕМА 2
Программа компилируется успешно, однако, при попытке ее выполнения на STK1000, AVR32 Studio выдает ошибку:
Exception occurred during launch
Reason:
Connected to JTAGICE mkII version 4.38
Flash chip was not added.
No CFI device detected at address 0x00000000.
Далее любые мои действия по записи/стиранию Flash вызывают данную ошибку. То есть, фактически, я сейчас никак не могу изменить зашитую во Flash-память программу. Кроме того, в режиме Debug Run при пошаговом выполнении программы, строки выполняются не последовательно, а скачет сразу через несколько строк.
Прошу высказать свои мысли.
P.S. Хороший форум по AVR32: 3w avr32 ru