artykuły

[microC, AVR] Jak wykonać kod jeszcze przed wejściem w main()?

19:17
Sat, 20 September 2014

Zdarzyło mi się, przy przesiadce z ATmega32 na ATmega128, że kod Ÿnie działał. Nie mogłem dojœć co jest przyczyną. Nie działały najprostsze rzeczy (jak choćby ustawianie bitu na porcie). Skróciłem program do minimum (napisałem jedynie trzy linijki instrukcji w funkcji main). Odpaliłem - nie działa. Utworzyłem nowy projekt - odpaliłem - działa. Okazało się, że miałem jeszcze zadeklarowane obiekty (np. sterownik DS1307). Konstruktory tych obiektów uruchamiały np. TWI, a z racji, że ATmega128 ma inaczej konfigurowane TWI - program utykał w jakiejśœ tam pętli. Tak więc trzeba również zwracać uwagę na otoczenie main(), a dokładniej czy nie deklarujemy jakiśœ obiektów (instancji klas), a w związku z tym, czy nie przeszkadza nam w programie to co zrobiły konstruktory tych obiektów.

Jeśli więc chcesz wykonać jakiś kod jeszcze przed wejściem w main(), napisz klasę z konstruktorem i zadeklaruj obiekt tej klasy (ale nie jako wskaźnik!).

Podobne faq:

Skomentuj

Aby zamieścić komentarz, proszę włączyć JavaScript - niestety roboty spamujące dają mi niezmiernie popalić.






Komentarze czytelników

    Nie ma jeszcze żadnych komentarzy.
    Dexter