Hur kan jag få tag på prestandaversionen av Nucleo?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av bearing »

Efter att du pausat måste du stega dig fram, eller köra fram till strategiskt placerade brytpunkter, för att ta reda på vad som kan tänkas vara fel. Funktionen du länkar till gör ju t.ex. en del felhantering, så du får stega dig genom den och se vad som händer.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Rick81 »

Ser ut som du inte nollställer IRQ flaggorna för DMA interuptet. Kolla även om det är nån anna interupt ex felflagga som sätts.

Men börja med isolera din kod, så testa ditt matrisbibliotek med en känd inputarray, ex de testkoden du körde på PC.

Efter att det funkar kan du börja testa med ADC och DMA.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Jag har hittat en kod som hela tiden körs och aldrig går vidare. Denna for-loops körs hela tiden. Ser ut som den har fastnat.
Bättre om de använde memset istället?

Kod: Markera allt

memset(_THIS->R, 0, NVMAX*NVMAX*sizeof(real_t))
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Rick81 skrev:Ser ut som du inte nollställer IRQ flaggorna för DMA interuptet. Kolla även om det är nån anna interupt ex felflagga som sätts.

Men börja med isolera din kod, så testa ditt matrisbibliotek med en känd inputarray, ex de testkoden du körde på PC.

Efter att det funkar kan du börja testa med ADC och DMA.
Japp! Det är något med DMA som avbryter min beräkning så den börjar om. Eller har jag fel angående interrupts?

Jag kan ju ta bort DMA från min ADC och anropa ADC:n manuellt?
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av bearing »

Vad är NVMAX definierad till, och vad har variabeln i för typ?

Ifall NVMAX*NVMAX är större än högsta möjliga värde på i så fastnar ju loopen.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Det var 50*50. Så det är lungt!

Men jag kom på att jag har en timer TIM2 som triggar min ADC att läsa till DMA rätt ofta. Kanske man ska anropa min ADC manuellt.
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av bearing »

Det beror ju på. Ifall du vill sampla med 1Msps som jag gjorde senast jag använd en STM32, så är ju DMA närmast nödvändigt. Ifall det handlar om några få mätningar per sekund finns det ingen anledning att använda DMA som jag ser det.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

1 Hz så är jag nöjd :)

Jag använder bara DMA för att det är enkelt. Men nu kanske man har lärt sig att det finns nackdelar också.
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av bearing »

Det är lite krångligare med DMA eftersom att man behöver läsa fler kapitel i databladet och sätta sig in i hur det fungerar. Jag är inte tillräckligt hemmastadd med STM32 för att se vad som är fel vid första anblick, och jag tycker inte att du lämnar tillräckligt med info för att man ska kunna sätta sig in i ditt problem och hjälpa till att lösa det.

Men någon föreslog att provköra de olika delarna var för sig, och det tycker jag låter utmärkt. Testa att bara mäta signalen fram tills det fungerar. Och lägg sedan in matriskoden.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Jag sitter och forskar mycket själv också.
Nu testade jag att ta bort DMA och inte anropa ADC alls. Alltså helt utan ADC funktionalitet.

Och jag gjorde en beräkning. Så här hamnade jag i koden.

Kod: Markera allt

/**
  * @brief This function handles Hard fault interrupt.
  */
void HardFault_Handler(void)
{
  /* USER CODE BEGIN HardFault_IRQn 0 */

  /* USER CODE END HardFault_IRQn 0 */
  while (1)
  {
    /* USER CODE BEGIN W1_HardFault_IRQn 0 */
    /* USER CODE END W1_HardFault_IRQn 0 */
  }
}
bearing
Inlägg: 11265
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av bearing »

Det där är vad jag menade från början, en sk. "trap".

Debuggern har ofta en "call history" som man kan använda som hjälpmedel för att felsöka detta.
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Är du bekant med Atollic?

Edit: Hittade detta.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Rick81 »

Troligtvis en felaktig pekare som pekar utanför tillåtet minne.

Du har väl inbyggd st-link? så sätt ut brytpunkt på sista kända punkten och steppa därifrån för att se var det går snett.

Och ta utan ADC och DMA först, mindre felkällor = lättare debugga
DanielM
Inlägg: 2194
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Jag gjorde en komplett debugg med "stop points" och hittade absolut inget. Allt gick som smör när jag stegade mig frammåt. Men kör jag koden normalt, så får jag hard fault error.
hummel
Inlägg: 2269
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av hummel »

Titta på call-stacken vad som orsakade din trap.
Skriv svar