CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

в процессе скоро готовы будут ща на радиорынок поеду,подскажи мне ,какие фьюзы мне для этого девайса поставить и где их выучить?
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Re: CodeVision AVR в вопросах и ответах

Сообщение *Trigger* »

Учить в даташите.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

а нет просто сайта с которого их заучить?
kris95
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Ср янв 07, 2009 19:30:23

Re: CodeVision AVR в вопросах и ответах

Сообщение kris95 »

Коре, серёг, ты мне что писал в личке ? Что у тебя есть достаточные знания, опыт, умеешь находить нужную инфу. И чё ? Где это всё ?
Я тебе повторяю - я и так чуть ли не половину тебе уже подсказал, а ты ещё просишь фьюзы за тебя посчитать. Нет уж. Ты это устройство не за спасибо делаешь, и это "не за спасибо" пойдёт тебе в карман, так что выкручивайся сам. Фьюзы выучить - дело пяти минут
kris95
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Ср янв 07, 2009 19:30:23

Re: CodeVision AVR в вопросах и ответах

Сообщение kris95 »

Коре, серёг, ты мне что писал в личке ? Что у тебя есть достаточные знания, опыт, умеешь находить нужную инфу. И чё ? Где это всё ?
Я тебе повторяю - я и так чуть ли не половину тебе уже подсказал, а ты ещё просишь фьюзы за тебя посчитать. Нет уж. Ты это устройство не за спасибо делаешь, и это "не за спасибо" пойдёт тебе в карман, так что выкручивайся сам. Фьюзы выучить - дело пяти минут
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

да я нашел но они какието не супер правильные ну лан пошел учить!
Аватара пользователя
Morse
Встал на лапы
Сообщения: 140
Зарегистрирован: Пт фев 01, 2008 11:09:49
Откуда: СССР

Re: CodeVision AVR в вопросах и ответах

Сообщение Morse »

ValBag писал(а):
Morse писал(а):Всё это конечно хорошо, но мне-бы адрес метки в переменную записать.
Насколько мне известно, в CVAVR нет средств адресации метки, кроме как "goto" и только в той функции, где находится метка.
...Попробуйте воспользоваться тем примером, что приводил выше ARV, с анализом и изменением статуса в функции.


Похоже что с CodeVision простым путём эту задачу не решить.
По предложенным ссылкам прошол, интересно, но не совсем то, что мне надо. Видно, люди сталкиваются с похожими задачами,но решают немного по иному.
Моя родина Советский Союз.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Главное, что решают. И swicth/case, и void *plab = &&label; goto *plab; решают задачу «возврата» внутрь функции путём обчного входа в функцию и перехода в нужное место её начале.
Взятие адреса метки, нсколько я знаю, есть только в GCC. Поэтому protothreads в своём «максимально портабельном» виде сделаны через switch/case.

Третий путь - вместо возврата из точки, в которую нужно продолжение, сделать вызов специальной «системной» функции.
Она достаёт из стека адрес возврата (т.е. тот адрес, на который нужно вернуться в прерванную функцию), сохраняет его всвязанной с этой функцией переменной (и для switc/case, и для goto *label такая переменная есть, но её обрабатывает сама прерываемая функция). При последующем возврате в прерванную функцию делается переход по полученному адресу и всё выглядит так, как будто в основную функцию сделан возврат из систмной, хотя между этими событиями точно так же могли поработать многие другие функции.
Понятное дело, что
• Такое дело пишется на ассемблере, так как оно зависимо от контроллера и компилятора (устройстве стека возвратов, соглашениях о использовании регистров и т.п.)
• Размещённые в регистрах локальные переменные могут быть испорчены, так как компилятор рассчитывает, что «системная» функция выполяет соглашения о распределении регистров на сохраняемые вызывающим и сохраняемые вызываемым. Но «системная» функци не обычная, она порождает выполнение других функций, считающих все эти регистр «своими». В случае, подобном protothreads, из функции задачи всегда происходит явный возврат и потом явный вход с переходом по селектору, так что компилятор видит, что локальная переменная может быть не проинициализирована.

Где-то пробегала "RTOS", сделанная таким образом и даже сразу и под CodeVision, но я не запомнил ссылок. Меня для таких коперативок более чем удовлетворяет protothreads (раньше писал на явных switch-автоматах, как предлагал ARV, да и сейчас ими н брезгую, иногда такая явность даже лучше), а для более сложных случаев в более толстых контроллерах — вытесняющую scmRTOS.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

О, вспомнил, где видел и как называлось.
http://electronix.ru/forum/lofiversion/ ... 69005.html
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
Rinon Ninqueon
Говорящий с текстолитом
Сообщения: 1562
Зарегистрирован: Ср июн 30, 2010 18:54:47
Откуда: NO14MU
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Rinon Ninqueon »

почему-то не пашет прерывание таймера
Вроде взял заезженный пример, только дисплей приделал, и вывожу к-во вызовов на него

где ошибка?
Вложения
interrupt.zip
тут файлы Proteus и CVAVR с заголовками для дисплея
(33.12 КБ) 158 скачиваний
Изображение
Изображение
Изображение
Сам себе Гилмор
Елисей
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Чт мар 05, 2009 23:21:53

Re: CodeVision AVR в вопросах и ответах

Сообщение Елисей »

Здравия желаю! кто подскажет, как в CVAVR правильно самому написать хедер?

по аналогии со стандартными пробовал сделать так

Код: Выделить всё

#ifndef _RCKB_USED_ //если не объявлялось
#define _RCKB_USED_

#pragma used+  // сбаянено со стандартного хедера


extern char scrbuf[21][8];  // общие для всего проекта переменные - ( а надо ли?)

extern char curpos[2];

extern bit esc;

void keypress (char data); // прототипы функций из библиотеки

void kmmake (char dat);
void int1do(void);
void tim0ovfdo(void);

#pragma used- // тоже сбаянено

#pragma library rckb_driver.c // указание файла с библиотекой.

#endif


в результате функция в библиотеке (тоже своей) не видит управляющие регистры таймера и что то мне подсказывает что она еще много чего не увидит

может такой вопрос и был уже - не нашел. к поиску не посылайте а лучше ссылочку подкиньте
Аватара пользователя
Morse
Встал на лапы
Сообщения: 140
Зарегистрирован: Пт фев 01, 2008 11:09:49
Откуда: СССР

Re: CodeVision AVR в вопросах и ответах

Сообщение Morse »

avreal писал(а):О, вспомнил, где видел и как называлось.
http://electronix.ru/forum/lofiversion/ ... 69005.html


Большое спасибо. С необходимостью писать программу с паралельными задачами/потоками сталкнулся впервые. Ранее удавалось обходиться более простыми способами. Сейчас программа реализованна примерно так... Есть некоторое колличество потоков живущих паралельно. Между собой потоки общаются через глобальные переменные и флаги. Флаги в общем-то тоже глобальные переменные тольк битовые. При временном выходе из функции я использую не return а свою функцию. Она делает тоже самое что и return но предварительно сохраняет адрес возврата в статической переменной. При повторном вызове, функция начинается с начала как и при обычном вызове. В начале функции стоит функция передающая управление по ранее сохранённому адресу. Вся эта конструкция работает нормально, но есть один неприятный момент. При первом вызове функции в переменной где должен быть адрес возврата, записан ноль. Пришлось установит проверку на ноль и не выполнять переход по адресу из переменной если ноль.
Моя родина Советский Союз.
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

Re: CodeVision AVR в вопросах и ответах

Сообщение ValBag »

Rinon Ninqueon писал(а):почему-то не пашет прерывание таймера
где ошибка?
1. Неправильный флаг разрешения прерывания - должен быть: TIMSK=0x04;
2. В функции прерывания TCNT1=0b10000-(8000000/1024);
а в main: TCNT1=0x10000-(Freq/1024);
Приведите к однообразному виду.
Аватара пользователя
Rinon Ninqueon
Говорящий с текстолитом
Сообщения: 1562
Зарегистрирован: Ср июн 30, 2010 18:54:47
Откуда: NO14MU
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Rinon Ninqueon »

ValBag писал(а):Неправильный флаг разрешения прерывания - должен быть: TIMSK=0x04;

спасибо, в этом и проблема, в основном

я только начал прерывания изучать. Не въезжаю со всеми флагами ещё

UPD
порядок битов разный в книжке (Шпак) и ДШ
Последний раз редактировалось Rinon Ninqueon Пн окт 11, 2010 16:24:26, всего редактировалось 1 раз.
Изображение
Изображение
Изображение
Сам себе Гилмор
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: CodeVision AVR в вопросах и ответах

Сообщение ELcat »

To Сериг. Поосторожнее с фузами, заодно разберись с ПО которым ты будешь эти фузы вбивать. Дело в том, что запрограммированный фуз - это 0, не запрограммированный - 1, обычно запрограммированный отображается в виде галки в его окошке, но возможны варианты. Фузы не касающиеся частоты и режимов тактового генератора трогать не рекомендуется - риск того, что проц перестанет общаться с программатором и капут. Заодно спаяй, на всякий, RC генератор на ЛА3 на частоту ок мегагерца - пригодится реально, как-то я не тот фьюз щелкнул и проц стал в позу с внешним источником тактовой, подключил такой вот генератор на Xin и проц снова на связи - особенно если проц не в панельке а в QFP-44 :) И вообще AVRки с заводскими фузами отлично работают от внутрешнего RC генератора на частоте которая указана в даташите в качестве начальной, с нестабильностью ок 2%, и которую можно менять в относительно широком диапазоне прямо из твоей программы записью нужных значений в спец регистры не трогая никакие фузы.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение avreal »

Morse писал(а):При первом вызове функции в переменной где должен быть адрес возврата, записан ноль. Пришлось установит проверку на ноль и не выполнять переход по адресу из переменной если ноль.
Отлично. Всё правильно сделано, пока не появилась необходимость что-то усложнять — оставьте так.
protothreads на gcc-шном расширении с взятием адреса метки в указательную переменную и переход по ней работает практически так же (тоже проверка на 0 в начале), только благодаря использованию расширения языка обходится без написанных на ассемблере функций. Написаны макросы (#define), всё встраивается по месту. Ну и компилируется для любого процессора, для которого есть gcc, без изменений в макросах. Других преимуществ, по сути, нет.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
evgeniy66
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пт май 01, 2009 08:58:42
Откуда: г. Коломна
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение evgeniy66 »

Сериг писал(а):я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?

Да.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

evgeniy66 писал(а):
Сериг писал(а):я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?

Да.

спасибо :beer:
Аватара пользователя
diim
Нашел транзистор. Понюхал.
Сообщения: 168
Зарегистрирован: Сб фев 16, 2008 04:35:19
Откуда: г.Тольятти
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение diim »

товарищи! добрый всем вечер! прошу помощи, по CAVR. пытаюсь запустить таймер на меге8 вот такой инструкций TCCR0= (1<<CS02) | (0<<CS01) | (0<<CS00); почему компилятор выдаёт ошибку? как на картинке!
Вложения
Захват-1.gif
(1.58 КБ) 271 скачивание
***********
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********
Ответить

Вернуться в «AVR»