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

 
 
> Непонятная природа генерации
Dopler
сообщение Feb 24 2007, 22:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



На рисунках представлены две осцилогармы.

Компилирую проект, запускаю через RDI и виглер в RAM. Проект примитивный, вот код функции Main:

Код
for (;;)
    {      
      unsigned int waiting_time;
      
      AT91C_BASE_PIOB->PIO_SODR    = 1 << 22;  
      for(waiting_time = 0; waiting_time < 2000; waiting_time++);
    
      AT91C_BASE_PIOB->PIO_CODR    = 1 << 22;  
      for(waiting_time = 0; waiting_time < 2000; waiting_time++);
    }


В результате вижу первую осцилограму.

Нажимаю в IAR кнопку остановить отладку, прямоугольные импульсы пропадают, а на прямой линии появляется синусоидальная генерация. Нажимаю кнопку начать отладку - и вижу вторую картинку, т.е. отчетливо видна генерация на полочках импульса. Генерация проподает только при хардварном ресете или передергивании питания. Думал, может быть у меня линии IO не объявлены выходами. Припаял резистор 2кОм с линии на землю, картинка не изменилась (это картинки с резистора).

Вопрос, что это такое?
Плата от олимекса, sam7X256.
Прикрепленные файлы
Прикрепленный файл  TEK0002.BMP ( 76.05 килобайт ) Кол-во скачиваний: 76
Прикрепленный файл  TEK0003.BMP ( 76.05 килобайт ) Кол-во скачиваний: 57
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dopler
сообщение Feb 25 2007, 00:51
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Короче, руки товарищам из олимекса поотбивать за такую разводку, хорошо хоть плата двухсторонняя.
Тоже самое сделать и с их программистами.

Такой вопрос, работоспособен ли данный код:

Код
  //Enable RESET
  m_pRSTC->RSTC_RCR = 0xA5000008;
  m_pRSTC->RSTC_RMR = 0xA5000001;


Мне кажется, что процессор будет находится в непрерывном сбросе, или нет?
Go to the top of the page
 
+Quote Post
nameless
сообщение Feb 25 2007, 15:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



Цитата(Dopler @ Feb 25 2007, 00:51) *
Короче, руки товарищам из олимекса поотбивать за такую разводку, хорошо хоть плата двухсторонняя.
Тоже самое сделать и с их программистами.

Такой вопрос, работоспособен ли данный код:

Код
  //Enable RESET
  m_pRSTC->RSTC_RCR = 0xA5000008;
  m_pRSTC->RSTC_RMR = 0xA5000001;


Мне кажется, что процессор будет находится в непрерывном сбросе, или нет?


Нет. Сам делаю сброс проца и периферии после перепрошивки флеши так:

AT91C_BASE_RSTC->RSTC_RMR = 0xA5000001; // Enable Reset by NRST
AT91C_BASE_RSTC->RSTC_RCR = 0xA500000D; // Reset CPU;PERIPHERAL;NRST

проходит безболезненно.
Go to the top of the page
 
+Quote Post
Dopler
сообщение Feb 25 2007, 22:37
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Цитата(nameless @ Feb 25 2007, 15:00) *
Нет. Сам делаю сброс проца и периферии после перепрошивки флеши так:

AT91C_BASE_RSTC->RSTC_RMR = 0xA5000001; // Enable Reset by NRST
AT91C_BASE_RSTC->RSTC_RCR = 0xA500000D; // Reset CPU;PERIPHERAL;NRST

проходит безболезненно.


Я не совсем корректно написал. В примере Олимекс код такой:

Код
int main()
{


  //Enable RESET
  m_pRSTC->RSTC_RCR = 0xA5000008;
  m_pRSTC->RSTC_RMR = 0xA5000001;
  Delay(1000);
Go to the top of the page
 
+Quote Post



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

 


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


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