Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av Rick81 »

Jag tycker det låter som du inte nollställer interuptflaggan i interuptet, då kommer det köras hela tiden
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43150
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av sodjan »

Idiotisk fråga, men... Har TS_IRQ_Pin pull up eller down?
Vad har GPIO_Pin för input? Om inget, finns det pull up eller down?
ToPNoTCH
Inlägg: 4847
Blev medlem: 21 december 2009, 17:59:48

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av ToPNoTCH »

Rick81 skrev: 16 juni 2021, 21:00:28 Jag tycker det låter som du inte nollställer interuptflaggan i interuptet, då kommer det köras hela tiden
Den automatgenererade koden i CubeMX har en inbyggd clear funktion.
Men nu när du nämnde det så konstaterar jag att TS har gjort våld på den, så det du säger stämmer vad jag kan se.

Jag trodde TS förstod det rudimentära med CubeMX, att man bara skev kod mellan

Kod: Markera allt

/* USER CODE BEGIN */

/* USER CODE END  */
och inte tar bort i övrigt.

Så verkar det inte vara.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

Rick81 skrev: 16 juni 2021, 21:00:28 Jag tycker det låter som du inte nollställer interuptflaggan i interuptet, då kommer det köras hela tiden
Jasså? Hur då nollställa? Den där flaggan är inte för interrupt.
ToPNoTCH skrev: 16 juni 2021, 23:19:00
Rick81 skrev: 16 juni 2021, 21:00:28 Jag tycker det låter som du inte nollställer interuptflaggan i interuptet, då kommer det köras hela tiden
Den automatgenererade koden i CubeMX har en inbyggd clear funktion.
Men nu när du nämnde det så konstaterar jag att TS har gjort våld på den, så det du säger stämmer vad jag kan se.

Jag trodde TS förstod det rudimentära med CubeMX, att man bara skev kod mellan

Kod: Markera allt

/* USER CODE BEGIN */

/* USER CODE END  */
och inte tar bort i övrigt.

Så verkar det inte vara.
Min kod är mellan user begin och user end. Alla interrupt-funktioner i STM32 har datatypen __weak. Alltså man skriver över funktionen med andra ord.
sodjan skrev: 16 juni 2021, 21:01:17 Idiotisk fråga, men... Har TS_IRQ_Pin pull up eller down?
Vad har GPIO_Pin för input? Om inget, finns det pull up eller down?
Gpio_Pin är bara en variabel som ett argument. Beroende på vilken pinne som har interrupt, så anropas funktionen med ett unikt interrupt. Mycket smart av ST.
ToPNoTCH
Inlägg: 4847
Blev medlem: 21 december 2009, 17:59:48

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av ToPNoTCH »

Om du skriver över funktionen (istället för att lägga till i befintliga "USER CODE") så behöver du veta vad som skall göras. Exempelvis i ditt fall cleara interrupt flaggan.

Gör om med ett blank projekt med en enda pinne med extern interrupt, och kolla den automat generade koden igen följ den hela vägen så kommer det klarna.
I "stm32f_xx_it.h" så framgår det vilken rutin som kopplas till den interrupt-lina som den valda pinnen ligger på.

Du kommer se att det slutar med ett anrop som rensar flaggan.
Ex.

Kod: Markera allt

/**
  * @brief  This function handles EXTI interrupt request.
  * @param  GPIO_Pin: Specifies the pins connected EXTI line
  * @retval None
  */
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
  /* EXTI line interrupt detected */
  if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}
Och du kommer se vart du skall lägga din kod för att inte sabba det.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

Fast USER CODE är bara till för att placera koden där CubeMX ej skriver över.
Tanken med __weak är att man ska skriva över funktionen.

Ja. Detta anrop anropas, men trots ändå så anropas min interrupt igen.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av Rick81 »

__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin) var inte med i den första koden du skickade, har du lagt till det nu?
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

Detta måste jag dubbelkolla!

Edit: Ja den fanns med när jag aktiverade NVIC.

Kod: Markera allt

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
  /* EXTI line interrupt detected */
  if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != 0x00u)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av Mr Andersson »

Använder du edge- eller level-trigger?
Om det är level måste du förmodligen säga åt din externa enhet att sluta dra linjen låg.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

Jag har edge high->low.

Men jag skulle nog tro att SPI funktionen och NVIC(interrupt) gillar inte varandra.

Det fungerar utmärkt att läsa utav pinnen manuellt annars utan interrupt.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

Har ni varit med om detta någon gång? När ni passerar en stor uint8_t plot[1584] igenom denna funktion.

Kod: Markera allt

void test_func(uint8_t plot[]){
	return;
}
Då fungerar det OK om funktionen befinner sig i main.c där uint8_t plot[1584] deklareras.
Men om funktionen void test_func(uint8_t plot[]) befinner sig i en annan .c fil och importeras via en annan .h header fil. Då får jag hardfault på något helt annat ställe som har inget med funktionen att göra.

I detta fall så får jag hardfault när jag deklarerar USB funktionen i STM32CubeIDE. :humm:
När jag lämnar denna funktion.

Kod: Markera allt

HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43150
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av sodjan »

Fungerar det för en (mycket) lägre storlek än [1584]?
*Om* det gör det så har du kanske svaret där...
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av Klas-Kenny »

När du skickar in arrayen i en funktion sådär så landar den på stacken.
Förmodligen är din stack inte stor nog för det, så den börjar skriva in på redan använda minnesplatser (utanför stacken).
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

sodjan skrev: 20 juni 2021, 22:27:51 Fungerar det för en (mycket) lägre storlek än [1584]?
*Om* det gör det så har du kanske svaret där...
Om jag lägger mig på 1320 så fungerar det. Då får jag inte hardfault.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Förslag på PWM, ADC, I/O och DAC IC kretsar med SPI?

Inlägg av DanielM »

Klas-Kenny skrev: 20 juni 2021, 22:30:51 När du skickar in arrayen i en funktion sådär så landar den på stacken.
Förmodligen är din stack inte stor nog för det, så den börjar skriva in på redan använda minnesplatser (utanför stacken).
Jag misstänker detta. Jag tyckter att jag har mycket minne kvar att jobba med.
Skärmklipp.PNG
Skärmklipp.PNG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar