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

Обсуждаем контроллеры компании Atmel.
igor727
Родился
Сообщения: 18
Зарегистрирован: Сб июл 05, 2008 13:21:59

Сообщение igor727 »

Pippeytz писал(а):... запись ...DDRC= 0b1111111
Значит , что все биты в проту С будут выходами?
:shock:

Да.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

не успел? :?
Последний раз редактировалось ARV Чт июл 31, 2008 20:04:50, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Сэр Мурр
Модератор
Сообщения: 11169
Зарегистрирован: Чт окт 27, 2005 18:50:07
Откуда: из мест не столь отдалённых

Сообщение Сэр Мурр »

Об идеологии построения программного обеспечения- пожалуйте в тему http://www.radiokot.ru/forum/viewtopic. ... highlight=
Аватара пользователя
Negor
Вымогатель припоя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина
Контактная информация:

Сообщение Negor »

Итак ситуация следущего характера - вяжу телефон с ATMega8 по uart в proteus. В терминале телефон себя ведёт адекватно - реагирует как надо. Если терминал proteus подключить к компоненту compim - тоже всё гуд. и даже када мега отправляет команду - ответ в рам тоже правильный хранится. А вот вывести ответ на дисплей - фиг.

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

lcd_putsf("ATI ");              //выводим команду на дисплей
putsf("ATI");                    //запускаем в терминал
putchar(0x0D);                //выводим код "перевод каретки"
while(rx_counter)             //следуя курсу авр123 пока есть символы в буфере - выводим их.
{
     buff=getchar();         //выводим если символ печатаемый
     if (buff>0x1F)
     {
         lcd_putchar(buff);
     }
}

и всё бы хорошо но на экран ответ не выводится. Ответ на такую команду

Готовые решения не особо интересуют - мне бы узнать что Я делаю неправильно. Проэкт в CodeVision генерил мастером выставлял rx tx interrupt буфер 2 байта.
There is only 10 kind of people: those who understands binary code and those who dont!!!
rotor
Родился
Сообщения: 3
Зарегистрирован: Ср июн 18, 2008 09:02:56

Сообщение rotor »

При чтении из lcd_buff на LCD выводятся все символы в том числе и LF(0xA) PF(0xD) в LCD они исправно отрабатываются и курсор LCD уходит за пределы видимой области, по этой причине и невидно ответов на.
Аватара пользователя
Negor
Вымогатель припоя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина
Контактная информация:

Сообщение Negor »

ну вопревых символы LF и PF имеют 0x0A и 0x0D hex-коды соответственно. В программе есть проверка и символы с кодом ниже 0x1F не выводятся на дисплей(все непечатаемые символы)
There is only 10 kind of people: those who understands binary code and those who dont!!!
Аватара пользователя
RadioNefor
Открыл глаза
Сообщения: 56
Зарегистрирован: Пт мар 28, 2008 00:39:54
Откуда: Беларусь. Новополоцк.
Контактная информация:

Сообщение RadioNefor »

Помогите решить проблему, а то я что-то уже задолбался.
Есть два массива: times[6] и outs[6], т.е. в них по шесть чисел однобайтных. В массиве times некоторые числа могут совпадать, а могут и все совпадать, а могут и все разные быть. Расположены они ПО ВОЗРОСТАНИЮ. В массиве outs все числа разные, расположены хаотично. Нужно заполнить третий массив resultouts, и четвертый resulttimes вот так (например):

times: 50, 50, 120, 190, 190, 190
outs: 0b00000010, 0b00100000, 0b00000001, 0b00000100, 0b00001000, 0b00010000

resulttimes: 50, 120, 190, 0, 0, 0
resultouts: 0b00100010, 0b00000001, 0b00011100, 0b00000000, 0b00000000, 0b00000000

Т.е. если числа в times совпадают, то соответствующие им числа в outs «перемешиваются» операцией или (or) и помещаются в ячейку массива resultouts. Неиспользуемые ячейки resultouts и resulttimes нужно заполнить нулями.
Как же все это написать???
dbf-334
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 06, 2008 10:59:45

Сообщение dbf-334 »

Всем привет!

Вопрос из разряда для новичков... =) Не могу разобраться с командой PIN на CodeVisionAVR. Точнее как считывать показания порта, если кнопка нажата.

Например: на порте А есть две кнопки, на порте В три светодиода. Нажимаем первую кнопку загорается первый светодиод, нажимаем вторую кнопку загорается второй светодиод. Если нажимаем обе кнопки одновременно, то загорается третий светодиод. Вообщем помогите написать эту простую программу.

И еще хотелось бы узнать как обойти дребезг контактов (замыкание, размыкание). Т.е. програмку тоже хотелось бы увидеть...

Всем заранее спасибо!!! :)
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

dbf-334 писал(а):Не могу разобраться с командой PIN на CodeVisionAVR. Точнее как считывать показания порта, если кнопка нажата.
например так

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

куда считать = PINx.n ;
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
RadioNefor
Открыл глаза
Сообщения: 56
Зарегистрирован: Пт мар 28, 2008 00:39:54
Откуда: Беларусь. Новополоцк.
Контактная информация:

Сообщение RadioNefor »

на мой вопрос забейте. уже разобрался )))
dbf-334
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 06, 2008 10:59:45

Сообщение dbf-334 »

tych писал(а):
dbf-334 писал(а):Не могу разобраться с командой PIN на CodeVisionAVR. Точнее как считывать показания порта, если кнопка нажата.
например так

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

куда считать = PINx.n ;


Это я и так знаю... :( Мне нужно узнать как получить байт от всего порта, а не отдельного контакта.

И вообще пример хотелось бы, в том числе на дребезг.
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Вы не поверите :))

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

состояние = PINx;

Антидребезг, например, так:

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

if (кнопка нажата)
   {
   delay_ms(10..30);
   if (все еще нажата)
       }
       ...
       }
   }
Оптимизм х (Опыт + Знания) = const
dbf-334
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт мар 06, 2008 10:59:45

Сообщение dbf-334 »

Aheir писал(а):Вы не поверите :))

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

состояние = PINx;

Антидребезг, например, так:

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

if (кнопка нажата)
   {
   delay_ms(10..30);
   if (все еще нажата)
       }
       ...
       }
   }



Черт, вроде пробовал так PINx не работал или я тогда где-то напортачил. :)

А на размыкание контактов подавление дребезга есть или это не так потребно на самом деле...?

P.S. Спасибки!
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

dbf-334 писал(а):А на размыкание контактов подавление дребезга есть или это не так потребно на самом деле...?

В правильной проге дребезг не мешает.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Как сбросить фьюзы в CVAVR
Устоновить это поставить галку
А Сбросить?
Аватара пользователя
regenerator
Мучитель микросхем
Сообщения: 462
Зарегистрирован: Ср ноя 21, 2007 19:04:23

Сообщение regenerator »

Как сделать прерывание в CVAVR, чтоб через каждую секунду бесконечный цикл прерывался, выполнялись действия с переменными, а затем цикл продолжался?
МК: ATmega32(16)(8).
Частота: 1Мгц.
Пожалуйста, приведите пример кода.
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

regenerator писал(а):Как сделать прерывание в CVAVR, чтоб через каждую секунду бесконечный цикл прерывался, выполнялись действия с переменными, а затем цикл продолжался?

Настраивать прерывания удобно матером кода CVAVR
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Тихан писал(а):А Сбросить?

термин расшифруйте !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
regenerator
Мучитель микросхем
Сообщения: 462
Зарегистрирован: Ср ноя 21, 2007 19:04:23

Сообщение regenerator »

tych писал(а):Настраивать прерывания удобно матером кода CVAVR .

Я знаю, что такоё прерывания и какими они бывают. Мне не нужно "наглядно". Там у вас с кнопки. А мне надо по таймеру.
Я просто не умею читать даташиты и поэтому не знаю в какие регистры, что нужно записывать.
И я не нашёл пример кода прерывания по таймеру.

tych писал(а):
Тихан писал(а):А Сбросить?

термин расшифруйте !

Парень, наверное, имел веду, как установить по дэфолту.
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

regenerator писал(а):я не нашёл пример кода прерывания по таймеру.

А вы читайте ВНИМАТЕЛЬНО !
Задача 6

Создаем программу 50 раз в секунду прерывающуюся по Таймеру_0
и посылающую данные на ПК. Точная подгонка временных интервалов создаваемых с помощью таймеров. Различные режимы работы таймеров. В симуляторе VMLAB проверяем правильность времени прерываний и сохраняем принятые от МК данные в файл.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Ответить

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