реклама на сайте
подробности

 
 
> Проблема с внешним кварцем ATSAM4SD32C, Не заводлится от внешнего кварца.
Грендайзер
сообщение Feb 18 2015, 07:49
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Всем доброго времени суток. Пытаю отладочную плату SAM4S-EK2 на базе контроллера ATSAM4SD32C. Пытаюсь заставить микросхему тактироваться от внешнего кварца 12МГц. Делаю всё как указано в даташите. Сначала перевожу процессор на тактирование от низкочастотного внутреннего генератора:
PMC -> PMC_MCKR = PMC_MCKR_CSS_SLOW_CLK;
Тут всё работает, процессор действительно начинает медленно работать. Далее запускаю кварцевй генератор:
PMC -> CKGR_MOR = CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCRCF_12_MHz| CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCXTST_Msk | CKGR_MOR_KEY_PASSWD;
При этом если разбить данную строчку на 2, т.е.:
PMC -> CKGR_MOR = CKGR_MOR_MOSCRCEN | CKGR_MOR_MOSCRCF_12_MHz| CKGR_MOR_KEY_PASSWD;
PMC -> CKGR_MOR = CKGR_MOR_MOSCXTEN | CKGR_MOR_MOSCXTST_Msk | CKGR_MOR_KEY_PASSWD;
то выскакивает ошибка о которой скажу ниже.
И так, кварцевый генератор запускается (смотрю осциллографом на резонаторе, есть генерация).
Далее жду некоторое время:
for(int i = 0; i < 10000; i++)
{}
Далее ставлю кварцевый генератор, как основной и переключаюсь с низкочастотного генератора на кварцевый:
PMC -> CKGR_MOR = CKGR_MOR_MOSCSEL | CKGR_MOR_KEY_PASSWD;
PMC -> PMC_MCKR = PMC_MCKR_CSS_MAIN_CLK;
Компилю... Всё норм... но после прошивки ничего не происходит, а при повторной попытке прошить выскакивает ошибка, как на картинке. Единственный способ перепрошить - притянуть ногу ERASE к 0 и затем передёрнуть питание. Есть подозрения на программатор Atmel-ICE. 3 дня уже убил, всё перепробовал.

Сообщение отредактировал Грендайзер - Feb 18 2015, 07:51
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Грендайзер
сообщение Feb 28 2015, 19:26
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Здравствуйте, снова появился вопрос. Заметил данную проблемку достаточно давно, но не придавал значение, а вот теперь не пойму в чём дело..
Написал вот такую программку:
Код
PIOA -> PIO_PER = PIO_PER_P19;        // 1: Отключаю переферию
PIOA -> PIO_PER = PIO_PER_P20;        // 1: Отключаю переферию
PIOC -> PIO_PER = PIO_PER_P20;        // 1: Отключаю переферию

while(!((PIOA -> PIO_PSR & (PIO_PSR_P19 | PIO_PSR_P20)) && (PIOC -> PIO_PSR & PIO_PSR_P20)))
{}
                
PIOA -> PIO_OER = PIO_OER_P19;        // 1: PIOA19 -> Input
PIOA -> PIO_OER = PIO_OER_P20;        // 1: PIOA20 -> Input
PIOC -> PIO_OER = PIO_OER_P20;        // 1: PIOC20 -> Input
                
while(!((PIOA -> PIO_OSR & (PIO_OSR_P19 | PIO_OSR_P20)) && (PIOC -> PIO_OSR & PIO_OSR_P20)))
{}

PIOA -> PIO_SODR = PIO_CODR_P19 | PIO_CODR_P20;    // 1: PIOA19,20 -> '1'
PIOC -> PIO_СODR = PIO_SODR_P20;    // 1: PIOС20 -> '0'                                                
                
    while (1)
    {}
}


На ноги порта А (P19, P20) выдаётся 1, а порта С (P20) - 0. К данным ножкам подключены светодиоды. К порту А через резисторы, а ножка PC20 управляет затвором ключика, который и управляет диодом. Т.о. Если на ножках PIOA19,20 единицы - светодиоды не горят, а светодиод которым управляет ключик не горит, когда на затворе 0. Всё вроде бы нормально, диоды PIOA19,20 - погашены, а вот PIOC20 - раз в 15...20 сек. загорается. Проверил импульс на затворе осциллографоом, и впрямь, переодически ножка PIOC20 генерит импульс, при том, дочтаточной длительности, что бы его можно было заметить. В чём дело?

Сообщение отредактировал Грендайзер - Feb 28 2015, 19:26
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01287 секунд с 7
ELECTRONIX ©2004-2016