CodeVision AVR в вопросах и ответах
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
в процессе скоро готовы будут ща на радиорынок поеду,подскажи мне ,какие фьюзы мне для этого девайса поставить и где их выучить?
Re: CodeVision AVR в вопросах и ответах
Учить в даташите.
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
а нет просто сайта с которого их заучить?
Re: CodeVision AVR в вопросах и ответах
Коре, серёг, ты мне что писал в личке ? Что у тебя есть достаточные знания, опыт, умеешь находить нужную инфу. И чё ? Где это всё ?
Я тебе повторяю - я и так чуть ли не половину тебе уже подсказал, а ты ещё просишь фьюзы за тебя посчитать. Нет уж. Ты это устройство не за спасибо делаешь, и это "не за спасибо" пойдёт тебе в карман, так что выкручивайся сам. Фьюзы выучить - дело пяти минут
Я тебе повторяю - я и так чуть ли не половину тебе уже подсказал, а ты ещё просишь фьюзы за тебя посчитать. Нет уж. Ты это устройство не за спасибо делаешь, и это "не за спасибо" пойдёт тебе в карман, так что выкручивайся сам. Фьюзы выучить - дело пяти минут
Re: CodeVision AVR в вопросах и ответах
Коре, серёг, ты мне что писал в личке ? Что у тебя есть достаточные знания, опыт, умеешь находить нужную инфу. И чё ? Где это всё ?
Я тебе повторяю - я и так чуть ли не половину тебе уже подсказал, а ты ещё просишь фьюзы за тебя посчитать. Нет уж. Ты это устройство не за спасибо делаешь, и это "не за спасибо" пойдёт тебе в карман, так что выкручивайся сам. Фьюзы выучить - дело пяти минут
Я тебе повторяю - я и так чуть ли не половину тебе уже подсказал, а ты ещё просишь фьюзы за тебя посчитать. Нет уж. Ты это устройство не за спасибо делаешь, и это "не за спасибо" пойдёт тебе в карман, так что выкручивайся сам. Фьюзы выучить - дело пяти минут
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
да я нашел но они какието не супер правильные ну лан пошел учить!
Re: CodeVision AVR в вопросах и ответах
ValBag писал(а):Насколько мне известно, в CVAVR нет средств адресации метки, кроме как "goto" и только в той функции, где находится метка.Morse писал(а):Всё это конечно хорошо, но мне-бы адрес метки в переменную записать.
...Попробуйте воспользоваться тем примером, что приводил выше ARV, с анализом и изменением статуса в функции.
Похоже что с CodeVision простым путём эту задачу не решить.
По предложенным ссылкам прошол, интересно, но не совсем то, что мне надо. Видно, люди сталкиваются с похожими задачами,но решают немного по иному.
Моя родина Советский Союз.
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Главное, что решают. И swicth/case, и void *plab = &&label; goto *plab; решают задачу «возврата» внутрь функции путём обчного входа в функцию и перехода в нужное место её начале.
Взятие адреса метки, нсколько я знаю, есть только в GCC. Поэтому protothreads в своём «максимально портабельном» виде сделаны через switch/case.
Третий путь - вместо возврата из точки, в которую нужно продолжение, сделать вызов специальной «системной» функции.
Она достаёт из стека адрес возврата (т.е. тот адрес, на который нужно вернуться в прерванную функцию), сохраняет его всвязанной с этой функцией переменной (и для switc/case, и для goto *label такая переменная есть, но её обрабатывает сама прерываемая функция). При последующем возврате в прерванную функцию делается переход по полученному адресу и всё выглядит так, как будто в основную функцию сделан возврат из систмной, хотя между этими событиями точно так же могли поработать многие другие функции.
Понятное дело, что
• Такое дело пишется на ассемблере, так как оно зависимо от контроллера и компилятора (устройстве стека возвратов, соглашениях о использовании регистров и т.п.)
• Размещённые в регистрах локальные переменные могут быть испорчены, так как компилятор рассчитывает, что «системная» функция выполяет соглашения о распределении регистров на сохраняемые вызывающим и сохраняемые вызываемым. Но «системная» функци не обычная, она порождает выполнение других функций, считающих все эти регистр «своими». В случае, подобном protothreads, из функции задачи всегда происходит явный возврат и потом явный вход с переходом по селектору, так что компилятор видит, что локальная переменная может быть не проинициализирована.
Где-то пробегала "RTOS", сделанная таким образом и даже сразу и под CodeVision, но я не запомнил ссылок. Меня для таких коперативок более чем удовлетворяет protothreads (раньше писал на явных switch-автоматах, как предлагал ARV, да и сейчас ими н брезгую, иногда такая явность даже лучше), а для более сложных случаев в более толстых контроллерах — вытесняющую scmRTOS.
Взятие адреса метки, нсколько я знаю, есть только в 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 в вопросах и ответах
О, вспомнил, где видел и как называлось.
http://electronix.ru/forum/lofiversion/ ... 69005.html
http://electronix.ru/forum/lofiversion/ ... 69005.html
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- Rinon Ninqueon
- Говорящий с текстолитом
- Сообщения: 1562
- Зарегистрирован: Ср июн 30, 2010 18:54:47
- Откуда: NO14MU
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
почему-то не пашет прерывание таймера
Вроде взял заезженный пример, только дисплей приделал, и вывожу к-во вызовов на него
где ошибка?
Вроде взял заезженный пример, только дисплей приделал, и вывожу к-во вызовов на него
где ошибка?
- Вложения
-
- interrupt.zip
- тут файлы Proteus и CVAVR с заголовками для дисплея
- (33.12 КБ) 158 скачиваний
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
в результате функция в библиотеке (тоже своей) не видит управляющие регистры таймера и что то мне подсказывает что она еще много чего не увидит
может такой вопрос и был уже - не нашел. к поиску не посылайте а лучше ссылочку подкиньте
Re: CodeVision AVR в вопросах и ответах
avreal писал(а):О, вспомнил, где видел и как называлось.
http://electronix.ru/forum/lofiversion/ ... 69005.html
Большое спасибо. С необходимостью писать программу с паралельными задачами/потоками сталкнулся впервые. Ранее удавалось обходиться более простыми способами. Сейчас программа реализованна примерно так... Есть некоторое колличество потоков живущих паралельно. Между собой потоки общаются через глобальные переменные и флаги. Флаги в общем-то тоже глобальные переменные тольк битовые. При временном выходе из функции я использую не return а свою функцию. Она делает тоже самое что и return но предварительно сохраняет адрес возврата в статической переменной. При повторном вызове, функция начинается с начала как и при обычном вызове. В начале функции стоит функция передающая управление по ранее сохранённому адресу. Вся эта конструкция работает нормально, но есть один неприятный момент. При первом вызове функции в переменной где должен быть адрес возврата, записан ноль. Пришлось установит проверку на ноль и не выполнять переход по адресу из переменной если ноль.
Моя родина Советский Союз.
Re: CodeVision AVR в вопросах и ответах
1. Неправильный флаг разрешения прерывания - должен быть: TIMSK=0x04;Rinon Ninqueon писал(а):почему-то не пашет прерывание таймера
где ошибка?
2. В функции прерывания TCNT1=0b10000-(8000000/1024);
а в main: TCNT1=0x10000-(Freq/1024);
Приведите к однообразному виду.
- Rinon Ninqueon
- Говорящий с текстолитом
- Сообщения: 1562
- Зарегистрирован: Ср июн 30, 2010 18:54:47
- Откуда: NO14MU
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
ValBag писал(а):Неправильный флаг разрешения прерывания - должен быть: TIMSK=0x04;
спасибо, в этом и проблема, в основном
я только начал прерывания изучать. Не въезжаю со всеми флагами ещё
UPD
порядок битов разный в книжке (Шпак) и ДШ
Последний раз редактировалось Rinon Ninqueon Пн окт 11, 2010 16:24:26, всего редактировалось 1 раз.
Re: CodeVision AVR в вопросах и ответах
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 в вопросах и ответах
Отлично. Всё правильно сделано, пока не появилась необходимость что-то усложнять — оставьте так.Morse писал(а):При первом вызове функции в переменной где должен быть адрес возврата, записан ноль. Пришлось установит проверку на ноль и не выполнять переход по адресу из переменной если ноль.
protothreads на gcc-шном расширении с взятием адреса метки в указательную переменную и переход по ней работает практически так же (тоже проверка на 0 в начале), только благодаря использованию расширения языка обходится без написанных на ассемблере функций. Написаны макросы (#define), всё встраивается по месту. Ну и компилируется для любого процессора, для которого есть gcc, без изменений в макросах. Других преимуществ, по сути, нет.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- evgeniy66
- Нашел транзистор. Понюхал.
- Сообщения: 151
- Зарегистрирован: Пт май 01, 2009 08:58:42
- Откуда: г. Коломна
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Сериг писал(а):я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?
Да.
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
evgeniy66 писал(а):Сериг писал(а):я в кодевижионе программирую там запрограммированныя фьюз( 0 )это галочка?
Да.
спасибо

- diim
- Нашел транзистор. Понюхал.
- Сообщения: 168
- Зарегистрирован: Сб фев 16, 2008 04:35:19
- Откуда: г.Тольятти
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
товарищи! добрый всем вечер! прошу помощи, по CAVR. пытаюсь запустить таймер на меге8 вот такой инструкций TCCR0= (1<<CS02) | (0<<CS01) | (0<<CS00); почему компилятор выдаёт ошибку? как на картинке!
- Вложения
-
- Захват-1.gif
- (1.58 КБ) 271 скачивание
***********
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********
Не трогайте мокрыми руками оголённые провода, они могут заржаветь.
***********

