Är en STM32 bra att använda som USB I/O-modul?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Glattnos
Inlägg: 3102
Blev medlem: 29 oktober 2009, 20:01:18

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Glattnos »

Jag känner lite som jesse. Hur kan 1024 olika värden som körs igenom en matematisk modell ge rätt svar? Det kräver väl att den matematiska modellen bygger på verkliga tester som utförts i förväg? Det bör ju endast funka bra på väldigt definierade system som inte slits eller ändras.
Eller är QP i detta fall inte "istället för" PID utan ett sätt att "förfina" PID-regleringen?

Förklara gärna mer :)
cosmox
EF Sponsor
Inlägg: 3856
Blev medlem: 6 januari 2004, 02:11:54
Ort: Hjälteby - Tjörn

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av cosmox »

Istället för en uC, har du funderat på en FPGA?

Det känns som att det skulle vara lättare att implementera om du söker parallellism.

(Har dock bara skummat i tråden)
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

Al_Bundy skrev:Här hittade jag en liten funktion som man ska applicera utanför main() i main.c

Kod: Markera allt

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    // Placera din kod här
}
Hur vet jag att denna funktion anropas efter timerna har gjort sin cykel? Mystiska C programmering!
För att den någonstans blir definierad som callback funktion till timer-interruptet,
det är inte C programmeringen som är mystisk det är ST HAL och CubeMX...
Men läser du dokumentationen till CubeMX så framgår det säkert hur de tänkt sig att deras högnivåinterrupthantering ska funka.
Ofta tror jag HAL finns för säljarna än att faktiskt underlätta för C-programmerare...

Själv tittar jag i startup_smt32f407xx.s och ser direkt vilken funktion som kallas vid vilken interrupt och implementerar den.
tex "void USART3_IRQHandler(void)" för USART3 interrupt...
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

cosmox skrev:Istället för en uC, har du funderat på en FPGA?

Det känns som att det skulle vara lättare att implementera om du söker parallellism.

(Har dock bara skummat i tråden)
Är C för lågnivå för Al, kommer nog inte VHDL/Verilog bli så poppis :)
cosmox
EF Sponsor
Inlägg: 3856
Blev medlem: 6 januari 2004, 02:11:54
Ort: Hjälteby - Tjörn

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av cosmox »

Man kan ju rita scheman om man vill.
Det kan till och med vara kul ibland :)

EDIT: Vad menar du med att C är lågnivå?
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

Maskinnära? Inte så mycket lager i mellan som med högnivåspråk som C# och java.
cosmox
EF Sponsor
Inlägg: 3856
Blev medlem: 6 januari 2004, 02:11:54
Ort: Hjälteby - Tjörn

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av cosmox »

Det jag menade var att man kan bygga hyfsat komplexa kretsar med de ip'n och moduler som är gratis. På tex Open Cores, Hamsterworks.

Klipp o klistra, bygg små moduler och sy ihop dem i ett fint schema som Top-design. Vipps!

Jag ser inget fel i att göra så om man är väldigt mån om att få x gjort.
Däremot är det en annorlunda inlärningströskel.
Det tar tid att tråckla sig igenom alla skitfel i början.

FPGA'er börjar ta fart i DIY-världen mer och mer. Kolla in tex vad de gjort med Lattice småkretsar och den öppna bitstreamen de lyckades få till. Jag har inte testat den själv men läst en del om de på sistone.
cosmox
EF Sponsor
Inlägg: 3856
Blev medlem: 6 januari 2004, 02:11:54
Ort: Hjälteby - Tjörn

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av cosmox »

Aha, nu fattade jag.

Jag har alltid tänkt att assembler är det mest "lågnivå you can get".
Tiderna förändras.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Glattnos skrev:Jag känner lite som jesse. Hur kan 1024 olika värden som körs igenom en matematisk modell ge rätt svar? Det kräver väl att den matematiska modellen bygger på verkliga tester som utförts i förväg? Det bör ju endast funka bra på väldigt definierade system som inte slits eller ändras.
Eller är QP i detta fall inte "istället för" PID utan ett sätt att "förfina" PID-regleringen?

Förklara gärna mer :)
Fråga: Hur kan 1024 olika värden som körs igenom en matematisk modell ge rätt svar?
Svar: Du minimerar en kostfunktion J. När den är som minst så har du ditt bästa svar.

Fråga: Det kräver väl att den matematiska modellen bygger på verkliga tester som utförts i förväg?
Svar: Ja. Därför används systemidentifiering.

Fråga: Eller är QP i detta fall inte "istället för" PID utan ett sätt att "förfina" PID-regleringen?
Svar: Nej. QP har ingen P,I eller D. QP minimerar en kvadratisk kostfunktion via programmering. Därför heter det Quadratic Programming. Modern teknik som finns i de flesta bilar, rymdsonder, reaktorer osv för att få ett fint resultat.

Det är väldigt mycket matematik man måste kunna tillämpa.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

AndLi skrev:
Al_Bundy skrev:Här hittade jag en liten funktion som man ska applicera utanför main() i main.c

Kod: Markera allt

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    // Placera din kod här
}
Hur vet jag att denna funktion anropas efter timerna har gjort sin cykel? Mystiska C programmering!
För att den någonstans blir definierad som callback funktion till timer-interruptet,
det är inte C programmeringen som är mystisk det är ST HAL och CubeMX...
Men läser du dokumentationen till CubeMX så framgår det säkert hur de tänkt sig att deras högnivåinterrupthantering ska funka.
Ofta tror jag HAL finns för säljarna än att faktiskt underlätta för C-programmerare...

Själv tittar jag i startup_smt32f407xx.s och ser direkt vilken funktion som kallas vid vilken interrupt och implementerar den.
tex "void USART3_IRQHandler(void)" för USART3 interrupt...
Det står inget. Kolla här på sidan 899: https://www.st.com/content/ccc/resource ... 105879.pdf

Det är frågan:
1. Hur vet jag att det är denna funktion jag ska använda?
2. Hur vet jag att denna funktion anropas när räknaren har gjort sitt varv?
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

Men men... det verkar ju som att ST då ljuger...
STM32CubeTM is STMicroelectronics's original initiative to ease developers' life by reducing
development efforts, time and cost.
Du får fråga ST hur de tänkte när de skrev sin HAL och gjorde CubeMX, du har ju tidigare sagt att det bara är att klicka lite och inte skriva nån kod. Så det är väl så du ska göra...
Eller så har den verklighet vi andra har pratat om nu kommit ifatt dig, och det är dags att börja skaffa sig förståelse för vad som händer under HALen och lära dig C på allvar...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Eller så lägger jag bara koden på minnet och övar massa olika exempel med HAL. Jag kommer få det jobbigt om jag byter plattform t.ex. PIC eller AVR. Men förhoppningsvis så gör jag inte det då det är jag som bestämmer vilken plattform kunden ska ha.

Men det är väll så med alla högnivså språk? Jag menar, jag programmerar mycket i Java. Men skulle jag och sätta mig vid Python så skulle jag vara på ruta noll igen. Att kunna språk är en sak, men att kunna applicera språket i verkligheten är en annan sak som kräver mycket kännedom om vad som finns och vad som fungerar?

Eller är det så att kan man AVR, så kan man PIC, Infineon, STM32, AMD, Intel osv helt utan problem?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

AndLi skrev:Men men... det verkar ju som att ST då ljuger...
STM32CubeTM is STMicroelectronics's original initiative to ease developers' life by reducing
development efforts, time and cost.
Du får fråga ST hur de tänkte när de skrev sin HAL och gjorde CubeMX, du har ju tidigare sagt att det bara är att klicka lite och inte skriva nån kod. Så det är väl så du ska göra...
Eller så har den verklighet vi andra har pratat om nu kommit ifatt dig, och det är dags att börja skaffa sig förståelse för vad som händer under HALen och lära dig C på allvar...
Jag får väll öva på färdiga exempel då och memorera?

Verkligheten har redan kommit ifatt mig för länge sedan. Problemet är att jag programmerar så lite inbyggda system, så jag hinner inte bli bra på det.
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Rick81 »

Du hittar interupt i filen
stm32f4xx_it.c

kolla i startupfilen
startup_stm32f4xxx.s

Där finns alla interuptvektorer deklarade som weak. Deklarar du en funktion i stm32f4xx_it.c så kommer processorn hoppa till den i interupt.
Testa deklarera
void TIM1_UP_TIM10_IRQHandler(void)__attribute__(( interrupt("IRQ") ));
i stm32f4xx_it.h


och sedan i stm32f4xx_it.c gör du typ
void TIM1_UP_TIM16_IRQHandler(void)
{
printf("Timer interupt");
HW_TIM_Interrupt();
__HAL_TIM_CLEAR_IT(&TimHandle, TIM_IT_UPDATE);
}

Denna funktion kommer alltså anropas varje gång som räknaren går runt.
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av SvenW »

Ja, det verkar som om dokumentationen är alltför knapp.
Det bästa sättet, kanske det enda, att förstå hur det hänger ihop är att läsa h-filer och src-filer.
Men observera, man läser inte inte filerna från pärm till pärm, utan man lär sig konfigurera och hantera sin editor.
Man klickar på ett ord, t.ex et variabelnamn eller ett funktiosnamn, och får man fram deklarationen eller definitionen.
Sedan går man vidare till nästa, och till nästa, osv. Efter ett tag brukar sakerna klarna.

Somliga säger att man skall läsa manualen, men som exemplet visar saknas den ofta eller är bristfällig.
Att lära sig hacka kod (i betydelsen att vara kunnig, att kunna göra möbler mha en yxa),
är många gånger det enda som återstår.
Man kommer inte så långt med bara CubeMX. Möjligen är den till hjälp om man redan är väl insatt i STM32xxx och biblioteken.
Skriv svar