Свежие обсуждения
Микроконтроллеры

Могу ли я начать изучение микроконтроллеров используя PIC16F74?

1 10

Привет Всем.
Добавил в прерывание по таймеру в разряде десятков код который выключает
незначащий ноль.

Сделал естественно на уровне новичка. Хотелось бы для опыта узнать,
корректен ли такой подход или нет?
Мне показалось что корректен, потому что код выполняется только в прерывании относящемся к десяткам единиц, или есть более правильные пути?
То есть я выключаю ногу если сумма меньше 10. Но ведь можно выключить если этот разряд будет равен 0.

Как правильнее?

while (!TMR0_2) // ждём
;
sevenSEG(adc_znk / 10); // делим и десятки показываем
if (adc_znk < 10) // если не нужен не значащий нолик то ............
DESIATKI = 0; // не показываем
else // в противном случае.........
DESIATKI = 1; // показываем
while (TMR0_2) // ждём
;

Nintashi: Я как раз разбираю второй урок
Это который БЛИНК? На АСМЕ ?

 

kkol: #define SAMPLES 90 // размер, в принципе если бы я понял как количество выборок увеличить
// результат был бы стабильнее на порядок, памяти не хватает

Смысл хранить массив целиком? так никакой памяти не хватит.

Интегрирование надо делать сразу в процессе выборок.

value += (ADCresult-value)>>bits

value - фильтрованое значение
ADCresult - результат очередного преобразования
bits - число бит, на которые идет сдвиг, чем больше - тем глубже фильтрация.

Суть происходящего - к текущему значению прибавляется некоторая часть от приращения на последнем преобразовании.

 

kkol: Это который БЛИНК?
Так точно... В свое время пришлось изучать ассемблер Z80, так что MPASM мне как то ближе и понятнее. Тем более, что к своему стыду, язык Си я никогда не изучал... только Паскаль, Бейсик, Клиппер, ФоксПро. Ко второму уроку я перескочил потому, что там используются задержки и цикл. Это вроде как усложнение по сравнению с просто включением светодиода, а с другой стороны это на много проще, чем другие уроки. Попутно разбираюсь с директивами ассемблера.