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

 
 
> Сброс контроллера и ШИМ
Timofey
сообщение Aug 30 2006, 04:27
Сообщение #1


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

Группа: Участник
Сообщений: 119
Регистрация: 3-07-06
Пользователь №: 18 528



Здраствуйте.

1. Подскажите пожалуйста как программно сбрасывать контроллер? Достаточно ли просто укзать строку AT91C_BASE_RSTC->RSTC_RCR=((0xA5 << 24) | 1) ? Нужно ли перед этим конфигурировать? А то там еще и настроечные регисттры есть .... Когда я сбрасываю контроллер этой строкой то у меня просто проц замолкает .... приходится на плате нажимать кнопочку "ресет" ....

2. Как правильно пользоваться RS-485? У меня на палте уже есть 485, я только настраиваю US1 на него и все. Но на входе и выходе данные почему то получаются не те.
Инициализация:
Код
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<<AT91C_ID_US1 );
  AT91F_PIO_CfgPeriph(
     AT91C_BASE_PIOA,
     ((unsigned int) AT91C_PA21_RXD1    ) |
     ((unsigned int) AT91C_PA22_TXD1    ) |
                 ((unsigned int) AT91C_PA24_RTS1    ) ,
     0 );

  AT91C_BASE_US1->US_IDR = (unsigned int) -1;
  AT91C_BASE_US1->US_CR = AT91C_US_RSTRX
                                               | AT91C_US_RSTTX
                                               | AT91C_US_RXDIS
                                               |   AT91C_US_TXDIS;
  AT91F_US_SetBaudrate(AT91C_BASE_US1, MCK, USART_BAUD_RATE_14400);
  AT91F_US_SetTimeguard(AT91C_BASE_US1, 0);
  AT91F_PDC_Open((AT91PS_PDC) &(AT91C_BASE_US1->US_RPR));
  AT91C_BASE_US1->US_MR = AT91C_US_ASYNC_MODEmy;
  
  
AT91C_BASE_US1->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC,
                        AT91C_ID_US1,
                        USART_INTERRUPT_LEVEL,
                        AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
                        Usart_c_irq_handler);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US1);
AT91F_PDC_Open (AT91C_BASE_PDC_US1);
AT91C_BASE_US1->US_RPR = (unsigned int) BUFF_485_IN;
AT91C_BASE_US1->US_RCR = 100;
AT91C_BASE_US1->US_RTOR = 16;
AT91F_US_EnableIt(AT91C_BASE_US1,  AT91C_US_TIMEOUT );


}


Код
#define AT91C_US_ASYNC_MODEmy ( AT91C_US_USMODE_RS485 + \
                        AT91C_US_NBSTOP_1_BIT + \
                        AT91C_US_PAR_EVEN + \
                        AT91C_US_CHRL_8_BITS + \
                        AT91C_US_CLKS_CLOCK )


Отправляю просто набор байт с 0х00 до 0х0F и получаю на компе на входе: FF FD FB F9 F7 ... и тд до E1 .... В чем может быть проблема? Преобразователь на компе который стоит - работает нормально, проверен был ранее на других программах. Отправляю через PDC.

3. Как с помощью TC сделать какой-нибудь сигнал? Мне требуется формировать прямоугольные импульсы .... Может примерчик какой-нибудь маленький есть? Чтобы посмотреть как вобще строятся сигналы.
З.Ы. Забыл добавить .... Работаю в IAR плата с контролллером SAM7S64

Сообщение отредактировал Timofey - Aug 30 2006, 04:29
Go to the top of the page
 
+Quote Post



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

 


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


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