Zdaje sobie sprawę z tego, że pomiędzy C i C++ występują pewne równice, m.in. w definicjach typów, rzutowanie jednego typu na drugi, charakterze stałych itp. Z tego powodu kompilator nieraz zgłosi jakiś błąd i będzie trzeba się trochę pomęczyć.
Teraz jednak mam do czynienia z innym problemem - kod się kompiluje, ale nie działa prawidłowo.
Sytuacja wygląda następująco:
Przerzucam się powoli na AVR C++, próbując wykorzystać biblioteki z Arduino w swoich projektach. W tej chwili udało mi się doprowadzić Arduino Ethernet library do stanu, w którym kompiluje się ona bez problemu. Działa także inicjowanie układu W5100 oraz nawiązywanie prostej komunikacji. Do debugowania potrzebuję jednak UART-a. Wziąłem więc bibliotekę Pana Mirka (ta z Green Booka) i po prostu skopiowałem ją do plików mkuart.h i mkuart.cpp. Treść plików została pożyczona z projektu (napisanego w C), w którym komunikacja po serialu działała bez najmniejszych problemów na
tej samej płytce uruchomieniowej, również mojego projektu. We właściwościach ustawiona jest ta sama wartość F_CPU, właściwa dla kwarcu na płytce.
Program skompilował się bez problemu, ale po jego wgraniu nie widziałem w terminalu żadnych danych wysyłanych przez uart_puts(). Jednocześnie płytka odpowiadała na wysyłane pakiety UDP, a więc wiadomo, że pozostały kod się wykonywał.
Taki problem może wynikać z jakichś różnic w specyfice języków C i C++, czy raczej to ja coś pomieszałem i po prostu nie widzę ewidentnego błędu, patrząc w kod?
Oczywiście później chętnie doprowadziłbym tę bibliotekę do stanu obiektowego, ale na razie chcę po prostu uruchomić kod.
Mam też nadzieję, że przeniesienie do C++ biblioteki parsującej komendy AT nie będzie zbyt skomplikowane.