Nie mam co prawda wielkiego doświadczenia w programowaniu. Elektroniką amatorsko interesowałem się od dawna i około roku temu zacząłem się uczyć programowania AVR-ów w C. Od tamtego czasu udało mi się już sklecić kilka projektów, więc mniej-więcej już jakieś doświadczenie mam. ;)
Pomyślałem, że warto byłoby spróbować z inną platformą i pobawić się z wbudowanymi systemami na Linuksie. Na biurku od jakiegoś czasu leży Raspberry Pi. Zainstalowałem WiringPi, podpiąłem diodę LED do pinów GPIO i pomigałem nią przez chwilę, potem przyszedł czas na wyświetlacz 2x16. Zanim jednak zabiorę się za dalsze eksperymenty, wolałbym rozwiać kilka wątpliwości.
1) Środowisko programistyczne. Swoje RPi obsługę zdalnie, przez SSH. Nie mam do niego podpiętego monitora i klawiatury, nie korzystam też z żadnego pulpitu zdalnego. Jestem skazany na pisanie w nano, czy też może jest jakieś rozwiązanie, które umożliwiłoby mi pisanie i kompilowanie programów na windowsowej maszynie (analogicznie do hex-ów dla Atmegi)? Bo jedyną alternatywą jaka przychodzi mi do głowy jest udostępnienie folderu przez SMB, pisanie pod Windowsem, a kompilowanie z wiersza poleceń. 2) Jak to właściwie jest z wielozadaniowością i wykorzystaniem zasobów systemowych? Czy dobre nawyki z mikrokontrolerów zachowują aktualność w świecie Linuksa? Chodzi mi głównie o to, czy również niewskazane jest często korzystanie z delay-ów i zamiast tego powinienem jak najszybciej "przemiatać" pętlę główną, a opóźnienia realizować na timerach? W jaki sposób pisać kod, żeby minimalizować zużycie zasobów? 3) Czy możliwe jest współdzielenie interfejsów pomiędzy programami? Nie chodzi mi tutaj o takie peryferia jak bluetooth czy Ethernet, ale np. o SPI albo I2C. Jeśli skonfiguruję sobie pod systemem obsługę DAC-a albo RTC pod I2C, będę mógł nadal używać innych urządzeń na tej magistrali z poziomu np. wiringPi? To samo pytanie tyczy się także SPI.I tak przy okazji: Ktoś z was zna może jakąś bibliotekę do przewijania większej ilości tekstu przez wyświetlacz 2x16? Niby mniej-więcej wiem jak mógłby wyglądać kod realizujący takie zadanie, ale jeśli ktoś już otworzył te drzwi, po co je wyważać? Poza tym zakładam, że jeśli ktoś już to napisał, to zrobił to lepiej, niż ja byłbym w stanie. ;)