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

 
 
 
Reply to this topicStart new topic
> сторожевой таймер в 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
aaarrr
сообщение Oct 24 2009, 13:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergey sva @ Oct 24 2009, 16:55) *
В дальнейшем коде его нужно сбрасывать, если сбрасывать так AT91C_BASE_WDTC->WDTC_WDCR = (AT91C_WDTC_WDRSTT | AT91C_WDTC_KEY );
то его каждый раз нужно настраивать?

Нет, не нужно, естественно.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Oct 24 2009, 17:22
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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
aaarrr
сообщение Oct 24 2009, 18:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergey sva @ Oct 24 2009, 21:22) *
11секунд кажется слишком долго, для частоты 48 мгц , ведь процессор должен работать на такой частоте ,если выбран в качестве основного pll?
И мигать он тогда должен с частотой 1секунда. ?

"Кажется" - это немного неправильный подход, вам так не кажется?

Вот что дает дизассемблирование такого цикла (компилятор RVDS 2.2):
Код
        0x0000002c:    e1500003    ..P.    CMP      r0,r3
        0x00000030:    23a00000    ...#    MOVCS    r0,#0
        0x00000034:    2a000003    ...*    BCS      {pc} + 0x14 ; 0x48
        0x00000038:    e2800001    ....    ADD      r0,r0,#1
        0x0000003c:    e1500004    ..P.    CMP      r0,r4
        0x00000040:    85812030    0 ..    STRHI    r2,[r1,#0x30]
        0x00000044:    8afffff8    ....    BHI      {pc} - 0x18 ; 0x2c
        0x00000048:    e5812034    4 ..    STR      r2,[r1,#0x34]
        0x0000004c:    eafffff6    ....    B        {pc} - 0x20 ; 0x2c

Цикл выполняется за 13 тактов, если 0 < tt <= 5M, или 11 тактов, если tt > 5M. Т.е мигать он должен с частотой примерно 0.63Гц.
Посмотрите, как скомпилировалось у вас.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Oct 24 2009, 19:53
Сообщение #5


Гуру
******

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



Цитата
"Кажется" - это немного неправильный подход, вам так не кажется?

вы правы smile.gif подход по методу пальцем в небо.

Компилятор gcc вот он на генерировал :
Код
  71                  .L6:
  72 0050 80309FE5         ldr    r3, .L8+4    @ tmp155,
  73 0054 002093E5         ldr    r2, [r3, #0]    @ tt.4, tt
  74 0058 2637A0E3         mov    r3, #9961472    @ tmp156,
  75 005c 963C83E2         add    r3, r3, #38400    @ tmp156, tmp156,
  76 0060 7F3083E2         add    r3, r3, #127    @ tmp156, tmp156,
  77 0064 030052E1         cmp    r2, r3    @ tt.4, tmp156
  78 0068 0500008A         bhi    .L2    @,
  79 006c 64309FE5         ldr    r3, .L8+4    @ tmp157,
  80 0070 003093E5         ldr    r3, [r3, #0]    @ tt.5, tt
  81 0074 012083E2         add    r2, r3, #1    @ tt.6, tt.5,
  82 0078 58309FE5         ldr    r3, .L8+4    @ tmp158,
  83 007c 002083E5         str    r2, [r3, #0]    @ tt.6, tt
  84 0080 020000EA         b    .L3    @
  85                  .L2:
  86 0084 4C309FE5         ldr    r3, .L8+4    @ tmp159,
  87 0088 0020A0E3         mov    r2, #0    @ tmp160,
  88 008c 002083E5         str    r2, [r3, #0]    @ tmp160, tt
  89                  .L3:
  90 0090 40309FE5         ldr    r3, .L8+4    @ tmp161,
  91 0094 002093E5         ldr    r2, [r3, #0]    @ tt.7, tt
  92 0098 1337A0E3         mov    r3, #4980736    @ tmp162,
  93 009c 4B3C83E2         add    r3, r3, #19200    @ tmp162, tmp162,
  94 00a0 403083E2         add    r3, r3, #64    @ tmp162, tmp162,
  95 00a4 030052E1         cmp    r2, r3    @ tt.7, tmp162
  96 00a8 0400009A         bls    .L4    @,
  97 00ac 20309FE5         ldr    r3, .L8    @ tmp163,
  98 00b0 003093E5         ldr    r3, [r3, #0]    @ pPIO.8, pPIO
  99 00b4 0222A0E3         mov    r2, #536870912    @ tmp164,
100 00b8 302083E5         str    r2, [r3, #48]    @ tmp164, <variable>.PIO_SODR
101 00bc E3FFFFEA         b    .L6    @


Включил оптимизацию -О6 совсем другое дело:
Код
  69                  .L6:
  70 004c 020053E1         cmp    r3, r2    @ prephitmp.17, tmp152
  71 0050 013083E2         add    r3, r3, #1    @ prephitmp.17, prephitmp.17,
  72 0054 0030A083         movhi    r3, #0    @ prephitmp.17,
  73 0058 0200008A         bhi    .L3    @,
  74 005c 0C0053E1         cmp    r3, ip    @ prephitmp.17, tmp153
  75 0060 30008185         strhi    r0, [r1, #48]    @ tmp154, <variable>.PIO_SODR
  76 0064 F8FFFF8A         bhi    .L6    @,
  77                  .L3:
  78 0068 340081E5         str    r0, [r1, #52]    @ tmp154, <variable>.PIO_CODR
  79 006c F6FFFFEA         b    .L6    @
Go to the top of the page
 
+Quote Post

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

 


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


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