trol.six napisał: R-MIK napisał: Auto napisał:
satanistik napisał:
Program w przerwaniu od timera mierzy wartość z ADC
Rozwiązanie dość kiepskie. Wchodzi w przerwanie, wyzwala pomiar, czeka na wynik W PRZERWANIU!,
Nie twierdze że to jest rewelacja, ale samo w sobie nie powinno prowadzić do błędu w stylu "brak kolejnych pomiarów ADC".
"Oczywista oczywistość". Tyle, że bez kodów źródłowych (secret), schematów (top secret) to pozostaje szklana kula, karty Tarota, wróżenie z fusów czy Wróżbita Maciej.
Co do stosu to w Bascom faktycznie pułapka. Zresztą w innych językach też. W ASM najłatwiej zapanować nad stosem, w C już trochę trudniej (sterta). W bardziej złożonych aplikacjach z małą ilością RAM kontroluję stos. W ASM nie ma problemu, w C da się to zrobić. Jak to skutecznie zrobić w BASCOM, nie mam pojęcia.
Fakt, że nie widzimy kodu, na ile jest złożony i czy istnieje prawdopodobieństwo przepełnienia stosu. Raczej w to wątpię, przeważnie przepełnieni stosu kończy się resetem.
Jeśli tylko nie działa pomiar ADC (pewnie pozornie nie działa, bo może do niego nie dochodzi), to trzeba prostym monitorem (brak debugowania w M8, w BASCOM zresztą też) zbadać w jakim stanie znajduje sie program. Jaki fragment wykonał się jaki nie. Jak ustawione sa kluczowe zmienne zwiazane z pomiarami i jaki jest stan rejestrów ADC.
Przy okazji sprawdziłem, czy WDG wywoła IRQ gdy zadziała w czasie obsługi przerwania. Okazało się, że nie. Nastąpił reset CPU. Sytuacja dotyczyła IRQ z atrybutem BLOCK. No to wydaje sie byc logiczne.
Moderowany przez dondu:Post raportowany.
Zamiast wróżyć, poczekajcie proszę na pokazanie programu przez autora.