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

Обсуждаем контроллеры компании Atmel.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

vitalik_1984 писал(а):Вот сложность то написать PORTB вместо B, зато не привязаны к определенной области регистров.
Ну да, лет десять назад так и было (а лет так четырнадцать назад были bit_set, bit_clr). Вы на правильном пути :-)
Это очень классно, только не даёт написать

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

DRIVER(LED,OUT);  // Тут пишем в DDR
ON(LED);          // Тут пишем в PORT
TOGGLE(LED);      // Тут пишем в PIN
if (LATCH(LED))   // Тут читаем из DDR

DRIVER(KEY,IN);   // Тут пишем в DDR
DRIVER(KEY,HIZ);  // Тут пишем в PORT
if (ACTIVE(KEY))  // Тут читаем из PIN  
И как это всё делать, если будет

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

#define LED PORTB,1,H 
Назад в пучину LEDPORT, LEDDDR, LEDPIN, KEYPORT, KEYDDR, KEYPIN ?
Спасибо, наелся.

p.s. Не, ну это конкретный изврат и оскорбление -- писать code=php для С/С++ кода
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

А ну да об этом не подумал :oops: , значит нужно для остальных регистров доделать.

Я видел кстати в макросах сделано типа PORTB+1 вроде как они как раз по порядку в регистрах идут.

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

Сообщение avreal »

vitalik_1984 писал(а):Я видел кстати в макросах сделано типа PORTB+1 вроде как они как раз по порядку в регистрах идут.
Почти у всех контроллеров. А у оставшихся — почти все порты.
Но вот у mega64(A)/128(A) регистры PORTF, DDRF находятся очень далеко от регистра PINF (а у меги103, на которой макросы уже работали, их вообще не было, порт F только входы).
Городить отдельную обработку для этих двух мег и по реальным адресам для порта F показалось неинтересным.
Если эти кристаллы отбросить, то можно и PIN, DDR=PIN+1, PORT=PIN+2 использовать.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Можно сделать иф деф и для этих мег просто этот вариант какой есть использовать.Или предупреждение что так писать не нужно,и как нужно.
В поисках истины человек развивается.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Добрый день... Ищу уже несколько часов пример использования EEPROM на ATmega8. Примеров полно, но не на СИ вCVAVAR. Ткните пожалуйста на таковой, можно без описания, думаю разберусь...
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Сообщение Apparatchik »

В CVAVR

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

eeprom char x;
далее переменную x можно использовать как обычную.
«И всё-таки она вертится!»
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Есть отличная книга по описанию функций и работы с CVAVR.
вообще то несложно работать.
выше уже опередили и написали.
Контактная информация:
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Спасибо большое.... Ато намучался сёдня с поиском :)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Странно, я просто в поиске гугла ввел книга code vision AVR первая же ссылка на эту книгу.У меня такая же скачана.Ее я и хотел показать.
Контактная информация:
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Я искал просто пример реализации еепром в цвавре... А книжку скачал... читаю :)
Вот ещё вопрос... Пытался как то раз запустить AVR Studio, не не получилось, и забил я на него. Щас скачал 6-ю версию, поставил, открываю файл .cof, а он мне ошибку выкидывает "Could not create project associated with the object file that was opened for debugging. None of the available object file readers can read the specified object file. Please check the format of the object file". Я и переустанавливал раза 3 её уже.
В чём может быть проблема подскажите пожалуйста...
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Попробуйте файлы сохранять с английскими путями.Вообще для симуляции используется студия 4.х где х не ниже версии, которая указывается при запуске симулятора(значек жучка на панели инструментов)
У меня 4.18 запускается нормально.
Могу попробовать в 6, но только не сегодня.
Контактная информация:
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Пробовать уже не надо.... Переименовал в английские буквы названия папок дирректории, и чё-то пошаманил. В итоге заработало, но что с ним делать пока не пойму, какие-то непонятные строки вылазят :))
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Подскажите с таким вопросом:
Всё флеш константы мы в прошивке определяем с самого начала, к примеру:
int der = 0;
При этом мы знаем, что в последующих операциях процесс пойдёт с нуля. А как быть с EEPROM? Если мы определим в прошивке определим так же, то прошивка сразу при старте будет затирать имеющееся число на 0 при инициализации? Я правильно понимаю?
И ещё одна не совсем раскрытая проблема. Была прошивка с константами во флеш. Переделал перед mаin-ом некоторые константы в EEPROM формата

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

eeprom int pogr_eep;
, и отсчёт начинается не с ноля, как положено, а то с 225, то с 65ХХХ . Грешу на то, что кроме добавления заголовка eeprom нужно что то ещё делать, чтоб оно заработало как надо....
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

при старте затирать ничего не будет.
1. нужно инициализировать переменную: eeprom int pogr_eep=0;
2. нужно прошить eeprom (файл с расширением .eep).

ps. и почему переменные константами зовете?
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Ясно... Спасибо большое!!! Щас попробую..
Блин, а вот насчёт переменных виноват, перепутал :oops:
И такой вопрос. А протеус с EEPROM вообще работает?
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

работает, только ему файл eeprom нужен в бинарном формате, а не в HEX, который CVAVR создает по умолчанию (не знаю, умеет ли он в другом)
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Указал к файлу .COF
Вроде заработал...
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Чт авг 16, 2012 21:34:24

Сообщение Davydov »

Подскажите, на ногах 0-3 порта D висит дешифратор 4/16, на 4-6 сдвиговый регистр.
Можно ли записывать десятичное число на порт D 0-3 отдельно, а остальными ногами работать с регистром?
Если бы это было так, это бы еще ничего. Если бы ничего, то так бы оно и было. Но так как это не так, так оно и не эдак. Такова логика вещей. (с)
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

можно. чтение-модификация-запись:
PORTD = (PORTD & 0xF0) | 'десятичное число для 0-3 бит'; // 0...15
PORTD = (PORTD & 0x8F) | ('десятичное число для 4-6 бит'<<4); // 0...7
можно по-битово: PORTD.1 = 'значение для бита 1';
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт апр 27, 2012 15:48:35

Сообщение TovsCat »

Этот пост был сгенерирован автоматически. Не нужно отвечать на это сообщение...
Ответить

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