0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 5
1

Проблема с таймер/счётчиком 0 на Attiny13A

06.07.2022, 15:11. Показов 1214. Ответов 11

Author24 — интернет-сервис помощи студентам
Возникла проблема при изучении работы таймер/счетчика 0. Камень должен мигать светодиодами каждую секунду, но вместо этого не происходит вообще ничего. Я пробовал менять регистр OCR0, менять вектор прерывания. Ничего не изменилось, абсолютно ничего, светодиоды просто не горят (светодиоды исправны, я проверил)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#define F_CPU 9600000UL
 
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
 
unsigned long int timer, timerLast;
 
ISR(TIM0_COMPB_vect)
{
    
    timer++;
    
}
 
int main(void)
{
    
    DDRB = 0b111111;
    PORTB = 0b000000;
    
    TCCR0B |= (1<<CS01) | (1<<CS00);
    TIMSK0 |= (1<<OCIE0B);
    TCCR0A |= (1<<WGM01);
    OCR0B = 142;
    sei();
    
    while (1) 
    {
    
        if (timer - timerLast >= 1000)
        {
            
            timerLast = timer;
            
            PORTB = 0b111111;
            _delay_ms(200);
            PORTB = 0b000000;
            
        }
    
    }
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2022, 15:11
Ответы с готовыми решениями:

Кухонный таймер на Attiny13a. Точность при Internal OSC
Задали мне тут домашние смастерить таймер на кухню. Требуется выставлять время от 1 минуты до 9...

Плеер: не получается связать таймер со счетчиком времени дорожки и трекбаром
Доброго времени суток! Подскажите пожалуйста, почему не получается связать таймер со счетчиком...

Проблема со счетчиком
см рисунок.

Проблема с счетчиком
Всем здрасте. Возможно этот вопрос уже был. В Delphi соединил базу Access. В базе сделал таблицу...

Проблема со счетчиком помогите
Не хочет показываться показываться счетчик рамблера, где ошибка??? И еще если не сложно подскажите...

11
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,012
07.07.2022, 09:33 2
C
1
timer - timerLast >= 1000
Что делает эта беда?
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
07.07.2022, 09:53 3
Что делает эта беда?
Переменная timer постоянно увеличивается. И не сбрасывается.
Эта беда проверяет, что прошла секунда.

Добавлено через 8 минут
Должно несколько раз мигнуть, пока переменная не переполнится.
Потом или раз в несколько секунд будет мигать или погаснет.

Добавлено через 1 минуту
Переменные не инициализированы. В них мусор.
Может сразу переполнение наступает.
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,012
07.07.2022, 10:07 4
C
1
(1<<WGM01)
Где OCR0A?

Добавлено через 1 минуту
Цитата Сообщение от Grey Посмотреть сообщение
постоянно
Вопрос к тс.
0
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 5
07.07.2022, 12:04  [ТС] 5
Получается, необходимо приравнять переменные к нулю?
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
08.07.2022, 07:31 6
Лучший ответ Сообщение было отмечено Urgebt как решение

Решение

Получается, необходимо приравнять переменные к нулю?
Да. Но ещё настройки таймера посмотреть как предложил pyzhman.
И код лучше переделать.
C
1
2
3
4
if (timer >= 1000){
  timer = 0;
  //
}
1
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 5
08.07.2022, 14:23  [ТС] 7
Огромное спасибо за помощь, изначально я пытался использовать другую конструкцию, но она не работала должным образом (вместо того, чтобы мигать каждые 10 секунд, мк мигал каждые 22 секунды). Я попробовал воткнуть другую тини, прошить её и она заработала правильно. Видимо, в первом мк какая то проблема с внутренним тактовым генератором.
Цитата Сообщение от Grey Посмотреть сообщение
if (timer >= 1000){
  timer = 0;
  //
}
Спасибо за предложенный вариант
0
sharpey
09.07.2022, 11:54
  #8

Не по теме:

Позвольте вопрос: Вы планируете писать на Си для МК, имеющим всего 1 Кб флэш-памяти, 64 байта внутрисистемно программируемой EEPROM памяти данных и 64 байта встроенной SRAM памяти (статическое ОЗУ)? Может лучше начать с ATmega8A или ATmega328P? Там ресурсов и периферии побольше. Никогда не понимал такого аскетизма, если не писать на ассемблере.

0
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 5
10.07.2022, 17:31  [ТС] 9
Цитата Сообщение от sharpey Посмотреть сообщение
Позвольте вопрос: Вы планируете писать на Си для МК, имеющим всего 1 Кб флэш-памяти, 64 байта внутрисистемно программируемой EEPROM памяти данных и 64 байта встроенной SRAM памяти (статическое ОЗУ)? Может лучше начать с ATmega8A или ATmega328P? Там ресурсов и периферии побольше. Никогда не понимал такого аскетизма, если не писать на ассемблере.
Когда я покупал тини, я ничего не знал о мк и посчитал, что для гидропоники и гроубокса этого будет достаточно
0
612 / 373 / 69
Регистрация: 21.09.2008
Сообщений: 1,277
11.07.2022, 11:15 10
Urgebt, понятно. Читали эту статью?
0
0 / 0 / 0
Регистрация: 06.07.2022
Сообщений: 5
11.07.2022, 16:42  [ТС] 11
Цитата Сообщение от sharpey Посмотреть сообщение
Читали эту статью?
Да, натыкался на неё, но у меня все гораздо проще. Погружной насос периодически включается и прогоняет раствор по трубам, в которых установлены горшки с растениями. Главная проблема - алгоритм, который будет включать и выключать насос на разные промежутки времени. Я тут набросал нечто, но работать его пока заставить не получилось.

Цитата Сообщение от sharpey Посмотреть сообщение
Позвольте вопрос: Вы планируете писать на Си для МК, имеющим всего 1 Кб флэш-памяти, 64 байта внутрисистемно программируемой EEPROM памяти данных и 64 байта встроенной SRAM памяти (статическое ОЗУ)? Может лучше начать с ATmega8A или ATmega328P? Там ресурсов и периферии побольше. Никогда не понимал такого аскетизма, если не писать на ассемблере.
А знание ассемблера обязательно, если я собираюсь писать что то серьёзнее, чем просто переключатель насоса?
0
612 / 373 / 69
Регистрация: 21.09.2008
Сообщений: 1,277
11.07.2022, 20:15 12
Цитата Сообщение от Urgebt Посмотреть сообщение
знание ассемблера обязательно, если я собираюсь писать что то серьёзнее, чем просто переключатель насоса?
Нет, не обязательно. Обычно ассемблер используют в МК с малыми ресурсами, поскольку компилятор Си даёт не всегда оптимальный код. Но сложность и стоимость разработки ПО на ассемблере по сравнению с Си гораздо выше. Поэтому Си и даже С++ - оптимальный выбор разработчика.
0
11.07.2022, 20:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2022, 20:15
Помогаю со студенческими работами здесь

Ряд Тейлора: e^(-x). Проблема со счётчиком
Задание: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда...

Проблема с третьим таймером-счетчиком на Atmega128
Всем привет. Друзья нужна ваша помощь. Работаю с: Atmega128 в CodeVision AVR (2.04.4a). Запустил...

Проблема с файловым счетчиком для страниц
Проблема такая записывает в файл вида: home|13 about|9 news|63 в случае если увеличивается...

Проблема с обращением к файлу со счётчиком в Session_OnStart.
в файле Global.asa имеется след. код: &lt;SCRIPT LANGUAGE=VBScript RUNAT=Server&gt; Sub...

Депозит. Проблема с счетчиком,если вписать больше 17 месяцев , счетчик посчитает в 2 раза больше
Добрый день ! Недавно писал код для подсчета депозита и если вписать больше 17 месяцев , счетчик...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru