Onko kukaan törmännyt seuraavanlaiseen ongelmaan tai osaisiko antaa vinkkiä…?
Eli kun tulostelen sarjaporttiin (serial monitor) tulostuksia tarpeeksi kauan, niitä prosessori jumiutuu… Täyttyykö joku muisti vai mistä tälläinen voisi johtua…? Onkohan tähän ongelmaan jotain helppoa ratkaisua olemassa…?
Se koodi on niin sekavaa, että ei kehtais ennen siistimistä lähettää… Mutta ajattelin kysästä jos joku olisi törmännyt tälläiseen ongelmaan ja olisi osannut heittää jotain vinkkiä mistä jumiutuminen voisi johtua… Pitää katsoa jos ei ala selviämään ongelma, että siistisi koodin ja laittaisi sen tänne…
Sarjaportin nopeus on 57600… Ja tulostukset on ajoitettu siten, että tulostettavan nipun välissä on aina vähän väliä ajallisesti noin 5s, kun tulostetaan tulostettavat rivit putkeen (4kpl rivejä)… Ja tämä jumiutuminen tapahtuu aina noin 19:sta nipun kohdalla…
Käytäkkö mitä käyttistä. (freeRTOS / vast)
Tuli mieleen, että varattua muistia ei vapautettas tulostuksen jälkeen. Esim 20. tulostukseen ei saatas enää varattua muistia ja esim jättää koodin jumiin tai menee sekasi esim. kirjoittaa väärälle alueelle.
Mitä tarkoitat tuolla “Tuli mieleen, että varattua muistia ei vapautettas tulostuksen jälkeen.”…? Millaisessa tapauksessa muisti voisi jäädä vapauttamatta ja miten vapautus tapahtuu tulostuksen jälkeen…?
No lähinnä tuossa on kyse, jos käytetään jotain käyttistä esim freeRTOS.
Lähinnä kyse, että käytätkö malloc() ja free() tai vastaavia käskyjä ohjelmassa ja vapautetaanko kaikki varatut alueet.
Ootko koittanut ajaa debuggerilla tota? esim. AVR Dragon tai AVR JTAG ICE mk II. Tuolla näkis suoraan minne se jää odottelemaan.
Koodia näkemättä pahempi mennä sanomaan mitä on vialla.
Ongelma ratkesi viimein… Piti esitellä muuttuja koodin alussa eikä funktion sisällä… En kyllä ymmärrä, että miten se siitä pystyi johtumaan, mutta nyt kuiteskin koodi toimii ilman, että se jumiutuu oudosti…