Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.05.2008, 11:10
|
#11
|
Почётный гражданин KAZUS.RU
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,726 раз(а) в 707 сообщении(ях)
|
Уже много времени потратил на поиски HI-TECH, но пока безрезультатно. Использую сам CCS PIC и ассемблер, но очень часто встречаю программные модули на HI-TECH. И по мнению довольно опытных старожилов PICовских сайтов - HI-TECH лучше.
Буду благодарен, если помогут ссылкой или скинут на E-mail - Welcome61{собака}mail.ru. Книгу также ищу на русском. В сети есть одна книжка, но везде она в урезанном варианте - 24 стр.Автор - Яловой "Особенности и рабочая среда HI-TECH".
Заранее благодарен.
|
|
|
|
18.05.2008, 15:02
|
#12
|
Прописка
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Сообщение от CERGEI1982
|
хочу сделать инициализацию управляющих регистров,подключая в проект #include"init.c",но компилятор ругается
Error[983] C:MOI PROEKTsimens_c55_test_CINIT.C 3 : storage class redeclared
Error[984] C:MOI PROEKTsimens_c55_test_CINIT.C 3 : type redeclared
Error[239] C:MOI PROEKTsimens_c55_test_CINIT.C 3 : identifier "STATUS" redefined (from line 25)
на каждый регистр который хочу инициализировать.
Попробывал теже строки вставить в main(),компилится без ошибок.Что не так,может нужно прописать *.h ?
|
На самом деле все это происходит потому
что директива include не просто вставляет кусок одного файла в другой,
- как кстати пишут в книжках
Для инициализации переменной во внешнем файле нужно
чтобы она была объявлена как extern,
получается, что в случае со спец. регистрами придется
перелопачивать библиотечные файлы pic16xxx.h ...
В общем все это долгая история
По моему нужно просто оформить инициализацию
как отдельную процедуру,
- по крайней мере все так делают
и ничего лучше еще вроде не придумали
|
|
|
|
18.05.2008, 16:19
|
#13
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
double_dash спасиб,тоже пришел к такому выводу-вызов из майн функции инициализации.Но про extern запомню на будущее.
|
|
|
|
18.05.2008, 18:36
|
#14
|
Прописка
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Вопрос не совсем по темe
но все же около
Может кто пользовалься
файлом lcd.c из хайтековской библиотеки?
Чё то там по моему не то натворено -
строб как странно описан:
#define LCD_STROBE() ((LCD_EN=1),(LCD_EN=0))
Получается что срабатывать он должен
один раз
самое большое
-в начале.
Так на самом деле и получается:
выбирается 4-битный режим,
а дальше, что бы не менял, -
все значения по умолчанию
-однострочный режим, негатив и
мигающий курсор
Хотя в Proteus'е все работает(?!)
|
|
|
|
18.05.2008, 19:09
|
#15
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
C чего это - один раз ??? Этот макрос входит в функцию записи, например...
|
|
|
|
19.05.2008, 00:16
|
#16
|
Прописка
Регистрация: 15.10.2006
Сообщений: 130
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
|
А у вас он работает?
(не в Proteus'е)
У меня строб проходит
только один раз
- это точно.
Возможно из за погрешности delay -
При кварце 10 МГц она наверно большая
|
|
|
|
19.05.2008, 07:28
|
#17
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Код:
|
#define LCD_STROBE() ((LCD_EN=1),(LCD_EN=0)) |
абсолютно нормальная конструкция. Каждый раз при вызове из программы LCD_STROBE; будет проходить строб.
|
|
|
|
19.05.2008, 07:47
|
#18
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Сообщение от double_dash
|
Может кто пользовалься
файлом lcd.c из хайтековской библиотеки?
|
Не нашел в своей библиотеке в хайтеке,но в примерах есть.
|
|
|
|
19.05.2008, 09:01
|
#19
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Сообщение от double_dash
|
Возможно из за погрешности delay -
При кварце 10 МГц она наверно большая
|
Нет. Но когда больше 10, нужно ставить другую delay. Это уже здесь обсуждалось. Что касается 100% рабочего кода на хайтеке с лсд, то возьмите код DL36 отсюда -
http://remexpert.com/forum/topic1000.html он еще добавил сдвиговый регистр для экономии ножек.
|
|
|
|
19.05.2008, 21:44
|
#20
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от urry
|
C чего это - один раз ??? Этот макрос входит в функцию записи, например...
|
Никогда с хайтек-Си не работал, а что если он это присвоение съедает во время оптимизации кода? Надо бы узнать:
Сообщение от double_dash
|
У меня строб проходит
только один раз - это точно.
|
откуда уверенность?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:23.
|
|