Witam
Korzystam z płytki MEGA2560 przeznaczonej do Arduino. Do niej jest podłączona płytka RAMPS oraz wyświetlacz graficzny.
To oczywiście cała elektronika do drukarki 3d jednak nie o to chodzi. Rozpocząłem zabawę z tymi płytkami i chciałem po testować bootloader z karty SD. Ten działa poprawnie jednak za każdym razem a chciałem aby próbował programować ATmegę tylko gdy jest włożona karta SD oraz naciśnięty przycisk enkodera. Sprawa wydaje się bardzo łatwa jednak coś to nie chce działać jak należy.
Tak wygląda cały kod.
Kod: c
Nie ma tu nic skomplikowanego. Na początku są definicje, później ustawianie pinów i portów, a dalej nieskończona pętla sprawdzająca dwa piny. Jeden jest od detekcji karty SD a drugi od przycisku enkodera.
Dwie diody są podpięte do pinów mikrokontrolera oraz plusa zasilania. Naciśnięcie przycisku lub włożenie karty SD powinno wyłączyć diodę. Tak niestety nie jest.
Zacząłem sprawdzać kod na symulatorze ATMEL Studio 7 i odkryłem dziwną rzecz. Jeśli pin od czerwonej diody to PORTF3 to w chwili ustawienia go także ustawia się PIN F3. Na innych pinach takie coś nie występuje.
Ktoś zapyta co to ma do rzeczy. Nie wiem czy ma ale w realu diody albo w ogóle nie świecą albo zbliżanie dłoni powoduje ich zaświecanie. Zaraz będzie że jest jakieś uszkodzenie w elektronice. Jakoś nie za bardzo. Marlin to jedno z wielu oprogramowań do drukarek 3d i tu wszystko działa jak należy.
Nie wiem czemu tak jest że nawet na symulatorze są takie dziwne rzeczy.