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

 
 
 
Reply to this topicStart new topic
> Мигание светодиодом на AT91SAM7S256
AlfaStar
сообщение Oct 3 2010, 14:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 3-10-10
Пользователь №: 59 900



Помогите, пожайлуста, начинающему... Необходимо прошить камень AT91SAM7S256 так, что бы мигал светодиод. Дело в том, что у меня схема оригинальная и поэтому те примеры, что есть в интернете для отладочных стендов, не подходят. На моей плате всего один светодиод на 10 выходе(PA10). И сейчас я мучаюсь, что бы изменить стандартные программы... Подскажите, пожайлуста.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 6 2010, 05:12
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Мигать будет достаточно быстро, глазом не усмотреть. Вставить задержки где надо.
Код
#include "AT91SAM7S64.h"

/* Главная функция программы */
int main(void)
{
    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;    // запретить сторожевую собаку
    // Enable NRST input. Требуется для удобства при отладке.
    AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (AT91C_RSTC_KEY & (0xA5UL << 24));

    enum { WORKMASK = AT91C_PIO_PA10 };        // битовая маска, определяет каким выводом шевелить

    AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOA); // enable periph clock for PIO controller

    AT91C_BASE_PIOA->PIO_PER = WORKMASK;    // disable peripherial, connected to this pin. Use as PIO.
    AT91C_BASE_PIOA->PIO_PPUDR = WORKMASK;    // disable pull-up resistors
    AT91C_BASE_PIOA->PIO_OER = WORKMASK;    // эти выводы на вывод
    //AT91C_BASE_PIOA->PIO_MDER = WORKMASK;    // 5 volt (open drain) output
    for (;;)
    {
        AT91C_BASE_PIOA->PIO_SODR = WORKMASK; // ставим единичку на выходе
                                     // здесь задержку надо
        AT91C_BASE_PIOA->PIO_CODR = WORKMASK; // ставим ноль на выходе
                                     // здесь задержку надо
    }
}


Сообщение отредактировал Genadi Zawidowski - Oct 6 2010, 05:15
Go to the top of the page
 
+Quote Post
mjpronin
сообщение Oct 13 2010, 04:15
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 26-01-10
Пользователь №: 55 071



Genadi Zawidowski
Правильно ли я понял, что при таких настройках и инициализациях МК будет тактироваться по умолчанию, т.е. при 32kHz.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Oct 13 2010, 04:41
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Наверняка для инициализации PLL и SD-RAM нужен загрузчик (bootstrap).
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 14 2010, 20:28
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(mjpronin @ Oct 13 2010, 08:15) *
Genadi Zawidowski
Правильно ли я понял, что при таких настройках и инициализациях МК будет тактироваться по умолчанию, т.е. при 32kHz.

да правильно. Если из стартапа какой=нибудь lowlevelinit не вызывается.
Уже мигает? Пора бы уже... У меня всё часа три заняло.

Сообщение отредактировал Genadi Zawidowski - Oct 14 2010, 20:29
Go to the top of the page
 
+Quote Post
AlfaStar
сообщение Oct 24 2010, 14:49
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 3-10-10
Пользователь №: 59 900



Спасибо большое за дельные советы. Диод мигает a14.gif
Go to the top of the page
 
+Quote Post
ZED
сообщение Nov 29 2010, 13:53
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 17-04-07
Из: Москва
Пользователь №: 27 102



Здравствуйте, начал разбираться с микроконтроллерами, в частности с AT91SAM9260. Вот решил для начала подрыгать ножками. Работаю в IAR Embedded Workbench for ARM v.5.50.1 Full. Написал код на основе вашего, но ничего не выходит, ножка постоянно в высоком состоянии. Может я чего-то не так делаю, может в IAR необходимы какие-то настройки?

Привожу исходный код и сам проект. Заранее спасибо.

Код
#include "AT91SAM9260.h"

void wait(int delay)
  {
  for (int i = 0; i < delay; i++)
  {;}
  }

/* Главная функция программы */
int main(void)
{
    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;    // Отключение сторожевого таймара
    
    //AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (AT91C_RSTC_KEY & (0xA5UL << 24));
    
    enum { WORKMASK = AT91C_PIO_PB0 }; // Битовая маска, определяет каким выводом управлять
    
    AT91C_BASE_PMC->PMC_PCER = (1UL << AT91C_ID_PIOB); // Разрешение тактирования PIO A

    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; // Установка вывода в единицу
        //wait(0x10);                       // Задержка
        AT91C_BASE_PIOB->PIO_CODR = WORKMASK; // Сброс вывода в ноль
        //wait(0x10);                       // Задержка
    }
}


Ах, да забыл упомянуть, конфугурирую с помощью J-Link for ARM от IAR Systems.
Прикрепленные файлы
Прикрепленный файл  Diode.rar ( 53.38 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 17:52
Рейтинг@Mail.ru


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