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

 
 
> сторожевой таймер в at91sam7s256
sergey sva
сообщение Oct 24 2009, 12:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Где бы пример посмотреть работы с WDT на сайте atmel таких примеров нет. Регистр WDT_CR для сброса таймера, но как понял
что после этого его нуэно заново настраивать (вызывает повторную инициализацию) ?ссылка
Код
#if WDT_ON
     /* Сброс сторожевого таймера                                          */
     AT91C_BASE_WDTC->WDTC_WDCR = (AT91C_WDTC_WDRSTT | AT91C_WDTC_KEY );
     /* установки сторожевого таймера                                      */
     AT91C_BASE_WDTC->WDTC_WDMR = (AT91C_WDTC_WDV | AT91C_WDTC_WDRSTEN | AT91C_WDTC_WDRPROC | AT91C_WDTC_WDD);

#else

   /* После сброса, сторожевой таймер включен. Выключение таймера.         */
      AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
#endif

В дальнейшем коде его нужно сбрасывать, если сбрасывать так AT91C_BASE_WDTC->WDTC_WDCR = (AT91C_WDTC_WDRSTT | AT91C_WDTC_KEY );
то его каждый раз нужно настраивать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergey sva
сообщение Oct 24 2009, 17:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Еще такой вопрос,хотелось бы чтобы вы глянули своим опытным глазом,smile.gif светодиод мигает примерно за 11 секунд, включился 11секунд
выключился. Частота pll 96мгц. pll выбран в качестве основного генератора AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2.
Код
#include "at91sam7s256.h"
AT91S_PIO * pPIO = AT91C_BASE_PIOA;
#define OUT_MASK        (1UL<<29)

unsigned long tt = 0;
int main(void){
      AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOA);
      pPIO->PIO_PER  = OUT_MASK;
      pPIO->PIO_OER  = OUT_MASK;
      pPIO->PIO_SODR = OUT_MASK;
      pPIO->PIO_CODR = (1UL<<29);

for(;;){
    if(tt < 10000000){tt++;}else {tt=0;}

    if(tt >5000000){pPIO->PIO_SODR =  (1<<29);} else{pPIO->PIO_CODR =  (1<<29);}
}



return 0;
}//end main

11секунд кажется слишком долго, для частоты 48 мгц , ведь процессор должен работать на такой частоте ,если выбран в качестве основного pll?
И мигать он тогда должен с частотой 1секунда. ?

Сообщение отредактировал sergey sva - Oct 24 2009, 17:22
Go to the top of the page
 
+Quote Post



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

 


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


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