Problem med AVR USART TX
Re: Problem med AVR USART TX
Nu var ju det här ngn vecka sedan, men det är intressant att notera (map skitforum tråden) hur det finns kommunikationsproblem här (utöver det faktiska UART problemet som var tänkt att avhandlas).
Jag ska försöka att inte dra tråden off topic, men att icecap kallar while loopen 'dum och farlig', är onödigt aggresivt och gör att TS i stället går i försvar.
TS å andra sidan borde bara säga 'tack, jag ska ändra det', för icecap (m.fl.) har i saken rätt. En sån while loop i en ISR är att be om problem som blir svåra att hitta.
Oavsett om det är kod under arbete eller inte, så finns en stor risk att 'skräp' blir kvar när saker till synes fungerar. Att medvetet skriva dålig kod är inte försvarbart.
Kul att höra iaf att TS verkar ha kommit framåt och jag hoppas att while loopen trots allt är borta nu, även om den inte var upphovet till det faktiska problemet.
Jag ska försöka att inte dra tråden off topic, men att icecap kallar while loopen 'dum och farlig', är onödigt aggresivt och gör att TS i stället går i försvar.
TS å andra sidan borde bara säga 'tack, jag ska ändra det', för icecap (m.fl.) har i saken rätt. En sån while loop i en ISR är att be om problem som blir svåra att hitta.
Oavsett om det är kod under arbete eller inte, så finns en stor risk att 'skräp' blir kvar när saker till synes fungerar. Att medvetet skriva dålig kod är inte försvarbart.
Kul att höra iaf att TS verkar ha kommit framåt och jag hoppas att while loopen trots allt är borta nu, även om den inte var upphovet till det faktiska problemet.
Re: Problem med AVR USART TX
> Att medvetet skriva dålig kod är inte försvarbart.
Ja, det finns så många sett att vända och vrida på saker och ting...
Du har inte direkt fel, men jag skulle lika gärna kunna skriva under på att :
- Att medvetet skriva dålig kod är helt OK om man vet vad man gör.
- Att omedvetet skriva dålig kod är så klart olyckligt.
Ja, det finns så många sett att vända och vrida på saker och ting...
Du har inte direkt fel, men jag skulle lika gärna kunna skriva under på att :
- Att medvetet skriva dålig kod är helt OK om man vet vad man gör.
- Att omedvetet skriva dålig kod är så klart olyckligt.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Problem med AVR USART TX
Det händer ju rimligt ofta att man gör lite konstiga saker för att se om vissa saker fungerar (typ "kom den interrupt?") i debugsyfte.
Min kommentar var riktat mot att OM nu låsningen hade fungerat ville den enbart vara av värde om det fanns ett debug-verktyg med i spelet - och då kunde man ju ändå ställa en break-point som ville göra det samma fast bättre.
En låsning som inte låser och inte ger signal utåt är inte mycket att ha i debug-syfte.
Men en låsning som faktisk låser om en fel finns OCH signalerar om att det är vad som har hänt (t.ex. tänder en LED eller något) kan vara synnerligt bra.
Min kommentar var riktat mot att OM nu låsningen hade fungerat ville den enbart vara av värde om det fanns ett debug-verktyg med i spelet - och då kunde man ju ändå ställa en break-point som ville göra det samma fast bättre.
En låsning som inte låser och inte ger signal utåt är inte mycket att ha i debug-syfte.
Men en låsning som faktisk låser om en fel finns OCH signalerar om att det är vad som har hänt (t.ex. tänder en LED eller något) kan vara synnerligt bra.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Problem med AVR USART TX
I interruptrutinerna för DMA i STM32F har jag while loopar eftersom det ibland inte fungerar att cleara interrupten på första försöken.
Det är möjligt att det är fixat i kislet nu men eftersom det fungerar har jag ingen lust att testa utan.
Kod: Markera allt
/* clear interrupts */
do {
DMA1->LIFCR = DMAALLIF3;
lisr = DMA1->LISR;
} while (DMAALLIF3 & lisr);
Re: Problem med AVR USART TX
Jag tycker det där ser riktigt farligt ut. Du kan inte lägga en räknare på och ge upp efter x antal försök? Vad vet jag hur resten av din kod ser ut, det kanske inte hjälper att den kan misslyckas utan då är allt förlorat ändå. Men precis som icecap var inne på, det där kan ju hänga och man bara fattar inte vad som kan vara fel. Det kanske skulle kunna vara ok om du har watchdog och vill tvinga fram en reset, men då borde det framgå tydligt (kommentar).lillahuset skrev:I interruptrutinerna för DMA i STM32F har jag while loopar eftersom det ibland inte fungerar att cleara interrupten på första försöken.Det är möjligt att det är fixat i kislet nu men eftersom det fungerar har jag ingen lust att testa utan.Kod: Markera allt
/* clear interrupts */ do { DMA1->LIFCR = DMAALLIF3; lisr = DMA1->LISR; } while (DMAALLIF3 & lisr);
Jag hade inte kunnat sova om natten om jag visste att jag hade en sån konstruktion, särskilt om man inte kan 'lita' på hårdvaran.
Sen inser jag själv att jag uttryckte mig klantigt. Visst kan man koda QnD, bara få något att funka. Jag tänkte kanske mer på implementera något som man vet är skevt redan från början, eller att använda könsord för tempvariabler t.ex. Sånt glöms bort och helt plötsligt är det incheckat.
Det är helt enkelt lättare att försöka göra så 'rätt' som möjligt från början.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Problem med AVR USART TX
Jag tycker det är en utmärkt lösning eftersom det är helt uppenbart att det har skitit sig om det skiter sig. Det vore mycket värre om det ibland försvann data pga interrupten för DMA inte fungerar som de ska. Ursprunget är en "work around" från ST. Det har snurrat i hundratals burkar i över fem år.
Re: Problem med AVR USART TX
Tja, det kan du ju tycka. Och jag kan tycka att sådär borde det inte se ut.
Jag tänker inte bråka om det, det är din kod, dina prylar.
Jag tänker inte bråka om det, det är din kod, dina prylar.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping