12-07-2022, 01:46
Zmienna amp jest 32bit.
Rejestr ICR1 jest 16bit.
W kodzie masz:
Jedna komórka EEPROM pomieści jeden bajt, więc po pewnych perturbacjach do ICR1 zapiszesz maksymalnie liczbę 8bit, czyli regulacji częstotliwości jakby nie masz.
Do tego flashem szastasz jak byś go miał na pęczki.
Pomyśl nad poradami Kaczakata, oraz zastanów się nad typami zmiennych.
Po lekkiej modyfikacji, kod będzie działał. (przynajmniej u mnie działa)
Do zapisu aktualnej wartości, dodaj sobie oddzielny przycisk, wtedy EEPROM posłuży ci na wieki.
------------------
Sponsorem dzisiejszego wpisu jest hasło: DEBOUNCING.
Jak ktoś mądry napisał - "funkcja nie może zostać uruchomiona, dopóki nie upłynie określony czas bez wywołania tej funkcji."
To się tyczy drgań przycisków, jak i inkrementowania zmiennej amp. Bo gdy wywalisz z loop obsługę seriala, to nawet nie zauważysz jak szybko zmienia się nasza zmienna.
Do tego zastanów się, co się stanie jeśli zmienna osiągnie maksymalną/minimalną wartość dla danego typu, a ty dalej masz wciśnięty przycisk. Musisz zastosować jakieś warunki brzegowe.
-------------------
Rejestr ICR1 jest 16bit.
W kodzie masz:
Kod:
ICR1 = amp;
Jedna komórka EEPROM pomieści jeden bajt, więc po pewnych perturbacjach do ICR1 zapiszesz maksymalnie liczbę 8bit, czyli regulacji częstotliwości jakby nie masz.
Do tego flashem szastasz jak byś go miał na pęczki.
Pomyśl nad poradami Kaczakata, oraz zastanów się nad typami zmiennych.
Po lekkiej modyfikacji, kod będzie działał. (przynajmniej u mnie działa)
Do zapisu aktualnej wartości, dodaj sobie oddzielny przycisk, wtedy EEPROM posłuży ci na wieki.
------------------
Sponsorem dzisiejszego wpisu jest hasło: DEBOUNCING.
Jak ktoś mądry napisał - "funkcja nie może zostać uruchomiona, dopóki nie upłynie określony czas bez wywołania tej funkcji."
To się tyczy drgań przycisków, jak i inkrementowania zmiennej amp. Bo gdy wywalisz z loop obsługę seriala, to nawet nie zauważysz jak szybko zmienia się nasza zmienna.
Do tego zastanów się, co się stanie jeśli zmienna osiągnie maksymalną/minimalną wartość dla danego typu, a ty dalej masz wciśnięty przycisk. Musisz zastosować jakieś warunki brzegowe.
-------------------
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.