Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Караул! Крыша едет. Keil Arm. Нарушена последовательность выполнения+++

Отправлено dshabrov (84.21.231.242) 05 марта 2011, г. 11:38



Есть нехитрый код

int main (void) {
int i;
float F1, F2, F3;
1 *RSTC_MR = 0xA5000000;
2 *WDT_MR = 0x3FFF2FFF;
3 *CKGR_MOR = 0x0000ff01;
4 *MC_FMR = 0x00320100;
5 *PMC_MCKR = 0x13;
6 *CKGR_PLLR = 0x00ff3fff;
7 *PMC_PCER = 0x22
8 *PIO_PDR = 0x4
9 *US_CR = 0x8f9
10 *US_MR = 0xf152
11 *US_BRGR = 0x4;
12 *US_CR = 0xfae5

и так далее

В окне дизасемблирования по шагам (включен Assebly Mode)
Строки 1 и 2 выполняются последовательно. Но

Инструкция *WDT_MR = 0x3FFF2FFF; состоит из одной загрузки:
LDR R0,[PC,#0x00D8]
Т.е. сохранения STR нет.

Дальше выполняется почему - то строка 10, потом 3, потом программа прыгает вообще в цикл и сбрасывает WDT, потом 4, потом снова в цикл и выполняет *PIO_CODR = led_mask[i];, потом строки 5, 6, 7.

Команда
*US_CR = (0x1 << 2) | //Reset Receiver
(0x1 << 3) | //Reset Transmitter
(0x1 << 5) | //Receiver Disable
(0x1 << 7); //Transmitter Disable

Интерпретируется как SUB R0,R3,R0,ASR #12

Где я напортачил? Черт, второй день бьюсь - почему не работает UART0 - а тут вообще странно что что - то работает.

Помогите! Закипел!


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 90:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru