Hur nollställer man en STM32?
Re: Hur nollställer man en STM32?
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.
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.
Re: Hur nollställer man en STM32?
Rick!
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. 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.
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. 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.
Re: Hur nollställer man en STM32?
AndLi skrev: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...Al_Bundy skrev:Kod: Markera allt
GPIOx->PUPDR |= (0x02 << 4);
Så det är ingen universallösning...
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.Nerre skrev: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.Al_Bundy skrev: Japp. Bara en bit, vilket jag också vill att det ska bli Då sätter jag pull-down på PUPDR2.
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.
Re: Hur nollställer man en STM32?
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..
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..
Re: Hur nollställer man en STM32?
Read-modify-write är normalt. Grundläggande arbetssätt.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.
-
- Inlägg: 1394
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Hur nollställer man en STM32?
> 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.
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.
Re: Hur nollställer man en STM32?
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 STM32AndLi 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..
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.
Re: Hur nollställer man en STM32?
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?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.
Nej, jag jobbar inte med inbyggda system. Men jag föredrar oftast att använda riktiga produkter än leksaker.
Re: Hur nollställer man en STM32?
Vilken jäkligt korkad attityd... Men lycka till i alla fall!
Re: Hur nollställer man en STM32?
Det är nog 10 år sedan jag skrev ett program för en 8-bitare.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.
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.
Re: Hur nollställer man en STM32?
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.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?
Öhm..NEJ....om du nu missat det är STM32 en vanlig processor i ingenjörssverige...och alla familjer av STM32 har ett plattformsbibliotekFinns 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...
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.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.
-
- Inlägg: 1394
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Hur nollställer man en STM32?
> 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 )
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.
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 )
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.
Re: Hur nollställer man en STM32?
Att Atmega8 är dyr beror nog mest på att den är gammal. Andra Atmega kan kosta mellan 11-18 kr/st ungefär.Al_Bundy skrev: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 STM32AndLi 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..
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.
Re: Hur nollställer man en STM32?
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...Rick81 skrev:Öhm..NEJ....om du nu missat det är STM32 en vanlig processor i ingenjörssverige...och alla familjer av STM32 har ett plattformsbibliotekFinns 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...
Funkar säkert ypperligt om man ska blinka med lite ledar tidsokritiskt, eller annat som HAL utvecklaren tänkt sig...
Re: Hur nollställer man en STM32?
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...
Får inte ihop dina argument riktigt...