Страница 21 из 421
Добавлено: Пн сен 29, 2008 18:31:59
KIP
Привет!
Написал альтернативную функцию микросекундной задержки на Т/С1, отлаживаю в MVLAB.
Частоту кварца поставил 8 000 000 Гц, деление частоты задал 8 - один счёт таймера это 1 микросекунда.
Проблемы такие:
1)Функция не считает требуемого количества времени, подскажите почему?
2)Как в VMLAB выставить медленную симуляцию - что-бы можно было наблюдать заметное течение микросекунд?
3) В регистр TCCR1B число 26 не записывается (по команде), а пишется 10
Добавлено: Пн сен 29, 2008 18:40:44
tych
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 - может в этом дело.
Добавлено: Пн сен 29, 2008 19:55:34
KIP
tych писал(а):А зачем тебе менять бит_4?
Сейчас перепроверил по таблице режимов Т/С1 - действительно не стоит туда писать. Глаз не за тот "сброс при совпадении" ухватился.
tych писал(а):Уменя 153 сек получилось, разберись с алгоритмом. и надобы сбросов вочдога WDR напихать в функцию паузы.?
Можно немного по подробнее-ради каких целей?
tych писал(а):CVAVR 2 заругался что переменная не INT и не скомпилил пока я не заменил, а CVAVR скомпилил и с char - может в этом дело.
Речь об указателе unsigned char * c?
Добавлено: Пн сен 29, 2008 20:39:37
KIP
Ничего координально не менял-заработало с погрешностью в 3-6 микросекунд.
Добавлено: Пн сен 29, 2008 20:44:13
tych
KIP писал(а):Ничего координально не менял-заработало с погрешностью в 3-6 микросекунд.
И то ХЛЕБ !!!

Добавлено: Пн сен 29, 2008 21:06:16
KIP
tych писал(а):KIP писал(а):Ничего координально не менял-заработало с погрешностью в 3-6 микросекунд.
И то ХЛЕБ !!!

Расскажи, добр человек, почему в функцию сбросы вочдога WDR желательно вставлять?
Добавлено: Пн сен 29, 2008 21:24:18
tych
KIP писал(а):tych писал(а):
И то ХЛЕБ !!!

Расскажи, добр человек, почему в функцию сбросы вочдога WDR желательно вставлять?
Если вы делаете функцию пауз то при паузах более длинных чем настройка WDT и при его активности МК будет ресетится.
В функции delay CVAVR встроены частые сбросы WDT.
Добавлено: Ср окт 08, 2008 08:26:13
AndyWorld
Люди! Подскажите. В CVAVR нет чипа для прошивки Tinny 11,15? Написал программку для Т11 и хочу повторить схемку из раздела Схемы на Т15 а прошить не чем. Может плуги какието можно подцепить? IC Prog так же не обладает списком из Т11 и Т15.
Добавлено: Ср окт 08, 2008 10:22:56
tych
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 слева есть навигатор по проекту - там смотри переменные и их адреса.
Добавлено: Ср окт 08, 2008 10:59:15
AndyWorld
Да. В пони есть 12 и 15 Тини, а 11 нет. Они уже не поддерживаются что ли? На кой я ее купил...
Добавлено: Ср окт 08, 2008 13:51:04
tych
AndyWorld писал(а):В пони Тини11 нет. Они уже не поддерживаются что ли? На кой я ее купил...
В ней и РАМ-ы наверно нету.
В своей домашней страничке
я СИЛЬНО рекомендую использовать те компоненты под которые у вас есть ИНСТРУМЕНТАРИЙ !
Добавлено: Чт окт 16, 2008 22:00:13
кошак
Почему вот так можно
а так выдает ошибку
мне нужно именно в микросекундах.
Добавлено: Чт окт 16, 2008 22:06:21
tych
Так реализованы эти функции. мкС только константы.
Можно свою функцию малых задержек написать. Примеры есть вроде в FAQ в моей домашней страничке.
Добавлено: Чт окт 16, 2008 22:21:00
кошак
Что то я в FAQе не нашел про это,можете здесь обьяснить,как это сделать ?
Добавлено: Чт окт 16, 2008 22:36:41
tych
кошак писал(а):Что то я в FAQе не нашел про это,можете здесь обьяснить,как это сделать ?
Я щас винду переставляю и текст посмотреть
не могу но пункт называется:
_0 паузы микро в тактах и переменной величины как делать.htm
_01 IAR паузы в микро мили и секундах.txt
И другие пункты FAQ в названии которых есть слово "пауз"
Если решите ваш вопрос - раскажите плиз здесь.
Добавлено: Пт окт 17, 2008 19:36:59
кошак
В AVRFAQе для CVAVRа советов нет(насчет пауз),а IARовские приделать не получается,похоже придется делать цикл и туда вставить (х),может быть еще кто то что то посоветует.
Добавлено: Пт окт 17, 2008 19:54:44
tych
кошак писал(а):В 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 подправить можно.
Добавлено: Пт окт 17, 2008 20:07:28
ARV
вы меня извините, конечно, как профана CVAVR... но разве в нем нет встроенных delay_ms() и delay_us()? зачем из WinAVR портировать?
Добавлено: Пт окт 17, 2008 20:20:18
tych
Человеку ( и человечеству У-целом !!! ) нужна delay_us(x) с переменным аргументом x !
Встроеная в CVAVR функуия с константой в скобках.
Добавлено: Пт окт 17, 2008 20:31:23
ARV
ощущение такое, что я к человечеству не принадлежу... мне это никогда не было нужно

и с трудом могу придумать, для чего оно может быть необходимо...
может, это потому, что я WinAVR использую? хотя и там задержки только на десятки-сотни
миллисекунд делаю, когда не охота связываться с таймерами-прерываниями... и до сих пор обходился константами в аргументе...
странно... ну расскажите, для чего переменная в аргументе требуется человечеству?!