Ну ясно же, что это не так. Тут даже знаний не надо, достаточно воображения. МК делает 4 миллиона тактов в секунду, а тут 6 тактов за секунду !!! Касаемо Вашего примера, то при частоте 9,6 МГц период равен 1 / 9 600 000 = 0.00010416666 мс. Переполнение 8-ми битного таймера произойдет через 0.00010416666 * 256 = 0.02666666666 мс. С прескаллером 256 таймер переполнится через 0.02666666666 * 256 = 6.82666666667 мс. И дело даже не в этом. У Вас в обработчике таймера стоит задержка на 10 мс. Так зачем Вы пытаетесь что-то посчитать? У Вас же весь расчет летит к чертям из-за этой задержки. Запомните раз и навсегда: никогда не используйте задержки в обработчиках прерывания. В приличном обществе таким руку не подают.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Немного времени появилось... Вот код о вышесказанном. В нем нет ничего лишнего. Просто молотит таймер а обработчик считает переполнения. Как насчитает секунду - светодиод меняет свое состояние на противоположное.
edm2007 писал(а):
Ну ясно же, что это не так. Тут даже знаний не надо, достаточно воображения. МК делает 4 миллиона тактов в секунду, а тут 6 тактов за секунду !!! Касаемо Вашего примера, то при частоте 9,6 МГц период равен 1 / 9 600 000 = 0.00010416666 мс. Переполнение 8-ми битного таймера произойдет через 0.00010416666 * 256 = 0.02666666666 мс. С прескаллером 256 таймер переполнится через 0.02666666666 * 256 = 6.82666666667 мс. И дело даже не в этом. У Вас в обработчике таймера стоит задержка на 10 мс. Так зачем Вы пытаетесь что-то посчитать? У Вас же весь расчет летит к чертям из-за этой задержки. Запомните раз и навсегда: никогда не используйте задержки в обработчиках прерывания. В приличном обществе таким руку не подают.
Аааа.. получается та величина была в микросекундах
Понятно. Для себя вывел эту формулу:
Переполнение таймера = предделитель / частота камня * размер счетного регистра = получаем микросекунды * 1000 = получаем миллисекунды
я считаю так-время=1 сук,предделитель=1024,кварц=9600000,таймер 8-ми битный,значит коэф переполнений=
1*9600000/(1024*256)=36(,62)
для 0,1 сек=
0,1*9600000/(1024*256)=3(,66)
в теме "таймер на баском авр" я писал подробности
Понадобилось мне сделать контроллер световых эффектов. Вернее разработать на замену различного китайского одноразового барахла. Поискал в интернете и решил сам разработать и написать прошивку. Выбрал Tiny13 как самый дешевый из того что есть в наших магазинах. (Мне нужно довольно много контроллеров - работаю в Горсвете и мы обеспечиваем иллюминацию городских елок) BASCOM выбрал потому что легко освоить (потратил всего день) все сделал и даже работает. Можете подсказать что можно оптимизировать в программе? Хотел бы добавить еще эффектов но память МК уже задействована на 97%. Программа прямая как рельса - единственное что задержку оформил подпрограммой
Спойлер
Bear2011 писал(а):В смысле ... с помощью DATA а потом READ?
Да, наверное, на басике так делается. Создайте цикл бесконечный и читайте подряд данные и выводите их в порт с задержкой.
У Вас, скорей получится просто линейный вывод данных, а вот табличный формат предполагает несколько другой порядок данных, например:
1. кол-во повторов эффекта.
2. данные...
....
3. Признак конца эффекта, например $FF.
и т.д.
Да, все верно. Первое, что в голову пришло, прикрепил во вложении. На данный момент прошивка с авторскими эффектами занимает 41%. Из них 33% сам автомат, и лишь 8% все эффекты. Так что можно добавить еще раз в 8 больше эффектов. Ну и код оптимизировать можно, разумеется. Этот стоит расценивать как набросок, от которого можно оттолкнуться. В эффектах введен флаг окончания всех эффектов - 255 (обязательное дело), и флаг окончания эффекта - 128 (так как количество элементов в каждом эффекте различное). Такие значение позволились по причине урезанного порта МК.
Спасибо за пояснения
Я же говорю что на изучение BASCOM потратил всего день. Чем собственно и хорош этот "язык домохозяек" что сел и сразу можешь написать что-то работающее Не спорю что на нюансы потом уйдет время
Кстати MAVr 34 уже проверил мою программу в железе и она работает Это я решил что до НГ паяльник больше в руки не возьму
Это в посте: Вс дек 29, 2013 13:25:26 ? Не может быть такого, в тиньку 13 оно влазит без проблем. Это у Вас на стек ругается просто, он в коде не сконфигурирован (использовались настройки среды, видимо). Сами посудите, если в тиньке 2313 заняло 45% (а у нее 2К памяти), то в тиньку 13 (у которой 1К памяти) влезть же должно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Это у Вас на стек ругается просто, он в коде не сконфигурирован (использовались настройки среды, видимо)
Да при выборе чипа Tiny13 и тех цифрах что стояли в параметрах чипа он у меня ругался. Уж не знаю почему но разобрался что это глюк BASCOM'a (у меня) выставил параметры стека из даташита все стало нормально