Архив старого форума

Это архив старого форума !—sp-forum—
Этот форум в настоящее время закрыт — только для чтения
Чтобы оставлять сообщения, авторизуйтесь Вход

Поиск в форумах:


 




Отладка программы

ПользовательСообщение

20:48
28 Январь 2010


noise

Здравствуйте!

сообщений 3

1

Здраствуйте! Написал программу под кодовый замок. В железе естественно не работает, т.к. только учусь. Решил отладить в AVRstudio. Клавиатура в виде матрицы 4 строки, 3 столбца. Алгоритм примерно такой: накладываю маску на порт (строки) и читаю состояние другого порта (столбцы) и ищу заветный «нолик», нашел — значит эта кнопка нажата. Код кнопки записал в ОЗУ. Нижняя строка кнопок по функционалу такова: «звонок», «0/смена режима работы», «сброс». Поэтому перед сохранением в ОЗУ кода кнопки проверяю является ли она одной из 3-х нижних. Как отлаживаю: выставил PinD (столбцы) 011 в студии в момент опроса 4 строки, т.е. сэмулировал нажатие кнопки звонок, далее соверешенно верно попал в подпрограмму «звонок» и опрашиваю Pin того столбца где поймал ноль:

sbi portb,5 ; включить звонок
m16: sbis PinD,4;
rjmp m16
cbi portb,5; выключить звонок
ret

В студио все отрабатывает идеально, в железе не работает. Это первая проблема.
Чуть выше я писал что накладываю маску опрашиваемой строки, например, нажата если нажата кнопка второй строки то у меня в порт выводится 1101. После получения кода кнопки и записи в ОЗУ, выхожу из обработчика прерывания (вся клавиатура висит на внешнем прерывании) не сбрасывая его (а зачем? по идее должно же работать? при следующем нажатии на кнопку другой строки новая маска затрет старую командой out PortX — или не успеет?!). Т.е. до нажатия новой кнопки в порту должна быть маска на ножках только что нажатой кнопки. Но вместо нее 1110. Это второй вопрос/проблема. При этом опять же в AVRstudio все работает, т.е. состояние порта такое как и должно быть согласно программе.
Ну и наконец. Объясните пожалуйста подробнее как посмотреть содержимое ОЗУ а заодно и епром, чтобы проконтролировать пишется ли туда код нажатой кнопки. Командой View — memory ничего не понял. Заранее благодарен.

22:13
30 Январь 2010


noise

Здравствуйте!

сообщений 3

2

Ну тогда хотя бы скажите как самому поменять значение епром, чтобы там были какие-нибудь начальные числа. hex редактор для этого нужен?

22:25
30 Январь 2010


DI HALT

Администратор

сообщений 1444

3

.eeseg

byte: db 0,2,3,4
string: db «this is string»

А вообще все ушли сюда forum.easyelectronics.ru

 


11 thoughts on “Архив старого форума”

  1. Доброго времени суток.У меня тоже была такая ситуация :купил графический дисплей за 19.50 грн. ,пришел домой,начал искать информацию про дисплей но кроме надписи на дисплее D1560T01 ничего не нашел.В конце концов пошел обратно в магазин и они мне скинули документацию про дисплей http://files.mail.ru/ZD50R7

      1. это я отвечал человеку который искал какую нибудь информацию про дисплей D1560T01.После ответа увидел, что он интересовался еще в 2009 году…)))

        1. Самое забавно, что ответ он не увидит. Т.к. он появится не в форуме (который закрыт), а в комментах к странице куда приткнуть вообще весь форум. Получается голос в пустоту :)

  2. печально…тогда в ЛС что ли написать,хотя за два с копейками года он наверное забыл про свой вопрос .

  3. Добрый вечер, сенсеям программирования! я кнешно еще нубас и только учусь. но у меня вопрос. Я преобрел демоплату в.2 и начал программировать. написал простецкую прогу: «нажал на кномку с пинки 1 и вкл. диод на пинке 2», но почему-то она не работает :(

    Вот код
    #include

    int main(void)
    {
    DDRC = 0x00; //порт С на вход
    PORTC = 0xFF; //подключаем нагрузочные резисторы

    DDRB = 0xFF; //порт B на выход
    PORTB = 0x00; //устанавливаем нули на выходе

    while(1)

    {
    if ((PINC&(1 << PC2)) == 1) //проверяем нажатие кнопки
    { PORTB &(1 << PB0);} //включаем светодиод
    else
    {
    PORTB &= ~(1 << PB0); //гасим светодиод
    }
    }
    }

    Писалась прога в АVR Studio4

    В ЧЕМ МОЙ КОСЯК?!

    Зарание спасибо!!!

    1. Перенеси на другой порт. НА порту С (точнее на четырех его пинах) сидят линии жтага TDI/TDO/TCK/TMS и по дефолту ты их как порты пользовать не можешь.

  4. Привет. Нужна помощь. Я новичок и полный профан в организации последовательных протоколов. Мне надо организовать на I2c управление с микроконтроллера электромеханическими приводами, точнее силовыми катушками. Не могу разобраться даже с необходимым оборудованием.
    Заранее спасибо.

    1. Я так думал: если при приеме байта потерялись биты и принимающий контроллер выдал флаги ошибок, то он будет ждать следующего старт бита нового байта и игнорить остальное , или по крайней мере как это реализовать?

Добавить комментарий

Ваш e-mail не будет опубликован.

Перед отправкой формы:
Human test by Not Captcha