Отговори на тема  [ 67 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
STM32F4 Discovery 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 12, 2011 9:21 pm
Мнения: 62
Мнение Re: STM32F4 Discovery
woody написа:
loser написа:
ако пробвам да чета и пиша от невалиден адрес - пробвах с адрес 12345676 - влиза се в HardFault; някой има ли идея защо, обаче, ако по погрешка се опитам да пиша във флаша - не се вдига HardFault?

За да уеднаквиш пробата поне го направи на подравнен адрес, примерно 0x12345670.


и това ми мина през главата - 12345676 (0xbc614c) е подравнен по размера на машинната дума (4 байта); първоначално пробвах с 12345678 (0xbc614e), който не е подравнен по размера на машинната дума, резултатът е същият - HardFault се генерира


Нед Сеп 02, 2012 9:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: STM32F4 Discovery
Аа, ти си писал десетично. Недей, че число с осем цифри на никого няма да му хрумне че е база различна от 16. :)

Няма смисъл да гадая - не познавам STM32, а Куртекс съм преглеждал отгоре-отгоре.
Миро сигурно може да се включи.


Нед Сеп 02, 2012 9:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: STM32F4 Discovery
Не съм експериментил точно това, утре ще пробвам и ще видя как е. Ама щом при теб е така и при мен ще е така. Що е различно ... ба ли му мамата какво са забъркали ...

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Нед Сеп 02, 2012 11:20 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM32F4 Discovery
то няма за какво да се включвам...

Стандартно е само ексепшъна при достъп на незает адрес (като 1234.....). Всички трябват да гърмят при такъв достъп.

А когато има памет, без значение дали ROM, RAM или флаш си е апликъшън спесифик. Демек всеки чип може да се държи различно. При повечето производители (за глуминари и атмел гарантирам) когато се пише по флаша няма ексепшън. Донякъде е нормално, защото все пак флаша се пише (не е само за четене). Макар че при глуминари не се пише през адресното му пространство ама както и да е.
С две думи не може да се разчита на еднакво поведение. Интересно ми е защо изобщо на някой му трябва да "пише" по флаш без да го е вкарал в режим запис. Няма логика читав софтуер да го прави. Ако пък целта е да се ловят бъгове или защита някаква - ми има си MPU (или поне от М3 нагоре имат) .


Пон Сеп 03, 2012 9:34 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Ное 12, 2011 9:21 pm
Мнения: 62
Мнение Re: STM32F4 Discovery
да, явно обяснението е, че ако адресът е валиден - поведението е както производителят го сложи; на мен ми трябваше да тествам нещо с HardFault, затова ми направи впечатление, че при stm32f4 поведението не е каквото съм виждал с други микроконтролери ако пиша по флаша, но явно това не е нещо ненормално и зависи от конкретния чип...

благодаря за споделения опит


Вто Сеп 04, 2012 3:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
Някой пробвал ли е cIPS? :)


Вто Окт 23, 2012 3:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
Всички пинове на даден порт стават за генериране на външно прекъсване? Пробвах на GPIOA пинове 0, 1 и 4 и само на пин 0 работи?


Нед Окт 28, 2012 12:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM32F4 Discovery
Реконструктор написа:
Всички пинове на даден порт стават за генериране на външно прекъсване? Пробвах на GPIOA пинове 0, 1 и 4 и само на пин 0 работи?


Всички, ама не едновременно... това е ST все пак;-)

Ако пуснеш РА1 не може да пуснеш РВ1 или друг 1-ви пин...


Нед Окт 28, 2012 2:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
Не, аз пробвах последователно, с 3-те пина. Ето кода за инициализация:

Код:
void EXTILine0_Config(void)
{
  EXTI_InitTypeDef   EXTI_InitStructure;
  GPIO_InitTypeDef   GPIO_InitStructure;
  NVIC_InitTypeDef   NVIC_InitStructure;

   /* Configure PA0 pin as input floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Connect EXTI Line0 to PA0 pin */
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);

  /* Configure EXTI Line0 */
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* Enable and set EXTI Line0 Interrupt to the lowest priority */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  Comm_SendStrSync("interrupt initialized \r\n");
}


От тук променям само

Код:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

Код:
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);


Съответно закачам жицата на пин 1 и не работи. :(


Нед Окт 28, 2012 2:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
BTW, баси гадния шрифт е кода под Ubuntu. Трябва да видя как се оправя.


Нед Окт 28, 2012 2:52 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Авг 07, 2012 3:16 pm
Мнения: 331
Мнение Re: STM32F4 Discovery
Ами Рек, не си прочел до край :-)

EXTI0 поддържа PA-PI0

EXTI1 поддържа PA-PI1

....
EXTI15 поддържа PA-PI15

Код:
● EXTI line 16 is connected to the PVD output
● EXTI line 17 is connected to the RTC Alarm event
● EXTI line 18 is connected to the USB OTG FS Wakeup event
● EXTI line 19 is connected to the Ethernet Wakeup event
● EXTI line 20 is connected to the USB OTG HS (configured in FS) Wakeup event
● EXTI line 21 is connected to the RTC Tamper and TimeStamp events
● EXTI line 22 is connected to the RTC Wakeup event


Т.е (примерно) за PA1 трябва да промениш и този ред

EXTI_InitStructure.EXTI_Line = EXTI_Line0;

на

EXTI_InitStructure.EXTI_Line = EXTI_Line1;

:-)

съответно ще промениш и IRQ-то
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
на
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;

Така де ,мисля че се разбира , страница 202 от Reference Manual-a на F4 серията (RM0090) ;-)

btw: не виждам къде включваш clock-a на GPIOA , явно го правиш преди това :-)


Нед Окт 28, 2012 4:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
Не стана :( Ето кода:

Код:
  EXTI_InitTypeDef   EXTI_InitStructure;
  GPIO_InitTypeDef   GPIO_InitStructure;
  NVIC_InitTypeDef   NVIC_InitStructure;

   /* Configure PA0 pin as input floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Connect EXTI Line0 to PA0 pin */
  SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);

  /* Configure EXTI Line0 */
  EXTI_InitStructure.EXTI_Line = EXTI_Line1;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* Enable and set EXTI Line0 Interrupt to the lowest priority */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);


Да, клока се пуска в друга функция, където се инициализират пиновете на SPI, който е на същия порт. Не знам дали има значение.


Нед Окт 28, 2012 5:03 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Авг 07, 2012 3:16 pm
Мнения: 331
Мнение Re: STM32F4 Discovery
Случайно да не си забравил да направиш handler на EXTI1_IRQn , ами да очакваш в handler-a на EXTI0_IRQn?

Т.е имаш функция EXTI1_IRQHandler , нали ?


Нед Окт 28, 2012 5:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
Аааа, не се сетих! :D
Секунда да пробвам!


Нед Окт 28, 2012 5:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: STM32F4 Discovery
Да, това беше. :) Супер стана. Сега цялото ENC е вързано в блок от 6 пина.
Подкарах и cIPS. Общо взето вече имам базов проект с всичко което ми трябва и мога да почна да творя.
Ще го поизчистя и ще добавя някаква демо функционалност и ще го кача.
Много благодаря за помощта. :)


Нед Окт 28, 2012 5:51 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 67 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни