Схемы отладочных плат для МК
|
|
| Сб, 01.02.2014, 11:58 | Сообщение # 51
|
Бухарь
Постов: 315
Друзья |
UR3LBL, как и обещал вот подправленные библиотеки. sl8869, ты не скопировал библиотеки в нужное место. Возьми эти и помести в соответствующие папки в CodeVision. Ну и убери кириллицу из адреса, как и писал ear .
|
|
| Вс, 02.02.2014, 21:09 | Сообщение # 52
|
qwe
Постов: 19
ОК |
Здравствуйте, пытаюсь подключить дисплей к mega168pa, но не выходит,все пробовал,вплоть до простой замены заголовочного файла, поправьте и расскажите что не так,файлы с исходниками и протеусом прилагаю.
|
|
| Вс, 02.02.2014, 23:36 | Сообщение # 53
|
Бухарь
Постов: 315
Друзья |
qwe, а ты пробовал только в протеусе ? Проверял ли в железе ? На протеус не всегда стоит полагаться.
|
|
| Пн, 03.02.2014, 00:11 | Сообщение # 54
|
qwe
Постов: 19
ОК |
Бухарь, и там и там, светик загорелся(я поставил после инициализации на порт 1) и все, пробовал две библиотеки(пару постов выше, другая что вы мне рекомендовали с задержками) глухо. Куда копать? В самом CVAvr менял и mega168 и галочку в свойствах добавлял, не знаю в каком направлении двигаться( P.S. по протеусу даже порты не "дрыгаются".
|
|
| Пн, 03.02.2014, 12:17 | Сообщение # 55
|
sl8869
Постов: 14
ОК |
Всем СПАСИБО ОГРОМНОЕ!!!!! всё получилось!разместив библиотеки в cvavr
|
|
| Пн, 03.02.2014, 17:48 | Сообщение # 56
|
Бухарь
Постов: 315
Друзья |
qwe, удалось запустить дисплей в протеусе. Дам тебе hex файл. Попробуй запустить в железе. В случае удачного запуска попробую объяснить как подправить исходник.
|
|
| Пн, 03.02.2014, 18:14 | Сообщение # 57
|
SssaHeKkk
Постов: 2291
Друзья |
лови немного критики...незнаю нужно ли тебе это...советы от знающего человека...См. файл watch1202.c
1) char sek , min , chas ,den , budmin, budchas че за бредовые названия? Надо называть вещи своими именами seconds(секунды), hours (часы), day (день), alert_min(минуты будильника), alert_hour (часы будильника), alert_on (будильник включен) – название переменной должно говорить за себя, а не типа pikpik (че за фигня так и не въехал – в этой лаже разбираться неохота). И почему будильник при 0 включен, а при 1 выключен? Обычно наоборот. 2) int menu=0 – нифига се…больше 65 тыщ всяких значений меню, лучше использовать однобайтную переменную – все ж будет экономия оперативки. 3) Все шрифты вынести в отдельный файл типа fonts.h и подцепить к либе дисплея, т.к. не нужно захламление основного файла ненужной информацией да и потом файлы шрифтов проще таскать от проекта к проекту, не занимаясь копипастом. И зачем ваще массивы со шрифтами были объявлены со спецификатором static? 4) PORTB.2=1 – только в CVAVR можно подобную лажу увидеть. Та же AVR Studio или IAR пошлет подальше с такой конструкцией (ошибками закидает). Надо писать максимальнопереносимый под другие компиляторы код, ведь в теме на форуме дофига трепа про Си, а Си такого не приемлет (конечно можно через макросы или дефайны, но этого нету). 5) hsek= sek/10; lsek= sek%10; hmin= min/10; lmin= min%10; hchas= chas/10; lchas= chas%10; hbudmin= budmin/10; lbudmin= budmin%10; hbudchas= budchas/10; lbudchas= budchas%10; Кто сказал что контроллер умеет аппаратно делить? Это ж память жрет и особенно время выполнения данных операций. Лучше написать функцию замещения деления через вычитания, что сэкономит flash (мелочь) и особенно процессорное время (уже ощутимо при таком количестве делений). 6) Комментов в коде ваще почти нет. Если выкладываешь для других, то будь добр, объясни че такое hchas и lchas (я то понимаю что это старший и младший байты). unsigned char dd=10 – это вообще загадка. Про затрату 1 байта на цифру говорить не буду (есть вариант упакованного формата – 2 цифры на байт и не пришлось бы делить на старший и младший), т.к. не знаю нужно тут или нет (во все вникать не охота). 7) if(budon==0){ if(chas==budchas){ if(min==budmin){ }; }; }; Это чистой воды ерунда. Что мешает объединить под одним оператором if? Ведь намного улучшится читаемость кода. 8) if(menu==0)char_32_16(menu,57,6); if(menu==1)char_32_16(menu,57,6); if(menu==2)char_32_16(menu,57,6); if(menu==3)char_32_16(menu,57,6); if(menu==4)char_32_16(menu,57,6); if(menu==5)char_32_16(menu,57,6); if(menu==6)char_32_16(menu,57,6); Это полная жопа! А если меню = 0, то зачем проверять все остальное (расход процессорного времени на ненужные операции)? Хотя бы организовать через switch. 9) Зачем под отсчет временных интервалов использовать самый навороченный таймер? Я согласен что для другого он тут не используется, но нужно разумно подходить к ресурсам контроллера. Для этих целей вполне хватит Timer2. 10) Полное незнание периферии, т.к. при настройке использован Wizard, что отхавывает flash на ненужные операции. 11) lcd_init(); delay_ms(200); lcd_init(); Зачем 2 раза инициализировать??????????????? Если сцышь за какой-то там кондер, то просто потупи свои 200мсек и сделай инициализацию. 12) if(menu==0){ while(ends==0){ if(PIND.5==0){ delay_ms(500); menu=1; ends=1; }; Это вообще что….Кнопки обрабатываются через задержку… полсекунды контроллер ниче не делает (при тактовой 8МГц за полсекунды может выполнится 4000000 простейших инструкций). Во-первых достаточно примерно 100ms и делать надо через таймеры с циклическим опросом. И вообще (на сколько я понял) какие кнопки висят на порте D (бит - кнопка), т.е. че они делают, мне че, вечно в схему зырить если я захочу изменить? Надо абстрагироваться от железа и задефайнить их, чтоб не рыскать по коду, а в одном месте их переопределить. 13) А теперь возвращаемся в середину кода….самый офигенный косяк… Вызов функции showtime(); в прерывании!!!!!!!!!!!! Это каким надо быть глупым чтоб это сделать!!!!!!!!!!!!!!
Написано при беглом просмотре. 100% косяков больше!!!!!!!!!!!!
|
|
| Пн, 03.02.2014, 18:50 | Сообщение # 58
|
Бухарь
Постов: 315
Друзья |
SssaHeKkk, критика это хорошо. Тем более от знающего человека. Можно посмотреть на свои ошибки глазами другого человека. Но художника может обидеть каждый. Косяков с точки зрения профессионала там много. Можно сказать, что программа вообще сплошной косяк. Написал как мог. У меня нет опыта и человека, чтоб объяснил. Опыт приходит со временем. На другой раз учту. Да и исходники тоже наверно выкладывать не буду. Как бы хорошо был не написан - все равно обосрут.
|
|
| Пн, 03.02.2014, 18:52 | Сообщение # 59
|
SssaHeKkk
Постов: 2291
Друзья |
выложил для этого Цитата Бухарь ( ) Можно посмотреть на свои ошибки глазами другого человека а не для этого Цитата Бухарь ( ) художника может обидеть каждый
|
|
| Пн, 03.02.2014, 19:18 | Сообщение # 60
|
Бухарь
Постов: 315
Друзья |
Цитата SssaHeKkk ( ) Кто сказал что контроллер умеет аппаратно делить? Это ж память жрет и особенно время выполнения данных операций. Лучше написать функцию замещения деления через вычитания То что он не умеет делить аппаратно - я догадывался. Можно посмотреть пример такой функции ?
|
|