Цифры я привел просто для примера. В реале в одном массиве значение реальной температуры,в другом значение для OCR2 от 51 до 255.Плюс шимить надо от 20 до 50 градусов, соответственно 20гр-20% шим 50гр- 100% шим, зависимость не линейная по числам,а линейна по номерам в массиве. Код который подсказали работает как надо.Аlex писал(а):Не понятно, зачем использовать 2 массива ? Достаточно одного - зависимость температура/скважность.
Заполняем массив значениями скважности и выбираем из него по индексу, равному температуре, без всяких циклов и переборов.
Если у Вас в массиве значения температуры будут не с определённым шагом (например 1,3,10,15, ..), то способне пойдёт, т.к. Temp может быть не равен ни одному значению в массиве.Код: Выделить всё
for(i=0;i<100;i++){ if(Temp==A[i]) OCR2=B[i]; }
CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
- Реклама
Re: CodeVision AVR в вопросах и ответах
Поделитесь, пожалуйста, вылеченной версией 2.6 или новее. Не дает компилить из-за ограничения на размер кода.
Можно в личку.
Спасибо
Можно в личку.
Спасибо
Re: CodeVision AVR в вопросах и ответах
Здравствуйте. У меня такой вопрос: наковырял на днях примитивную прогу для меги16,нех-файл получился около 20кб. При прошивке прога влезла в контроллер нормально,но работает в железе некорректно. В протеусе все путем пашет. Влияет ли завышенный размер нех-файла на некорректную работу в железе?
С тини2313 такого не было,когда в него грузил нех-файл размером около 4кб... Спасибо.
С тини2313 такого не было,когда в него грузил нех-файл размером около 4кб... Спасибо.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
От размера (в пределах размера памяти мк) не зависит. Производитель гарантирует работоспособность каждой ячейки памяти
. Так что смотрите железо и фуз-биты. Или может там нужен еще EEPROM залитый.
Docendo discimus
Re: CodeVision AVR в вопросах и ответах
мне тоже в личку киньте.lakec писал(а):Поделитесь, пожалуйста, вылеченной версией 2.6 или новее. Не дает компилить из-за ограничения на размер кода.
Можно в личку.
Спасибо
У меня глюк с компилятором на всех версиях. При чем глюки разные.
Хочу попробовать новой версией компиля!
- Реклама
Re: CodeVision AVR в вопросах и ответах
Тут гуглем умет кто пользоваться? А то я нахожу только платные компиЛЯ.
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Поцаны, помогите плз: есть LED матрица, её Х воткнут в порт А, а Y в порт B
матрица 8х8, и пинов в портах 0-7 то есть хорошо подходит, я не фонты вывожу, а зажигаю кастомные диоды, но немного не удобно PORTB.1 = 0xFF; PORTA.0 = 0x00; можно ли как нибудь заменить PORTA.0 на х1 PORTB.0 на y1???
вроде это #define делает?!
матрица 8х8, и пинов в портах 0-7 то есть хорошо подходит, я не фонты вывожу, а зажигаю кастомные диоды, но немного не удобно PORTB.1 = 0xFF; PORTA.0 = 0x00; можно ли как нибудь заменить PORTA.0 на х1 PORTB.0 на y1???
вроде это #define делает?!
Если возникнут вопросы - посмотрите на мой аватар.
Re: CodeVision AVR в вопросах и ответах
А можно на мыло gluk@newmail.ru скинуть файл/ссылку с CVAVR версии больше 2.05.3 (не жадный если можно).
А то 2.05.3 какая-то фигня:
пишу под ATMEGA128A код из четырёх строк
МК висисит меняю на delay_us(5000); работает.... Самое интересное что в протеусе усё пучком. А на реальном чипе косяк.
Если бы дело было только в delay то я бы везде поставил мкс задержки.
Помогите!
А то 2.05.3 какая-то фигня:
пишу под ATMEGA128A код из четырёх строк
Код: Выделить всё
while(1) {
PORTA = 7;
delay_ms(5);
PORTA = 0;
delay_ms(5);
}
Если бы дело было только в delay то я бы везде поставил мкс задержки.
Помогите!
- Goodefine
- Держит паяльник хвостом
- Сообщения: 906
- Зарегистрирован: Ср апр 16, 2008 13:22:54
- Откуда: Приднестровье, Тирасполь
Re: CodeVision AVR в вопросах и ответах
Он не висит, а быстро моргает
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: CodeVision AVR в вопросах и ответах
К тому же, там вроде надо задефайнить тактовую частоту МК?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: CodeVision AVR в вопросах и ответах
В контроллер программа зашивается не в HEX формате. При прошивке программа загрузки автоматически преобразует ТЕКСТ hex формата в бинарный и уже его прошивает. А бинарный формат намного меньше. Так что сравнивать размеры текстового файла HEX с допустимым размером флэш в МК бессмысленно. Читайте литературу.eduardo писал(а):Здравствуйте. У меня такой вопрос: наковырял на днях примитивную прогу для меги16,нех-файл получился около 20кб. При прошивке прога влезла в контроллер нормально,но работает в железе некорректно. В протеусе все путем пашет. Влияет ли завышенный размер нех-файла на некорректную работу в железе?
С тини2313 такого не было,когда в него грузил нех-файл размером около 4кб... Спасибо.
С уважением,
Виктор.
Виктор.
Re: CodeVision AVR в вопросах и ответах
Понятно. Спасибо. Еще хочу спросить,как сделать чтоб переменная( uns. char) хранящаяся в еепром при загрузке проги в контроллер принимала зачение 0х00? При ее объявлении я присваивал ей 0х00,но после загрузки она все равно осталась 0хFF...
Последний раз редактировалось ploop Пн июл 01, 2013 22:03:29, всего редактировалось 1 раз.
Причина: Нарушение правил п.2.7
Причина: Нарушение правил п.2.7
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
То, что объявляется, содержится в файле *.eep, предназначенном для заливки. Чтобы при старте программы переменная принимала нужное значение, его нужно передавать переменной в теле программы.
Код: Выделить всё
eeprom unsigned char eData= 0x00; // это значение будет в файле *.eep
main(void)
{
...
...
eData= 0x00; // а это значение будет уже в программе
...
...
}Docendo discimus
Re: CodeVision AVR в вопросах и ответах
День добрый!
Помогите правильно организовать алгоритм на atmega8.
Нужно посредством ШИМ-а регулировать ток на 4-х ногах контроллера. сначала ток нарастает на 1-ой ноге, затем он начинает спадать и одновременно с этим начинает расти ток на второй ноге.Затем ток на второй ноге начинает спадать и за ним начинает расти ток на 3-ей ноге, и так по кругу.
Возможно ли такое реализовать аппаратными средствами?
Помогите правильно организовать алгоритм на atmega8.
Нужно посредством ШИМ-а регулировать ток на 4-х ногах контроллера. сначала ток нарастает на 1-ой ноге, затем он начинает спадать и одновременно с этим начинает расти ток на второй ноге.Затем ток на второй ноге начинает спадать и за ним начинает расти ток на 3-ей ноге, и так по кругу.
Возможно ли такое реализовать аппаратными средствами?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Что означает "ток на ноге" ? Ток зависит от нагрузки и напряжения, его нельзя выдать откуда-то, с ноги например.
Поподробнее объясните что хотите сделать.
Поподробнее объясните что хотите сделать.
Re: CodeVision AVR в вопросах и ответах
Не так написал
. Нужно Изменять скважность ШИМ-а на ногах контроллера.
Нужно, чтобы при нажатии кнопки 4 светодиода попеременно загарались и гасли (в предыдущем посте я описывал к это должно быть). Как кнопка отпускается процесс замораживается (как горели на этот момент, так и должны гореть) до следующего нажатия кнопки.
Программно понятно КаК делать, а вот можно ли это сделать аппаратно?
Нужно, чтобы при нажатии кнопки 4 светодиода попеременно загарались и гасли (в предыдущем посте я описывал к это должно быть). Как кнопка отпускается процесс замораживается (как горели на этот момент, так и должны гореть) до следующего нажатия кнопки.
Программно понятно КаК делать, а вот можно ли это сделать аппаратно?
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
А что на это говорит даташит ?можно ли это сделать аппаратно?
Re: CodeVision AVR в вопросах и ответах
Есть там вроде 2 таймера. На них можно собрать шим, но их только 2, а надо 4. Может есть ещё какие функции там?
Re: CodeVision AVR в вопросах и ответах
Спасибо,понято...pyzhman писал(а):То, что объявляется, содержится в файле *.eep, предназначенном для заливки. Чтобы при старте программы переменная принимала нужное значение, его нужно передавать переменной в теле программы.
Код: Выделить всё
eeprom unsigned char eData= 0x00; // это значение будет в файле *.eep main(void) { ... ... eData= 0x00; // а это значение будет уже в программе ... ... }
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Вообще то в AtMega8 три аппаратных шим, если мне не изменяет память.isx писал(а):Есть там вроде 2 таймера. На них можно собрать шим, но их только 2, а надо 4. Может есть ещё какие функции там?
А насчет программного шим это вопрос второй. Были деятели, которые на AtTiny2313 делали 50! ШИМ регулируемых светодиодов через чарлиплексинг и не помню сколько много кнопок с одновременным управлением только одним из каналов.
Если в один момент времени нужен только один канал, то можно с помощью транзисторов и одного ШИМ справиться с вашей задачей.
Есть еще вариант с БИТ модуляцией. С применением внешних регистров сдвига описывалось, что можно до200 каналов регулировать.
Еще есть вариант посылать разные байты по TX, но это уже на грани фантастики и извращения


