CodeVision AVR в вопросах и ответах
Привет!
Написал альтернативную функцию микросекундной задержки на Т/С1, отлаживаю в MVLAB.
Частоту кварца поставил 8 000 000 Гц, деление частоты задал 8 - один счёт таймера это 1 микросекунда.
Проблемы такие:
1)Функция не считает требуемого количества времени, подскажите почему?
2)Как в VMLAB выставить медленную симуляцию - что-бы можно было наблюдать заметное течение микросекунд?
3) В регистр TCCR1B число 26 не записывается (по команде), а пишется 10
Написал альтернативную функцию микросекундной задержки на Т/С1, отлаживаю в MVLAB.
Частоту кварца поставил 8 000 000 Гц, деление частоты задал 8 - один счёт таймера это 1 микросекунда.
Проблемы такие:
1)Функция не считает требуемого количества времени, подскажите почему?
2)Как в VMLAB выставить медленную симуляцию - что-бы можно было наблюдать заметное течение микросекунд?
3) В регистр TCCR1B число 26 не записывается (по команде), а пишется 10
- Вложения
-
- 1.rar
- (17 КБ) 292 скачивания
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
KIP писал(а): 2) Как в VMLAB выставить медленную симуляцию - что-бы можно было наблюдать заметное течение микросекунд?
1 способ: Можно включить анимацию кода - типа кинопленки вверху в меню.
2 способ: Наверно можно в диспечере задач виндоус ресурсы ужать проге и она будет считать медленней.
3 способ: Можно 2 МК на схему кинуть и в нем сделать точку останова каждую микросекунду например.
KIP писал(а): 3) В регистр TCCR1B число 26 не записывается (по команде), а пишется 10
Наверно глюк VMLAB - так как даже в ручную бит_4 не меняется !
а другие биты (кроме 5) меняются мышкой.
А зачем тебе менять бит_4 ?
KIP писал(а): 1) почему мало считает
У меня 153 сек получилось, разберись с алгоритмом. и надобы сбросов вочдога WDR напихать в функцию паузы.
=====
CVAVR 2 заругался что переменная не INT и не скомпилил пока я не заменил, а CVAVR скомпилил и с char - может в этом дело.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
tych писал(а):А зачем тебе менять бит_4?
Сейчас перепроверил по таблице режимов Т/С1 - действительно не стоит туда писать. Глаз не за тот "сброс при совпадении" ухватился.
tych писал(а):Уменя 153 сек получилось, разберись с алгоритмом. и надобы сбросов вочдога WDR напихать в функцию паузы.?
Можно немного по подробнее-ради каких целей?
tych писал(а):CVAVR 2 заругался что переменная не INT и не скомпилил пока я не заменил, а CVAVR скомпилил и с char - может в этом дело.
Речь об указателе unsigned char * c?
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
KIP писал(а):Ничего координально не менял-заработало с погрешностью в 3-6 микросекунд.
И то ХЛЕБ !!!
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
KIP писал(а):tych писал(а):KIP писал(а):Ничего координально не менял-заработало с погрешностью в 3-6 микросекунд.
И то ХЛЕБ !!!
Расскажи, добр человек, почему в функцию сбросы вочдога WDR желательно вставлять?
Если вы делаете функцию пауз то при паузах более длинных чем настройка WDT и при его активности МК будет ресетится.
В функции delay CVAVR встроены частые сбросы WDT.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
MegaRazoR писал(а):Пишу программу на СИ в Code Vision AVR 1.25.9. Как узнать какой адрес Code Vision AVR назначил для данной переменной ? Смотрел сгенерированный асм файл - так и не понял что к чему. Куча макросов и в конце мой код на СИ весь закоментированный. Вот кусок с объявленными глобальными переменными:Код: Выделить всё
; 22 #include <delay>
; 23 #define ADC_VREF_TYPE 0xE0 // 1110 0000 - 7,6(internal 2.56V) 5(left adjust) 4-0(channel)
; 24 unsigned char tc0h;
; 25 unsigned char tc2h0;
; 26 unsigned char tc2h1;
; 27 unsigned char tc2h2;
; 28 unsigned char adc_data;
; 29 bit rdytrm=0x00;
; 30 unsigned int chnl;
; 31 unsigned char adcdata[512][3];
_adcdata:
.BYTE 0x600
Здесь видно что для переменной adcdata компилятор зарезервировал память, а вот для других переменных где ?
Вопорс возник в связи с тем что при симуляции в Proteus в окне watch хочется увидеть значение данной переменой (chnl), т.к. в пошаговой симуляции протеус игнорирует конструкции if(){}; связанные с этой переменной.
В CVAVR слева есть навигатор по проекту - там смотри переменные и их адреса.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
AndyWorld писал(а):В пони Тини11 нет. Они уже не поддерживаются что ли? На кой я ее купил...
В ней и РАМ-ы наверно нету.
В своей домашней страничке я СИЛЬНО рекомендую использовать те компоненты под которые у вас есть ИНСТРУМЕНТАРИЙ !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Почему вот так можноа так выдает ошибкумне нужно именно в микросекундах.
Код: Выделить всё
delay_ms(x);Код: Выделить всё
delay_us(x);- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Так реализованы эти функции. мкС только константы.
Можно свою функцию малых задержек написать. Примеры есть вроде в FAQ в моей домашней страничке.
Можно свою функцию малых задержек написать. Примеры есть вроде в FAQ в моей домашней страничке.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
кошак писал(а):Что то я в FAQе не нашел про это,можете здесь обьяснить,как это сделать ?
Я щас винду переставляю и текст посмотреть
не могу но пункт называется:
_0 паузы микро в тактах и переменной величины как делать.htm
_01 IAR паузы в микро мили и секундах.txt
И другие пункты FAQ в названии которых есть слово "пауз"
Если решите ваш вопрос - раскажите плиз здесь.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
кошак писал(а):В AVRFAQе для CVAVRа советов нет(насчет пауз),а IARовские приделать не получается,похоже придется делать цикл и туда вставить (х),может быть еще кто то что то посоветует.
Неужели из КУЧИ вариантов в "_0 паузы микро в тактах и переменной величины как делать.htm" ни один не подходит в основу ?
Прикладываю его сюда - спецы глянут и помогут наверняка нам чайникам. переименуте в .htm
В FAQ AVR я нашел еще про паузы:
В файле WinAVR\avr\include\util\delay.h
есть четыре функции задержкиКод: Выделить всё
static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
static inline void _delay_us(double __us) __attribute__((always_inline));
static inline void _delay_ms(double __ms) __attribute__((always_inline));
Вроде и для CVAVR подправить можно.
- Вложения
-
- delay.h
- (6.35 КБ) 369 скачиваний
-
- _0 паузы микро в тактах.htm .txt
- (6.2 КБ) 434 скачивания
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
вы меня извините, конечно, как профана CVAVR... но разве в нем нет встроенных delay_ms() и delay_us()? зачем из WinAVR портировать?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- tych
- Э...
- Сообщения: 2792
- Зарегистрирован: Ср апр 04, 2007 08:39:14
- Откуда: Москва
- Контактная информация:
Человеку ( и человечеству У-целом !!! ) нужна delay_us(x) с переменным аргументом x !
Встроеная в CVAVR функуия с константой в скобках.
Встроеная в CVAVR функуия с константой в скобках.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
ощущение такое, что я к человечеству не принадлежу... мне это никогда не было нужно
и с трудом могу придумать, для чего оно может быть необходимо...
может, это потому, что я WinAVR использую? хотя и там задержки только на десятки-сотни миллисекунд делаю, когда не охота связываться с таймерами-прерываниями... и до сих пор обходился константами в аргументе...
странно... ну расскажите, для чего переменная в аргументе требуется человечеству?!
может, это потому, что я WinAVR использую? хотя и там задержки только на десятки-сотни миллисекунд делаю, когда не охота связываться с таймерами-прерываниями... и до сих пор обходился константами в аргументе...
странно... ну расскажите, для чего переменная в аргументе требуется человечеству?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!