Страница 90 из 421

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

Добавлено: Сб окт 09, 2010 22:07:54
Сериг
в процессе скоро готовы будут ща на радиорынок поеду,подскажи мне ,какие фьюзы мне для этого девайса поставить и где их выучить?

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

Добавлено: Сб окт 09, 2010 22:13:40
*Trigger*
Учить в даташите.

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

Добавлено: Сб окт 09, 2010 23:01:12
Сериг
а нет просто сайта с которого их заучить?

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

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

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

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

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

Добавлено: Сб окт 09, 2010 23:46:26
Сериг
да я нашел но они какието не супер правильные ну лан пошел учить!

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

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

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

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

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

Где-то пробегала "RTOS", сделанная таким образом и даже сразу и под CodeVision, но я не запомнил ссылок. Меня для таких коперативок более чем удовлетворяет protothreads (раньше писал на явных switch-автоматах, как предлагал ARV, да и сейчас ими н брезгую, иногда такая явность даже лучше), а для более сложных случаев в более толстых контроллерах — вытесняющую scmRTOS.

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

Добавлено: Вс окт 10, 2010 10:30:26
avreal
О, вспомнил, где видел и как называлось.
http://electronix.ru/forum/lofiversion/ ... 69005.html

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

Добавлено: Пн окт 11, 2010 08:55:15
Rinon Ninqueon
почему-то не пашет прерывание таймера
Вроде взял заезженный пример, только дисплей приделал, и вывожу к-во вызовов на него

где ошибка?

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

Добавлено: Пн окт 11, 2010 11:46:42
Елисей
Здравия желаю! кто подскажет, как в 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
в результате функция в библиотеке (тоже своей) не видит управляющие регистры таймера и что то мне подсказывает что она еще много чего не увидит

может такой вопрос и был уже - не нашел. к поиску не посылайте а лучше ссылочку подкиньте

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

Добавлено: Пн окт 11, 2010 11:51:33
Morse
avreal писал(а):О, вспомнил, где видел и как называлось.
http://electronix.ru/forum/lofiversion/ ... 69005.html
Большое спасибо. С необходимостью писать программу с паралельными задачами/потоками сталкнулся впервые. Ранее удавалось обходиться более простыми способами. Сейчас программа реализованна примерно так... Есть некоторое колличество потоков живущих паралельно. Между собой потоки общаются через глобальные переменные и флаги. Флаги в общем-то тоже глобальные переменные тольк битовые. При временном выходе из функции я использую не return а свою функцию. Она делает тоже самое что и return но предварительно сохраняет адрес возврата в статической переменной. При повторном вызове, функция начинается с начала как и при обычном вызове. В начале функции стоит функция передающая управление по ранее сохранённому адресу. Вся эта конструкция работает нормально, но есть один неприятный момент. При первом вызове функции в переменной где должен быть адрес возврата, записан ноль. Пришлось установит проверку на ноль и не выполнять переход по адресу из переменной если ноль.

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

Добавлено: Пн окт 11, 2010 13:57:03
ValBag
Rinon Ninqueon писал(а):почему-то не пашет прерывание таймера
где ошибка?
1. Неправильный флаг разрешения прерывания - должен быть: TIMSK=0x04;
2. В функции прерывания TCNT1=0b10000-(8000000/1024);
а в main: TCNT1=0x10000-(Freq/1024);
Приведите к однообразному виду.

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

Добавлено: Пн окт 11, 2010 14:52:25
Rinon Ninqueon
ValBag писал(а):Неправильный флаг разрешения прерывания - должен быть: TIMSK=0x04;
спасибо, в этом и проблема, в основном

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

UPD
порядок битов разный в книжке (Шпак) и ДШ

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

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

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

Добавлено: Пн окт 11, 2010 17:25:17
Сериг
я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?

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

Добавлено: Пн окт 11, 2010 18:48:59
avreal
Morse писал(а):При первом вызове функции в переменной где должен быть адрес возврата, записан ноль. Пришлось установит проверку на ноль и не выполнять переход по адресу из переменной если ноль.
Отлично. Всё правильно сделано, пока не появилась необходимость что-то усложнять — оставьте так.
protothreads на gcc-шном расширении с взятием адреса метки в указательную переменную и переход по ней работает практически так же (тоже проверка на 0 в начале), только благодаря использованию расширения языка обходится без написанных на ассемблере функций. Написаны макросы (#define), всё встраивается по месту. Ну и компилируется для любого процессора, для которого есть gcc, без изменений в макросах. Других преимуществ, по сути, нет.

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

Добавлено: Пн окт 11, 2010 20:36:31
evgeniy66
Сериг писал(а):я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?
Да.

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

Добавлено: Пн окт 11, 2010 21:35:20
Сериг
evgeniy66 писал(а):
Сериг писал(а):я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?
Да.
спасибо :beer:

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

Добавлено: Чт окт 14, 2010 22:20:56
diim
товарищи! добрый всем вечер! прошу помощи, по CAVR. пытаюсь запустить таймер на меге8 вот такой инструкций TCCR0= (1<<CS02) | (0<<CS01) | (0<<CS00); почему компилятор выдаёт ошибку? как на картинке!