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

 
 
> Проблемма с AT91SAM9260 и IAR EWARM
rtcveel
сообщение Jun 27 2012, 07:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 27-06-12
Из: Самара
Пользователь №: 72 524



Доброго времени суток, уважаемые ГУРУ!

Решил в целях самообразования поработать с архитектурой отличной от класической MCS-51. Хотелось и частоты побольше и переферии, в общем выбор пал на микроконтроллер AT91SAM9260. Была куплена отладочная плата SK-AT91SAM9260 и JTAG программатор MT-LINK. Скачан и успешно вылечен IAR EWAVR версии 6.30. Казалось бы, ничего не предвещало проблемм но первый же блин оказался канечно же "комом", и не только первый.

В ступор встал после первой же простейшей программы, суть которой считывать логический уровень с 24 пина порта А и в зависимости от него включать или выключать светодиод на выходе 17 порта Б:

#include <AT91SAM9260/AT91SAM9260.h>

void main(void)
{
unsigned long a=1;

AT91C_BASE_PIOA -> PIO_PER = (0x1<<24); // PORTA.24 as PIO
AT91C_BASE_PIOA -> PIO_PPUER = (0x1<<24); // PORTA.24 PULLUP ON


AT91C_BASE_PIOB -> PIO_PER = (0x1<<17); // PORTB.17 as PIO
AT91C_BASE_PIOB -> PIO_OER = (0x1<<17); // PORTB.17 as OUTPUT
AT91C_BASE_PIOB -> PIO_OWER = (0x1<<17); // PORTB.17 Output Write Enable Registor
AT91C_BASE_PIOB -> PIO_CODR = (0x1<<17); // PORTB.17 = 0;

while(1){

a = (AT91C_BASE_PIOA->PIO_PDSR)&AT91C_PIO_PA24; // состояние ПИНа А.24

if (a){AT91C_BASE_PIOB->PIO_SODR = (1UL<17);} // если неравно нулю то PORTB.17 = 1;
if (!a){AT91C_BASE_PIOB->PIO_CODR = (1UL<17);} // если равно нулю то PORTB.17 = 0;
}

}

Сразу прошу прощения,что пользуюсь разными методами задания вывода, а именно (0x1<<17) или (1UL<17) или AT91C_PIO_PВ17 должно быть одно и тоже, насколько я понимаю...

Компляция проходит на "УРА", запускается дебаг, иар радостно сообщает что прошивка загружена по месту назначения и ... ничего не происходит, на обоих выводах висит +3.3 вольта, на нажатие кнопки не реагирует. Уже низнаю что и думать можт IAR обманывает? или отладчик? help.gif

Извиняюсь, опечатался: не (1UL<17) а (1UL<<17).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lotor
сообщение Jun 27 2012, 07:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



С этим контроллером не работал, но возможно там в модуле управления питания надо включить нужные порты ног.
Если есть JTAG, то что мешает пройти по шагам стартовый код и узнать доходите ли до main.
Самый лучший способ - в ИАРе найти пример под Ваш МК и сделать на его основе.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 20:28
Рейтинг@Mail.ru


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