Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.12.2010, 13:05
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Заминка с инициализацией PLL.
Написал свою функцию, вставил в код, смотрю ножку осцилографом, а частота не такая как должна быть. PLL настраивал на частоту 192 МГц, а ножка дергается с частотой 4.59 МГц. Вот мой код, что не так?
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=16) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
{
Init_CLK();
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выхода
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
|
|
|
|
06.12.2010, 13:06
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Заминка с инициализацией PLL.
Написал свою функцию, вставил в код, смотрю ножку осцилографом, а частота не такая как должна быть. PLL настраивал на частоту 192 МГц, а ножка дергается с частотой 4.59 МГц. Вот мой код, что не так?
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=16) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
{
Init_CLK();
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выхода
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
|
|
|
|
06.12.2010, 13:13
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Заминка с инициализацией PLL.
Написал свою функцию, вставил в код, смотрю ножку осцилографом, а частота не такая как должна быть. PLL настраивал на частоту 192 МГц, а ножка дергается с частотой 4.59 МГц. Вот мой код, что не так?
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=16) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
{
Init_CLK();
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выхода
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
|
|
|
|
06.12.2010, 13:14
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
У меня тут заминка с инициализацией PLL.
Написал свою функцию, вставил в код, смотрю ножку осцилографом, а частота не такая как должна быть. PLL настраивал на частоту 192 МГц, а ножка дергается с частотой 4.59 МГц. Вот мой код, что не так?
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=16) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
{
Init_CLK();
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выхода
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
|
|
|
|
06.12.2010, 13:15
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
У меня тут заминка с инициализацией PLL.
Написал свою функцию, вставил в код, смотрю ножку осцилографом, а частота не такая как должна быть. PLL настраивал на частоту 192 МГц, а ножка дергается с частотой 4.59 МГц. Вот мой код, что не так?
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=16) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
{
Init_CLK();
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выхода
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
|
|
|
|
06.12.2010, 13:18
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Заминка с инициализацией PLL.
Написал свою функцию, вставил в код, смотрю ножку осцилографом, а частота не такая как должна быть. PLL настраивал на частоту 192 МГц, а ножка дергается с частотой 4.59 МГц. Вот мой код.
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=16) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
{
Init_CLK();
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выхода
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
Прошу укажите ошибку.
|
|
|
|
06.12.2010, 13:31
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Доброго всем дня. У меня тут заминка с настройкой PLL. Я хочу, чтобы моя частота тактирования процессора PCK была 192 МГц, а задающая частота, которая тактирует периферию MCK была в 2 раза меньше, т.е. 96 МГц. Я написал функцию Init_CLK, которая осуществляет. Включил функцию в свой код "дрыгания лапкой". Смотрю осцилографом, лапка переключается с частотой 9.2 МГц. Вот мой код:
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=64) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
Init_CLK();
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выходад
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
Пожалуйста укажите мне на ошибку.
|
|
|
|
06.12.2010, 13:37
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Добрый день. У меня тут заминка с настройкой PLL. Я хочу, чтобы моя частота тактирования процессора PCK была 192 МГц, а задающая частота, которая тактирует периферию MCK была в 2 раза меньше, т.е. 96 МГц. Я написал функцию Init_CLK, которая осуществляет. Включил функцию в свой код "дрыгания лапкой". Смотрю осцилографом, лапка переключается с частотой 9.2 МГц. Вот мой код:
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=64) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
Init_CLK();
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выходад
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
Пожалуйста укажите мне на ошибку.
|
|
|
|
06.12.2010, 14:36
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Добрый день. У меня тут заминка с настройкой PLL. Я хочу, чтобы моя частота тактирования процессора PCK была 192 МГц, а задающая частота, которая тактирует периферию MCK была в 2 раза меньше, т.е. 96 МГц. Я написал функцию Init_CLK, которая осуществляет. Включил функцию в свой код "дрыгания лапкой". Смотрю осцилографом, лапка переключается с частотой 9.2 МГц. Вот мой код:
Код:
|
#include "at91sam9260/AT91SAM9260.h"
//------------------------------------------------------------------------------
/// Настройка PLL
//------------------------------------------------------------------------------
void Init_CLK(void)
{ unsigned int MAINF;
// Частота медленного RC-генератора SLCK 32.768 кГц. Период 1/32768 = 30.51 мкс
// Максимальное время запуска основоного генератора: 75 мкс
// Время запуска основного генератора:8 * OSCOUNT(=64) * 30.51 мкс = 15.6 мс
// Запуск основного генератора:
AT91C_BASE_PMC-›PMC_MOR = (AT91C_CKGR_OSCOUNT & (0x40 ‹‹ 8)) | AT91C_CKGR_MOSCEN;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MOSCS));
// Переключение блока задающей частоты на основную тактовую частоту
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_CSS_MAIN_CLK;
// Настройка PLL на частоту 192 МГц:
AT91C_BASE_PMC-›PMC_PLLAR = ( AT91C_CKGR_SRCA // 29 бит = 1
| (0x2 ‹‹ 14) // OUTA = 2
| (0xBF ‹‹ 8) // PLLACOUNT = 191
| (AT91C_CKGR_MULA & (0x7C ‹‹ 16)) // MULA = 124
| (AT91C_CKGR_DIVA & 12)); // DIVA = 12
// Ждать пока пройдет время запуска:
while(!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_LOCKA));
// Выбор задающей частоты и тактовой частоты процессора:
// Предделитель тактовой частоты PRES = 1, Предделитель задающей частоты MDIV = 2.
AT91C_BASE_PMC-›PMC_MCKR = AT91C_PMC_PRES_CLK | AT91C_PMC_MDIV_2;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
// В качестве основной частоты использовать частоту PLL:
AT91C_BASE_PMC-›PMC_MCKR |= AT91C_PMC_CSS_PLLA_CLK;
// Ждать пока пройдет время запуска:
while (!(AT91C_BASE_PMC-›PMC_SR & AT91C_PMC_MCKRDY));
}
/* Главная функция программы */
int main(void)
Init_CLK();
enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
AT91C_BASE_WDTC-›WDTC_WDMR = AT91C_WDTC_WDDIS; // Отключение сторожевого таймера
AT91C_BASE_PMC-›PMC_PCER = (1UL ‹‹ AT91C_ID_PIOB); // Разрешение тактирования PIO B
AT91C_BASE_PIOB-›PIO_PER = WORKMASK; // Установка управления PIO выводом (отключение управления выводом переферийным устройством).
AT91C_BASE_PIOB-›PIO_PPUER = WORKMASK; // Разрешение подтягивающих резисторов
AT91C_BASE_PIOB-›PIO_OER = WORKMASK; // Установка вывада в качестве выходад
while(1)
{
AT91C_BASE_PIOB-›PIO_SODR = WORKMASK; // Установка вывода в единицу
AT91C_BASE_PIOB-›PIO_CODR = WORKMASK; // Сброс вывода в ноль
}
} |
Пожалуйста укажите мне на ошибку.
|
|
|
|
07.12.2010, 21:09
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Проба пера AT91SAM9260 + IAR + J-Link
Вот решил поставить Linux!
Скачал MMNET1000-CD, на комп поставил SAM-BA v2.10. На сайте Запуск платы на AT91SAM9260 говорят, что начальный загрузчик следует устанавливать в DataFlash. В MMNET1000-CD нашел скрипт для своего устройства, но там все льется в NandFlash
Гружу с помощью J-Link for ARM от IAR Systems.
Вопрос, в чем моя ошибка. Можно ли вообще с помощью J-Link залить Linux?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подниму тему WinAVR vs IAR
|
oleg110592 |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.10.2015 14:06 |
Часовой пояс GMT +4, время: 15:24.
|
|