Например TDA7294

Форум РадиоКот • Просмотр темы - Нескольно простых вопросов о программировании AVR на Си.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 08, 2025 03:33:39

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1499 ]     ... , , , , 75
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 06, 2025 16:27:19 
Первый раз сказал Мяу!

Зарегистрирован: Пт дек 02, 2022 00:37:17
Сообщений: 31
Рейтинг сообщения: 0
Что имеется ввиду под константой?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 06, 2025 16:29:17 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3412
Откуда: Казань
Рейтинг сообщения: 4
fomkin1912, любое число, которое не изменяется.

---
Константа в программировании — это переменная, значение которой не может быть изменено после её инициализации. Это отличает константы от обычных переменных, чьи значения могут варьироваться в процессе работы программы.
---

Совет Alex заключается в следующем - значение display быстро изменяется. И Вы, возможно, видите мельтешение цифр на индикаторе (хотя что Вы видите можно только предполагать). Вот Alex и посоветовал присвоить display какое-то конкретное число, чтобы знать, что именно должно выводиться.

А вообще, вопрос странный - в цикле переменная увеличивается от 0 до 9999 с шагом 1. Целые числа. О каких "десятых на индикаторе" говорится - непонятно.

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 06, 2025 17:01:43 
Первый раз сказал Мяу!

Зарегистрирован: Пт дек 02, 2022 00:37:17
Сообщений: 31
Рейтинг сообщения: -3
fomkin1912
А вообще, вопрос странный - в цикле переменная увеличивается от 0 до 9999 с шагом 1. Целые числа. О каких "десятых на индикаторе" говорится - непонятно.

Как раз здесь-то все понятно. Значения в разрядах индикатора устанавливаются вот здесь:
Код:
switch(segcounter)
    {
        case 0:
            PORTD = ~(SEGMENTE[display % 10000 / 1000]); // Тысячи
            break;
        case 1:
            PORTD = ~(SEGMENTE[display % 1000 / 100]); // Сотни
            break;
        case 2:
            PORTD = ~(SEGMENTE[display % 100 / 10]); // Десятки
            break;
        case 3:
            PORTD = ~(SEGMENTE[display % 10]); // Единицы
            break;
    }

А что такое константа, я знал когда Вы, вероятно, под стол пешком ходили, не сочтите за оскорбление. Тем не менее, данную простую учебную задачку понять не могу. Надеялся, что для тематического форума это плевый вопрос. Но что-то пошло не так. Дебугер мне в р...уки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 06, 2025 17:36:57 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1575
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3412
Откуда: Казань
Рейтинг сообщения: 1
А что такое константа, я знал когда Вы, вероятно, под стол пешком ходили

Что тут скажешь... Вообще, есть большая вероятность того, что когда я ходил под стол пешком, Вас ещё и в проекте не было, но Вы, похоже, считаете себя экстрасенсом раз берётесь определять возраст незнакомого человека по одному сообщению от него. А раз так, Вам нужно применить лишь малую толику своих супер способностей для разбора приведённого несложного примера динамической индикации. Не нужен Вам форум с таким мышлением и, самое главное, подходом.

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 06, 2025 22:27:41 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4593
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Что имеется ввиду под константой?
Не понятно, в чём вопрос, учитывая, что :
fomkin1912 писал(а):
А что такое константа, я знал когда Вы, ......


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 07, 2025 10:30:54 
Первый раз сказал Мяу!

Зарегистрирован: Пт дек 02, 2022 00:37:17
Сообщений: 31
Рейтинг сообщения: 0
Убил не мало времени, но разобрался, в первом приближении.
Скорость индикации таймера зависит от вот этого регистра.
Код:
TCCR2 |= (1 << CS21); // Предделитель на 8

Почему делитель влияет на функцию delay_ms(), уже другой вопрос.
PS Причем влияет с обратной пропорциональностью. Если устанавливаю делитель = 1 (без деления), таймер замедляется. Увеличиваю делитель - таймер ускоряется и начинает считать сотые доли секунды.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 07, 2025 12:15:26 
Мудрый кот

Карма: 25
Рейтинг сообщений: 482
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1771
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
При частых и быстрых прерываниях ваша задержка _delay_ms(10); вероятно, изменилась. Можете напр. перенести задержку на другой таймер. (но тогда начнут действовать другие факторы: которым следует отдать приоритет). MK не является многозадачной системой. Лучше всего распределить нагрузку МК между процессами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 07, 2025 14:49:39 
Друг Кота
Аватар пользователя

Карма: 52
Рейтинг сообщений: 2114
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 7055
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (2)
Код:
TCCR2 |= (1 << CS21); // Предделитель на 8

Почему делитель влияет на функцию delay_ms(), уже другой вопрос.
PS Причем влияет с обратной пропорциональностью. Если устанавливаю делитель = 1 (без деления), таймер замедляется. Увеличиваю делитель - таймер ускоряется и начинает считать сотые доли секунды.
Надеюсь не так увеличиваете делитель:
Код:
TCCR2 |= (2 << CS21); // Предделитель на 8
Код:
TCCR2 |= (3 << CS21); // Предделитель на 8
и т.д.

_________________
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 07, 2025 15:44:13 
Первый раз сказал Мяу!

Зарегистрирован: Пт дек 02, 2022 00:37:17
Сообщений: 31
Рейтинг сообщения: 0
CS20, CS21, CS22, по даташиту. Чукча знает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 07, 2025 19:39:16 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18884
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
veso74 писал(а):
Можете напр. перенести задержку на другой таймер.
_delay_ms() вообще не использует никакой таймер.
а частые прерывания замедляют работу программной задержки _delay_ms(). именно поэтому без предделителя задержка работает медленнее, чем с предделителем 8, когда прерывание таймера происходит в 8 раз реже, чем без предделителя.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт ноя 07, 2025 21:01:15 
Мудрый кот

Карма: 25
Рейтинг сообщений: 482
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1771
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Starichok51, да. Именно это и имел в виду (возможно, я неправильно выразился: БГ->РУ). И предложил: delay перенести на другой свободный таймер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Сб ноя 08, 2025 09:36:51 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18884
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
veso74, нет разницы, какой использовать таймер, так как прерывание любого таймера будет задерживать выполнение delay.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Сб ноя 08, 2025 10:01:57 
Мудрый кот

Карма: 25
Рейтинг сообщений: 482
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1771
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Меня не понимаете 2 раза.
Задержка можно быть выполненна оставшимся свободным таймером, а не через _delay_ms().
Однако пользователю по-прежнему приходится расставлять приоритеты: какой таймер должен выполнять какую функцию.
приоритеты: TIMER2 OVF, TIMER1 OVF, TIMER0 OVF: Table 18. Reset and Interrupt Vectors


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Сб ноя 08, 2025 12:28:01 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18884
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
если бы ты сразу написал, что задержку выполнять таймером, а ты писал название функции _delay_ms(), поэтому я тебя не понял.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вс ноя 09, 2025 04:22:48 
Первый раз сказал Мяу!

Зарегистрирован: Пт дек 02, 2022 00:37:17
Сообщений: 31
Рейтинг сообщения: 0
Для тренировки сделал задержку на 16-битовом таймере
Код:
TCCR2 |= (1 << CS20); // Предделитель не установлен
   TCCR1B |= (1 << CS10);
   TIMSK |= (1 << TOIE2)|(1<<TOIE1)

и прерывание
Код:
ISR(TIMER1_OVF_vect)
{
   display++;
}

Все работает, от частоты первого таймера вроде не зависит, но не понятно, как образуется частота счетчика. Вроде должно быть 8МГц / 65536 = 122 цикла за секунду, но индикатор крутиться раз 8-10 медленнее. Но это так, наблюдение, без цели дальнейших "раскопок".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вс ноя 09, 2025 10:42:46 
Мудрый кот

Карма: 25
Рейтинг сообщений: 482
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1771
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Как фюзы? Проверьте CKSEL. Значение по умолчанию для нового МК - 1 MHz.
(Включите логический анализатор, есть как модуль по оч. низкой цене (8 входа, 24 MHz). Показывает много, полезный инструмент).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт ноя 11, 2025 16:45:56 
Поставщик валерьянки для Кота

Карма: 34
Рейтинг сообщений: 313
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Сообщений: 2128
Откуда: Харьков
Рейтинг сообщения: 0
Цитата:
индикатор крутиться раз 8-10 медленнее

Ровно в 8 раз? Не столько проверить CKSEL, сколько CKDIV8. По названию фьюза понятно, что он делает. Если стоит (0, по умолчанию с завода так) - снять (1).

_________________
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт ноя 11, 2025 17:30:37 
Мудрый кот

Карма: 25
Рейтинг сообщений: 482
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1771
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
... секундомер на Атмеге8 ...

watchmaker, в ATmega8 ... нет fuse bit CKDIV8.
CKSEL = 0010 -> вн. RC 1 MHz
CKSEL = 0100 -> вн. RC 8 MHz


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт ноя 13, 2025 04:40:44 
Поставщик валерьянки для Кота

Карма: 34
Рейтинг сообщений: 313
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Сообщений: 2128
Откуда: Харьков
Рейтинг сообщения: 0
А, точно, это у 88 и у мелочи типа tiny25 уже CKDIV8 отдельно.

_________________
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1499 ]     ... , , , , 75

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y