Jurkins Ierakstīts Aprīlis 9, 2017 Share Ierakstīts Aprīlis 9, 2017 Ahoi! Ņēmos tātad lēnītiņām ar struktūrām, unioniem un pointeriem iekš CodeLite. Kad mana izvēlne sāka strādāt, tā kā gribējās, tad nolēmu pamēģināt pārcelt šo uz Arduino. Aizcēlu un mēģināju visus meņuškas datus salikt flešā iekš MenuTree.h. Pa ātro. Protams, ka nestrādā. Sāku skatīties... Paņēmu svaigu, tīru skeču tikai ar Serial.begin iekšā. Ja aizkomentē rindu #include "MenuTree.h", tad viss ir labi (nu saprotams) Bet, ja nē, tad konsole drukā nonstopā ... "ŽoooooooooŽooooooooooŽoooooooo..." . Gaidu, kad izdrukās "...paaaaaapaaaaapaaaa", bet nekā . Uzmetot aci uzmanīgāk, kļuva skaidrs, ka nevar rakstīt tā, kā es tur esmu uzrakstījis, bet tomēr smieklīgi. Arduino arī māk pateikt, ka ir žo... sketch_apr09c.ino MenuTree.h Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 9, 2017 Share Aprīlis 9, 2017 Neko nevar saprast ko tu tur esi domājis. Starpcitu header failos mainīgos nedefinē, otrāmkārtām uzliec header guardu #ifndef MENU_TREE_H #define MENU_TREE_H .... bla bla bla ..... #endif Link to comment Share on other sites More sharing options...
Jurkins Aprīlis 9, 2017 Author Share Aprīlis 9, 2017 Nu šitas, vienkārši, ir nejauši sanācis joks. Pārnesu kodu no CodeLite uz Arduino, pietjūnēju (ne visu, kā pēc tam izrādījās) un pēc tam meklēju iemeslu kāpēc kods kompilējas, bet arduino uzkaras. Atklājās, ka problēma ir tajā hedera failā, kurā ir tikai dati salikti PROGMEM atmiņā. Paņēmu tīru, jaunu skeču, ierakstīju divas rindas - palaist seriālo un izprintēt svītru. Rezultātā notikās tas, ko rakstīju. Tā arī nesaprotu, kā datu ierakstīšana var ietekmēt seriālo izvadu. Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 9, 2017 Share Aprīlis 9, 2017 https://www.arduino.cc/en/Reference/PROGMEM Link to comment Share on other sites More sharing options...
Jurkins Aprīlis 9, 2017 Author Share Aprīlis 9, 2017 (labots) Paldies, uz šo jau esmu diezgan daudz sāls izēdis. Programma strādā, viss ir kārtībā. Vienīgi jocīgi, ka ierakstot konstantus datus flešā un nekā ar šiem nedarot, vispār tos neaiztiekot, notiek piemēram šāds joks ar seriālo izvadu. sketch_apr09b_menu_class_v1.0.ino MenuTree.h Labots Aprīlis 9, 2017 - Jurkins Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 9, 2017 Share Aprīlis 9, 2017 Ai, ja godīgi, tad slinkums iedziļināties. Tā ir ar visiem tiem Arduino, tak viņiem jānodrošina tas, ka kods ies gan uz AVR, gan ARM, gan Intel, kur katra ir pilnīgi atšķirīga arhitektūra, tapēc brīnums ka vispār kautkas tur strādā. Ja jau tu gribi rakstīt priekš AVR, tad kapēc nelieto Atmel Studio un miers, varēs gan normāli debugot, gan lietot visādas citas izvirtības. Link to comment Share on other sites More sharing options...
Jurkins Aprīlis 9, 2017 Author Share Aprīlis 9, 2017 Vispār jau nepatīk man tas Arduino, pārsvarā rakstu Atmel Studio, bet neesmu pagaidām atradis risinājumu tādai lietai. Lūk, piemēram šoreiz - lai pārbaudītu, kā tā meņuška strādā, es arduino vienkārši vietā, kur būtu kaut kāds "myLCD.writeilne(menustring1)" es ierakstu Serial.println(menustring1). A bet kā pareizāk šādu debagošanu veikt Atmel Studio? Assmblerā tur debagošana notiek forši, a bet c/c++ lielākā daļa mainīgo, ko salieku iekš "watch" vispār visu laiku ir bez vērtībām. It kā jau saprotu, kāpēc tas tā ir, bet kaut kā vēl neesmu iemācījies darīties pareizi. Link to comment Share on other sites More sharing options...
AndrisBB Aprīlis 9, 2017 Share Aprīlis 9, 2017 Ieliec breakpointu tanī vietā kur vajag un skaties, kas notiek ar to mainīgo. Un vaitad Atmel Studio printf nevar uztaisīt? Neatceros kādu bibliotēku (stdlib, newlib vai kautkādu viņu pašu) AVR lieto, bet nu ideja visām līdzīga, uzraksti mini funkciju, kura raksta uz UARTU un tad implememente writechar kura rakstīs uz UARTU. Reku cilvēki vienkārši izmanto fprintf http://www.avrfreaks.net/forum/how-use-printf-uart vai reku https://startingelectronics.org/articles/atmel-AVR-8-bit/print-float-atmel-studio-7/ Link to comment Share on other sites More sharing options...
Jurkins Aprīlis 9, 2017 Author Share Aprīlis 9, 2017 Nu taisnība jau Tev ir. Vienkārši jāiesāk. Ar tiem breikpointiem gan... lielākā daļa manu breakpointu paliek neaktīvi, optimizācija nostrādā vai. Assemblerā viss bija vienkārši, šeit bija pārsteigums. Breikpointi neaktīvi, mainīgie neparādās... Pēdējo reizi, lai pārbaudītu, vai mana programma pareizi rēķina SI4432 reģistru vērtibas vienkārši tupa rakstīju šamās portā. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!