Доброго времени суток. Программа должна мигать светодиодом и при нажатии на кнопку увеличивать частоту мигания, при достижении регистра сравнения нуля в него должно записываться первоначальное число. Собрал в железе и в протеусе, там и там почему-то программа работает сначала правильно потом генерация пропадает вообще, помогите найти ошибку.
#include <mega8.h>
#include <delay.h>
unsigned int pwm;
Исправил. Если кнопку быстро отжимать и нажимать программа работает правильно. Если немного задержать то светодиод просто горит или не горит, как бы зависает потом минуты через 2, отвисает и работает
#include <mega8.h>
#include <delay.h>
int pwm;
А вот и нет!
Пока вы удерживаете кнопку у вас повторяется =pwm-100 и в один прекрасный момент pwm = 0 а вы от него отнимаете 100 и получаете заем (переполнение) 0-100 = (65536 - 100 = 65436). В алгоритмах всегда должен быть "ограничитель". Вот типа такого
CodevisionAVR. Все равно работает не правильно, я бы сказал что он как бы "зависает" в определенном месте и через минуту "отвисает":(
Может это как то связано с тем что регистр OCR1A 16-ти разрядный?
#include <mega8.h>
#include <delay.h>
unsigned int pwm;