CodeVision AVR в вопросах и ответах
-
oschpareny
- Родился
- Сообщения: 5
- Зарегистрирован: Сб окт 04, 2014 22:03:49
Re: CodeVision AVR в вопросах и ответах
Доброго времени суток. Хочу спросить совета, меня интересует прошивка мк attiny 45. Вот ссылка того что я собираюсь собрать http://radio-hobby.org/modules/news/art ... oryid=1362
AVRы никогда не прошивал, буду это делать через LPT с помощью CodevisionAVR. Вопрос надо ли ставить какие нибудь галочки где фьюзы или оставлять все по умолчанию и все будет работать???
AVRы никогда не прошивал, буду это делать через LPT с помощью CodevisionAVR. Вопрос надо ли ставить какие нибудь галочки где фьюзы или оставлять все по умолчанию и все будет работать???
Re: CodeVision AVR в вопросах и ответах
Подскажите как правильно настроить ацп attiny 13,чтобы зажигался светодиод при подаче напряжения на ацп
#include <tiny13.h>
interrupt [ADC_INT] void adc_isr(void)
{
PORTB.3=1;
ADCSRA|=0x40;
}
void main (void)
{
PORTB=0x00;
DDRB=0x08; //ПОРТ 3 НА ВЫХОД
ADCSRA=0x8F;// 10001111 - ДЕЛИТЕЛЬ 128 + ПРЕРЫВАНИЯ АЦП ВКЛЮЧЕНЫ
ADMUX=0x01; //ADC 1 - ПОРТ 2 НА ВХОД АЦП
}
while(1);
}
не работает(((
#include <tiny13.h>
interrupt [ADC_INT] void adc_isr(void)
{
PORTB.3=1;
ADCSRA|=0x40;
}
void main (void)
{
PORTB=0x00;
DDRB=0x08; //ПОРТ 3 НА ВЫХОД
ADCSRA=0x8F;// 10001111 - ДЕЛИТЕЛЬ 128 + ПРЕРЫВАНИЯ АЦП ВКЛЮЧЕНЫ
ADMUX=0x01; //ADC 1 - ПОРТ 2 НА ВХОД АЦП
}
while(1);
}
не работает(((
Последний раз редактировалось sirha Вс окт 19, 2014 10:36:16, всего редактировалось 3 раза.
-
ghostbuster
- Первый раз сказал Мяу!
- Сообщения: 22
- Зарегистрирован: Чт сен 22, 2011 11:50:03
Re: CodeVision AVR в вопросах и ответах
Друзья, такой вопрос: могу ли я повторно запускать codewizardavr в процессе редактирования кода, для внесения изменений через мастер в этот код. Допустим мне нужно поменять состояние портов с выхода на вход, активировать прерывания и т.п. с помощью мастера, но не сгенерировав абсолютно новый код, а внести только необходимые изменения в ранее написанный?
Re: CodeVision AVR в вопросах и ответах
Откройте папку в которой сохранены файлы ,открываете проект (prj) с кодом и вносите там изменения сколь угодно и компилируйте.
Хотя,если честно,я редко использую визард. Как нагородит там,сам чёрт ногу сломит!!!!!.....
Хотя,если честно,я редко использую визард. Как нагородит там,сам чёрт ногу сломит!!!!!.....
Последний раз редактировалось eduardo Вс окт 26, 2014 20:10:58, всего редактировалось 1 раз.
Re: CodeVision AVR в вопросах и ответах
У меня такая беда: пишу прогу для фм радио(ТЕА5767).Для настройки приёмника нужно отправить в шину числа с 10 769 для 88.0 МГц по
13211 для 108 МГц. Числа получились в результате вычислений из формулы в ДШ:
4*(88*1000000+225000)/32768=10 769; 4*(108*1000000+225000)32768=13211.
Для того чтобы отобразить частоту,например 88МГц, на ЛСД нужно преобразовать число 10769 следуя из вышеуказанной формулы в обратном
порядке(не знаю как это в математике называется):
88=(10769*32768+225000)/4/1000000. На калькуляторе всё получается,а на Си результат почему-то=0?
код:
unsigned int data=10769; // для отправки в модуль ТЕА 5767
unsigned int data_lcd; // для вывода на лсд
void main(void)
{
data_lcd=(data*32768+225000)/4/1000000; // здесь результат=0
data_lcd=(10769*32768+225000)/4/1000000; // здесь результат=88
}
Почему так,не пойму...
Может кто-нибудь знает,в чём проблема,подскажите пожалста... Спасибо.
13211 для 108 МГц. Числа получились в результате вычислений из формулы в ДШ:
4*(88*1000000+225000)/32768=10 769; 4*(108*1000000+225000)32768=13211.
Для того чтобы отобразить частоту,например 88МГц, на ЛСД нужно преобразовать число 10769 следуя из вышеуказанной формулы в обратном
порядке(не знаю как это в математике называется):
88=(10769*32768+225000)/4/1000000. На калькуляторе всё получается,а на Си результат почему-то=0?
код:
unsigned int data=10769; // для отправки в модуль ТЕА 5767
unsigned int data_lcd; // для вывода на лсд
void main(void)
{
data_lcd=(data*32768+225000)/4/1000000; // здесь результат=0
data_lcd=(10769*32768+225000)/4/1000000; // здесь результат=88
}
Почему так,не пойму...
Может кто-нибудь знает,в чём проблема,подскажите пожалста... Спасибо.- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Код: Выделить всё
unsigned int data=10769;
data*32768Если int умножать на int (знак пока опустим) - получится тоже int.
А int - это число в диапазоне -32768..+32787 (unsigned - 0..65536). Естественно, что у Вас при умножении получается какая-то чушь.
Используйте тот же long, например (data*32768UL).
Вот, например, как у меня сделано (частота хранится в виде uint16_t, т.е. диапазон частот FM - в виде чисел 8750..10800).
Re: CodeVision AVR в вопросах и ответах
Т.е. обе переменные объявлять как long ?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Хотя бы одну. Или просто первым действием умножать на 32768UL, дав понять компилятору, что и все остальные операнды при действиях с ними надо приводить к unsigned long.
P.S. В принципе, путём нехитрых математических преобразований можно формулу упростить до варианта, вычисления в котором укладываются в диапазон unsigned int (уравнение прямой):
F (MHz) = (data - 10769) * (108 - 88) / (13211 - 10769) + 88
P.S. В принципе, путём нехитрых математических преобразований можно формулу упростить до варианта, вычисления в котором укладываются в диапазон unsigned int (уравнение прямой):
F (MHz) = (data - 10769) * (108 - 88) / (13211 - 10769) + 88
- kimi112
- Встал на лапы
- Сообщения: 122
- Зарегистрирован: Ср окт 30, 2013 16:05:54
- Откуда: ХМАО. Когалым
Re: CodeVision AVR в вопросах и ответах
Доброго времени суток уважаемые коты, если кого не затруднит гляньте код что не так, суть вопроса вот в чем, изначальна данный код был написан для Atmega8 и с ней он работал и в Протеус и в железе все хорошо, но радии экономии решил его переделать на ATTINY2313, а то на Меге остается много пустых ног, нецелесообразно получается. Вообще как смог переписал под ATTINY2313, вреде все порты поправил компиляция проходит без ошибок и варнингов, но при симуляции ни чего не происходит, даже динамическая индикация не работает.
- Вложения
-
- код.txt
- (3.38 КБ) 163 скачивания
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Я не верю, что этот код может компилиться без ошибок. Потому что ошибки синтаксиса видны невооружённым глазом - те же шестнадцатеричные константы вида 0?00 вместо 0x00, или пустые #include в начале.
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
WiseLord, Вы что не видите? Написано же, КОД! )) А если код - то он не может не работать! 
P.S. Нас тут, по-моему, какие-то студенты на лохов развести пытаются...
P.S. Нас тут, по-моему, какие-то студенты на лохов развести пытаются...

Fucking static initialization order fiasco
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
kimi112, у Вас же отладчик в руках (Протеус), погоняйте, посмотрите что не работает.
Программа Ваша, Вы - хозяин кода, и только Вам может быть понятно почему она не работает.
Программа Ваша, Вы - хозяин кода, и только Вам может быть понятно почему она не работает.
- kimi112
- Встал на лапы
- Сообщения: 122
- Зарегистрирован: Ср окт 30, 2013 16:05:54
- Откуда: ХМАО. Когалым
Re: CodeVision AVR в вопросах и ответах
WiseLord, только сейчас заметил, данные ошибки получились при сохранении листинга из CodeVision в блокноте.
Pink-Pank, извините за терминологию, и ни кто здесь ни кого не разводит, это первые шаги в изучении МК.
Вечером выложу скомпилированный файл.
Pink-Pank, извините за терминологию, и ни кто здесь ни кого не разводит, это первые шаги в изучении МК.
Вечером выложу скомпилированный файл.
Re: CodeVision AVR в вопросах и ответах
Всем доброго времени суток!
Возник немного не стандартный вопрос.
Имеется микроконтроллер AVR (Tiny2313 или Mega8 пока не определился). Возможно ли посчитать период внешнего сигнала с точностью +/-1 тактовый импульс микроконтроллера? Как лучше это сделать, подав этот сигнал на вход INTn или ICPn, или Tn? Соответственно обрабатывать данный сигнал как прерывания, использовать для захвата значения таймера-счётчика или же подавать его на счётный вход счётчика? Сам сигнал находится в диапазоне 25-30МГц и подаётся на 14 разрядный счётчик с выходами по степеням двойки: 4-10, 12-14. То есть можно взять любой из кратных сигналов. Частоту микроконтроллера планируется стабилизировать кварцем 12МГц. Данные о частоте желательно получать не реже 1 раза в 1мс.
Подкиньте, пожалуйста, идею, как получить наивысшую точность измерения частоты 25-30МГц описанными аппаратными средствами. Необходимо получить разрешение не хуже 3-6кГц.
Возник немного не стандартный вопрос.
Имеется микроконтроллер AVR (Tiny2313 или Mega8 пока не определился). Возможно ли посчитать период внешнего сигнала с точностью +/-1 тактовый импульс микроконтроллера? Как лучше это сделать, подав этот сигнал на вход INTn или ICPn, или Tn? Соответственно обрабатывать данный сигнал как прерывания, использовать для захвата значения таймера-счётчика или же подавать его на счётный вход счётчика? Сам сигнал находится в диапазоне 25-30МГц и подаётся на 14 разрядный счётчик с выходами по степеням двойки: 4-10, 12-14. То есть можно взять любой из кратных сигналов. Частоту микроконтроллера планируется стабилизировать кварцем 12МГц. Данные о частоте желательно получать не реже 1 раза в 1мс.
Подкиньте, пожалуйста, идею, как получить наивысшую точность измерения частоты 25-30МГц описанными аппаратными средствами. Необходимо получить разрешение не хуже 3-6кГц.
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Способов тьма. Проще всего, наверное, и точнее - использовать аппаратную возможность таймера1 - схему захвата. Точность будет тем больше, чем больший коэффициент деления Вы выберете. Только сильно не переборщите - а то счетчик будет переполняться (хотя и это можно отработать в прерывании). но это при условии, что у вас длина импульса не "дрожит". Иначе придется делать несколько измерений и усреднять. Как вариант - можно еще считать количество импульсов в течение определенного времени - можно получить даже большую точность, мало зависящую от стабильности сигнала.
Fucking static initialization order fiasco
Re: CodeVision AVR в вопросах и ответах
Спасибо, сам тоже пришёл к такому выводу. Счётчик пусть переполняется, главное потом проверять и корректировать захваченные данные. 
- kimi112
- Встал на лапы
- Сообщения: 122
- Зарегистрирован: Ср окт 30, 2013 16:05:54
- Откуда: ХМАО. Когалым
Re: CodeVision AVR в вопросах и ответах
ребята гляньте еще раз, что не так, парой постов ранее описана проблема
- Вложения
-
- счетчик.c
- (5.3 КБ) 289 скачиваний
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
kimi112, гляньте пару постов ранее - Вам, если что, отвечали...
Похоже Pink-Pank был прав - нас пришли тут потроллить
Похоже Pink-Pank был прав - нас пришли тут потроллить
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Проект в Протеусе скиньте.
Для начала
По поводу отображения.. Протеус почему-то не хочет делать анимацию на такой частоте. При изменении частоты на
Начинает бодро подмигивать индикатором.
Код: Выделить всё
TIMSK = 0x40;По поводу отображения.. Протеус почему-то не хочет делать анимацию на такой частоте. При изменении частоты на
Код: Выделить всё
OCR1AH=0x13;
OCR1AL=0xE8;Начинает бодро подмигивать индикатором.
Последний раз редактировалось Pink-Pank Вт окт 28, 2014 20:20:58, всего редактировалось 2 раза.
Fucking static initialization order fiasco