Hur nollställer man en STM32?

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

Re: Hur nollställer man en STM32?

Inlägg av Rick81 »

Al: Jag tycker det är bra att du försöker dig på att lära modifiera enskilda bitar på registernivå för att lära dig processorn.

Men jag tror att 8bitarsrävarna lurat dig lite....på PIC/AVR kör man ofta bitoperationer på register för ex I/O men på stm32 som är mer komplicerade och mycket smidigare använda färdiga bibliotek som HAL eller LL.

Jag har jobbar med STs processorer i 12 år i 7 olika familjer och jag kör nästan alltid plattformslib på pheripherals.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av Al_Bundy »

Rick!

Hehe. 8-bitsrävarna :mrgreen: Det måste vara Sodjan, TomasL, IceCap. Det kan nog stämma bra. Är inte 8-bits uC rätt ute nu? Dyrt, seg och drar mycket ström. Nu menar jag självklart PIC och AVR. Framförallt ATmega

Så du menar att om man hamnar på ett jobb som jobbar med programmering av inbyggda system, då är det garanterat att ett färdigt HAL-bibliotek finns tillgängligt?

För mig låter det logiskt att färdiga bibliotek finns färdiga när det kommer till att göra jobbet så snabbt som möjligt. Jag skulle aldrig betala någon för att lösa ett problem, men först bygga upp ett HAL-bibliotek, om det redan finns.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av Al_Bundy »

AndLi skrev:
Al_Bundy skrev:

Kod: Markera allt

GPIOx->PUPDR |= (0x02 << 4);
Det där kommer bara funka om värdet på bitarna du försöker skriva till är 0x00 eller 0x02. Du påverkar alltså bara en bit inte två som du önskar...

Så det är ingen universallösning...
Nerre skrev:
Al_Bundy skrev: Japp. Bara en bit, vilket jag också vill att det ska bli :) Då sätter jag pull-down på PUPDR2.
Ja, om du vill att alla andra bitar ska vara noll så är det ok. Men om du vill sätta flera pull-down så måste du alltså sätta alla vid samma skrivning, annars kommer bara den sista du skriver att "ta", eftersom du skriver både ettor och nollor varje gång. Så om du bara skriver en etta så skriver du resten med nollor.

Det man normalt gör är att man "bygger upp" en variabel med det värde man vill ha och sen skriver den till registret.

Börja med att sätta variabeln till noll.
Använd sen =| för att ettställa alla de bitar som ska vara ett.
Sen skriver du variabeln till registret.
Hur ofta är det att en sådan arbetsmetodik används ute i verkligheten? Inte för att påstå att detta forum besitter övernaturliga fenomen direkt. ;)
Användarvisningsbild
AndLi
Inlägg: 17050
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av AndLi »

Finns absolut inga garantier för några färdiga HAL...
Jobb med sånt färdigt lär ju gå till någon lågavlönade indier...

8bitars är definitivt inte ute, tom 8051 används i nyutveckling av asics då sett är en ett billigt uP IP att använda..
hummel
Inlägg: 2259
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hur nollställer man en STM32?

Inlägg av hummel »

Al_Bundy skrev:
AndLi skrev:
Al_Bundy skrev:
Hur ofta är det att en sådan arbetsmetodik används ute i verkligheten? Inte för att påstå att detta forum besitter övernaturliga fenomen direkt. ;)
Read-modify-write är normalt. Grundläggande arbetssätt.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Hur nollställer man en STM32?

Inlägg av Mr Andersson »

> Read-modify-write är normalt. Grundläggande arbetssätt.
Absolut, men det finns ju flera nyanser av rmw..

Läs register, ändra pinne 1, skriv register.
Läs register, ändra pinne 2, skriv register.
etc.

eller

Läs register, ändra alla pinnar, skriv register.

Det senare är ju att föredra. Dels för att det är färre bussoperationer och högre prestanda,
men också för att det är lättare att upptäcka misstag utan att tappa fokus då man bara behöver inspektera en skrivning.

Angående HALs.. Visst, om man har tänkt stanna på den exakta hårdvaran resten av livet sparar det nog ganska mycket tid.
STs HAL är inte 100% kompatibel mellan olika processormodeller, för att inte tala om ifall man byter till en annan tillverkare.
Skriv en egen HAL (som i sin tur kan använda tillverkarkod), eller möjligen använd CMSIS istället för något tillverkarspecifikt.
Det tar mer tid i början, men man tjänar på det om man har tänkt att koden ska leva länge.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av Al_Bundy »

AndLi skrev:Finns absolut inga garantier för några färdiga HAL...
Jobb med sånt färdigt lär ju gå till någon lågavlönade indier...

8bitars är definitivt inte ute, tom 8051 används i nyutveckling av asics då sett är en ett billigt uP IP att använda..
När jag tittar på en ATMega8 och en STM32 så ser man att man får helt enkelt mer för pengarna när man köper en STM32

Atmega8
https://www.elfa.se/sv/microcontroller- ... gKMivD_BwE

Stm32
https://www.elfa.se/sv/microcontroller- ... track=true

Det var denna orsak varför jag bytte till STM32 från AVR.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av Al_Bundy »

Mr Andersson skrev:> Read-modify-write är normalt. Grundläggande arbetssätt.
Absolut, men det finns ju flera nyanser av rmw..

Läs register, ändra pinne 1, skriv register.
Läs register, ändra pinne 2, skriv register.
etc.

eller

Läs register, ändra alla pinnar, skriv register.

Det senare är ju att föredra. Dels för att det är färre bussoperationer och högre prestanda,
men också för att det är lättare att upptäcka misstag utan att tappa fokus då man bara behöver inspektera en skrivning.

Angående HALs.. Visst, om man har tänkt stanna på den exakta hårdvaran resten av livet sparar det nog ganska mycket tid.
STs HAL är inte 100% kompatibel mellan olika processormodeller, för att inte tala om ifall man byter till en annan tillverkare.
Skriv en egen HAL (som i sin tur kan använda tillverkarkod), eller möjligen använd CMSIS istället för något tillverkarspecifikt.
Det tar mer tid i början, men man tjänar på det om man har tänkt att koden ska leva länge.
Så du menar att det är mer värt att sätta sig ned och läsa datablad och skriva till register, än att förlita sig på att ett värdigt HAL-bibliotek skall alltid finnas färdigt när man kommer till jobbet?

Nej, jag jobbar inte med inbyggda system. Men jag föredrar oftast att använda riktiga produkter än leksaker.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43150
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av sodjan »

Vilken jäkligt korkad attityd... Men lycka till i alla fall!
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45175
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av TomasL »

AlBundy skrev:Hehe. 8-bitsrävarna Det måste vara Sodjan, TomasL, IceCap. Det kan nog stämma bra. Är inte 8-bits uC rätt ute nu? Dyrt, seg och drar mycket ström. Nu menar jag självklart PIC och AVR.
Det är nog 10 år sedan jag skrev ett program för en 8-bitare.
De senaste åren (dvs 10 år eller så) så använder jag enbart 32-bitars MIPS, i Microchips tappning.
EN 8-bitars processor kan vara betydligt snabbare än din stm32a, och drar garanterat betydligt mindre ström, samt förmodligen billigare.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Hur nollställer man en STM32?

Inlägg av Rick81 »

Så du menar att om man hamnar på ett jobb som jobbar med programmering av inbyggda system, då är det garanterat att ett färdigt HAL-bibliotek finns tillgängligt?
Nej. Men det är ett av de kriterierna man tittar på när man väljer en processor för ett projekt. I majoriteten av av alla projekt med inbyggda system tar utveckling av mjukvaran mer tid än utveckling av hårdvara och att ex slippa läsa datablad för enkla saker som att ex sätta en GPIO som input med pulldown så är detta att föredra. Sen är det inte så att HAL är 100% i alla lägen och man kommer inte helt undan läsa datablad.
Finns absolut inga garantier för några färdiga HAL...
Jobb med sånt färdigt lär ju gå till någon lågavlönade indier...
Öhm..NEJ....om du nu missat det är STM32 en vanlig processor i ingenjörssverige...och alla familjer av STM32 har ett plattformsbibliotek

Angående HALs.. Visst, om man har tänkt stanna på den exakta hårdvaran resten av livet sparar det nog ganska mycket tid.
STs HAL är inte 100% kompatibel mellan olika processormodeller, för att inte tala om ifall man byter till en annan tillverkare.
Skriv en egen HAL (som i sin tur kan använda tillverkarkod), eller möjligen använd CMSIS istället för något tillverkarspecifikt.
Det tar mer tid i början, men man tjänar på det om man har tänkt att koden ska leva länge.
Jag brukar kapsla in HAL/std pheripheral library i ett eget plattformsbiblotiek. Sedan är det enkelt byta till annan processor. Gjort detta ett antal ggr hittills och kommer nog bli flera.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Hur nollställer man en STM32?

Inlägg av Mr Andersson »

> Jag brukar kapsla in HAL/std pheripheral library i ett eget plattformsbiblotiek. Sedan är det enkelt byta till annan processor. Gjort detta ett antal ggr hittills och kommer nog bli flera.

Jo det var det jag menade med att skriva en egen HAL. (Fast tekniskt sett blir det kanske VAL (vendor abstraction) istället för hardware abstraction :D)
Det är ju inga problem att återanvända tillverkarkod. Dumt att uppfinna hjulet på nytt som man brukar säga.
Men se till att samla all kod som rör hårdvaran på ett ställe istället för att sprida ut den över hela kodbasen.
Det är mycket lättare att byta/uppgradera hårdvaran om man bara behöver ändra ett ställe.
Användarvisningsbild
jesse
Inlägg: 9233
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Hur nollställer man en STM32?

Inlägg av jesse »

Al_Bundy skrev:
AndLi skrev:Finns absolut inga garantier för några färdiga HAL...
Jobb med sånt färdigt lär ju gå till någon lågavlönade indier...

8bitars är definitivt inte ute, tom 8051 används i nyutveckling av asics då sett är en ett billigt uP IP att använda..
När jag tittar på en ATMega8 och en STM32 så ser man att man får helt enkelt mer för pengarna när man köper en STM32

Atmega8
https://www.elfa.se/sv/microcontroller- ... gKMivD_BwE

Stm32
https://www.elfa.se/sv/microcontroller- ... track=true

Det var denna orsak varför jag bytte till STM32 från AVR.
Att Atmega8 är dyr beror nog mest på att den är gammal. Andra Atmega kan kosta mellan 11-18 kr/st ungefär.
Användarvisningsbild
AndLi
Inlägg: 17050
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Hur nollställer man en STM32?

Inlägg av AndLi »

Rick81 skrev:
Finns absolut inga garantier för några färdiga HAL...
Jobb med sånt färdigt lär ju gå till någon lågavlönade indier...
Öhm..NEJ....om du nu missat det är STM32 en vanlig processor i ingenjörssverige...och alla familjer av STM32 har ett plattformsbibliotek
Jag använder STM32 i flera projekt, och visst har det ett HAL, men det är ju knappast komplett eller bugfritt, eller användbart om det behöver gå undan...
Funkar säkert ypperligt om man ska blinka med lite ledar tidsokritiskt, eller annat som HAL utvecklaren tänkt sig...
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Hur nollställer man en STM32?

Inlägg av Rick81 »

I detta fall handlar det just om att blinka några LED tidsokritiskt?? Och om du nu använder STM32 så antar jag att du inte är en lågavlönad indier??

Får inte ihop dina argument riktigt...
Skriv svar