РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



Архив - только для чтения
Схемы отладочных плат для МК
Сообщение # 51        
Бухарь
аватар
  Постов: 315   Друзья 
UR3LBL, как и обещал вот подправленные библиотеки. sl8869, ты не скопировал библиотеки в нужное место. Возьми эти и помести в соответствующие папки в CodeVision. Ну и убери кириллицу из адреса, как и писал ear .
Файлы: 1100.h (1.0 Kb) · 1100.lib (21.1 Kb)
Сообщение # 52        
qwe
аватар
  Постов: 19   ОК 
Здравствуйте, пытаюсь подключить дисплей к mega168pa, но не выходит,все пробовал,вплоть до простой замены заголовочного файла, поправьте и расскажите что не так,файлы с исходниками и протеусом прилагаю.
Файлы: 5943097.rar (55.3 Kb)
Сообщение # 53        
Бухарь
аватар
  Постов: 315   Друзья 
qwe, а ты пробовал только в протеусе ? Проверял ли в железе ? На протеус не всегда стоит полагаться.
Сообщение # 54        
qwe
аватар
  Постов: 19   ОК 
Бухарь, и там и там, светик загорелся(я поставил после инициализации на порт 1) и все, пробовал две библиотеки(пару постов выше, другая что вы мне рекомендовали с задержками) глухо. Куда копать? В самом CVAvr менял и mega168 и галочку в свойствах добавлял, не знаю в каком направлении двигаться(
P.S. по протеусу даже порты не "дрыгаются".
Сообщение # 55        
sl8869
аватар
  Постов: 14   ОК 
Всем СПАСИБО ОГРОМНОЕ!!!!! всё получилось!разместив библиотеки в cvavr
Сообщение # 56        
Бухарь
аватар
  Постов: 315   Друзья 
qwe, удалось запустить дисплей в протеусе. Дам тебе hex файл. Попробуй запустить в железе. В случае удачного запуска попробую объяснить как подправить исходник.

Файлы: 9422651.jpg (123.1 Kb) · 8138663.hex (9.1 Kb)
Сообщение # 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% косяков больше!!!!!!!!!!!!
Сообщение # 58        
Бухарь
аватар
  Постов: 315   Друзья 
SssaHeKkk, критика это хорошо. Тем более от знающего человека. Можно посмотреть на свои ошибки глазами другого человека. Но художника может обидеть каждый. Косяков с точки зрения профессионала там много. Можно сказать, что программа вообще сплошной косяк. Написал как мог. У меня нет опыта и человека, чтоб объяснил. Опыт приходит со временем. На другой раз учту. Да и исходники тоже наверно выкладывать не буду. Как бы хорошо был не написан - все равно обосрут.
Сообщение # 59        
SssaHeKkk
аватар
  Постов: 2291   Друзья 
выложил для этого
Цитата Бухарь ()
Можно посмотреть на свои ошибки глазами другого человека

а не для этого
Цитата Бухарь ()
художника может обидеть каждый
Сообщение # 60        
Бухарь
аватар
  Постов: 315   Друзья 
Цитата SssaHeKkk ()
Кто сказал что контроллер умеет аппаратно делить? Это ж память жрет и особенно время выполнения данных операций. Лучше написать функцию замещения деления через вычитания

То что он не умеет делить аппаратно - я догадывался. Можно посмотреть пример такой функции ?
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA