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

Добавлено: Вт июл 29, 2008 13:05:57
igor727
Pippeytz писал(а):... запись ...DDRC= 0b1111111
Значит , что все биты в проту С будут выходами?
:shock:
Да.

Добавлено: Чт июл 31, 2008 20:03:28
ARV
не успел? :?

Добавлено: Чт июл 31, 2008 20:04:34
Сэр Мурр
Об идеологии построения программного обеспечения- пожалуйте в тему http://www.radiokot.ru/forum/viewtopic. ... highlight=

Добавлено: Пт авг 01, 2008 21:27:46
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);
     }
}
и всё бы хорошо но на экран ответ не выводится. Ответ на такую команду

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


144

ОК
Готовые решения не особо интересуют - мне бы узнать что Я делаю неправильно. Проэкт в CodeVision генерил мастером выставлял rx tx interrupt буфер 2 байта.

Добавлено: Ср авг 13, 2008 14:17:53
rotor
При чтении из lcd_buff на LCD выводятся все символы в том числе и LF(0xA) PF(0xD) в LCD они исправно отрабатываются и курсор LCD уходит за пределы видимой области, по этой причине и невидно ответов на.

Добавлено: Пт авг 15, 2008 16:39:54
Negor
ну вопревых символы LF и PF имеют 0x0A и 0x0D hex-коды соответственно. В программе есть проверка и символы с кодом ниже 0x1F не выводятся на дисплей(все непечатаемые символы)

Добавлено: Пн авг 18, 2008 23:00:33
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 нужно заполнить нулями.
Как же все это написать???

Добавлено: Вт авг 19, 2008 08:56:32
dbf-334
Всем привет!

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

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

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

Всем заранее спасибо!!! :)

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

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

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

Добавлено: Вт авг 19, 2008 12:29:10
RadioNefor
на мой вопрос забейте. уже разобрался )))

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

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

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

И вообще пример хотелось бы, в том числе на дребезг.

Добавлено: Пт авг 22, 2008 11:37:27
Aheir
Вы не поверите :))

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

состояние = PINx;
Антидребезг, например, так:

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

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

Добавлено: Пт авг 22, 2008 19:33:57
dbf-334
Aheir писал(а):Вы не поверите :))

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

состояние = PINx;
Антидребезг, например, так:

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

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

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

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

P.S. Спасибки!

Добавлено: Пт авг 22, 2008 19:44:34
tych
dbf-334 писал(а):А на размыкание контактов подавление дребезга есть или это не так потребно на самом деле...?
В правильной проге дребезг не мешает.

Добавлено: Вс авг 24, 2008 11:31:31
Тихан
Как сбросить фьюзы в CVAVR
Устоновить это поставить галку
А Сбросить?

Добавлено: Вс авг 24, 2008 14:47:36
regenerator
Как сделать прерывание в CVAVR, чтоб через каждую секунду бесконечный цикл прерывался, выполнялись действия с переменными, а затем цикл продолжался?
МК: ATmega32(16)(8).
Частота: 1Мгц.
Пожалуйста, приведите пример кода.

Добавлено: Вс авг 24, 2008 15:48:02
tych
regenerator писал(а):Как сделать прерывание в CVAVR, чтоб через каждую секунду бесконечный цикл прерывался, выполнялись действия с переменными, а затем цикл продолжался?
Настраивать прерывания удобно матером кода CVAVR

Добавлено: Вс авг 24, 2008 15:59:01
tych
Тихан писал(а):А Сбросить?
термин расшифруйте !

Добавлено: Вс авг 24, 2008 16:03:24
regenerator
tych писал(а):Настраивать прерывания удобно матером кода CVAVR .
Я знаю, что такоё прерывания и какими они бывают. Мне не нужно "наглядно". Там у вас с кнопки. А мне надо по таймеру.
Я просто не умею читать даташиты и поэтому не знаю в какие регистры, что нужно записывать.
И я не нашёл пример кода прерывания по таймеру.
tych писал(а):
Тихан писал(а):А Сбросить?
термин расшифруйте !
Парень, наверное, имел веду, как установить по дэфолту.

Добавлено: Вс авг 24, 2008 16:20:02
tych
regenerator писал(а):я не нашёл пример кода прерывания по таймеру.
А вы читайте ВНИМАТЕЛЬНО !
Задача 6

Создаем программу 50 раз в секунду прерывающуюся по Таймеру_0
и посылающую данные на ПК. Точная подгонка временных интервалов создаваемых с помощью таймеров. Различные режимы работы таймеров. В симуляторе VMLAB проверяем правильность времени прерываний и сохраняем принятые от МК данные в файл.