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

 
 
 
Reply to this topicStart new topic
> lm3s2776 Перемена положения строки меняет результат
kiuaki
сообщение Apr 22 2009, 17:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-03-05
Из: Kiev UA
Пользователь №: 3 237



Keil uVision 3.72 MDK 3.40 LM3S2776. Clk 14.7456 MHz.
Может ли кто-нибудь объяснить почему след. код, где выводится Единица в 5й бит порта С, работает если срока отмеченная ххххх стоит в той части, где инициализируется порт С. При этом работает в Симуляторе, Дебаггере и в реальном железе.
Если же ххххх строку переместить в MAIN ( сейчас она там закомментирована)
То код работает только в симуляторе. В Дебаггере все уходит в
B IntDefaultHandler
И виснет. В железе также ничего уже не моргает ни на одном порте.

CODE
#include <lm3s2776.h>
volatile unsigned long Delay_Count;
void init_ARM(void);
void init_ARM(void)
{
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOA;
Delay_Count = SYSCTL_RCGC2_R; //Dummy cycles to allow Ports tu setup
GPIO_PORTA_DR8R_R |= 0x02; // Can be set 2mA if needed
GPIO_PORTA_DIR_R |= 0xEE;
GPIO_PORTA_DEN_R |= 0xEE;
Delay_Count = SYSCTL_RCGC2_R; // Dummy cycles to allow Ports tu setup
// ARM Enable PORT B
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOB;
Delay_Count = SYSCTL_RCGC2_R;
GPIO_PORTB_DR8R_R |= 0xBF;
GPIO_PORTB_DIR_R |= 0xBF;
GPIO_PORTB_DEN_R |= 0xBF;
GPIO_PORTB_PUR_R =0x00; //no pullups
Delay_Count = SYSCTL_RCGC2_R; // Dummy cycles to allow Ports tu setup
// ARM Enable PORT C
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOC;
Delay_Count = SYSCTL_RCGC2_R;
GPIO_PORTC_DR8R_R |= 0x2E;
GPIO_PORTC_DIR_R |= 0x2E;
GPIO_PORTC_DEN_R |= 0x2E;
GPIO_PORTC_PUR_R =0x00; //no pullups except of PC5 (OE signal for ST2378)
GPIO_PORTC_DATA_R |= 0x20; // xxxxx OE signal for ST2378 If this line placed in MAIN - MCU goes to fault.
Delay_Count = SYSCTL_RCGC2_R; // Dummy cycles to allow Ports tu setup
// ARM Enable PORT D
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOD;
Delay_Count = SYSCTL_RCGC2_R;
GPIO_PORTD_DR8R_R |= 0xF0;
GPIO_PORTD_DIR_R |=0xF0;
GPIO_PORTD_DEN_R |= 0xF0;
GPIO_PORTD_PUR_R =0x00; //no pullups
Delay_Count = SYSCTL_RCGC2_R; // Dummy cycles to allow Ports tu setup
// ARM Enable PORT E
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOE; //
Delay_Count = SYSCTL_RCGC2_R; //Dummy cycles to allow Ports tu setup
GPIO_PORTE_DR8R_R |= 0x1B; // Can be set 2mA if needed
GPIO_PORTE_DIR_R |=0x1B;
GPIO_PORTE_DEN_R |= 0x1B;
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOE;
Delay_Count = SYSCTL_RCGC2_R; // Dummy cycles to allow Ports tu setup
}

int main(void)
{
init_ARM();
//GPIO_PORTC_DATA_R |= 0x20; // xxxxx OE signal for ST2378
while(1)
{
GPIO_PORTE_DATA_R |= 0x13; // Turn on the LED.
for(Delay_Count = 0; Delay_Count < 5; Delay_Count++); // Delay for a bit.
GPIO_PORTE_DATA_R &= ~(0x13); // Turn off the LED.
for(Delay_Count = 0; Delay_Count < 5; Delay_Count++); // Delay for a bit.
}
}
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
kiuaki
сообщение Apr 24 2009, 17:05
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-03-05
Из: Kiev UA
Пользователь №: 3 237



Все понял.
В RCGC2 cбрасывался Clock Gating Control.
Go to the top of the page
 
+Quote Post

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

 


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


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