Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
Shershnyov
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Чт фев 07, 2013 10:46:46
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Shershnyov »

dosikus писал(а):О какой остановке таймера идет речь? :)))

Все завязано на одном TMR0. Он и меняет разряды на семисегментнике, он и тикает секунду для таймера. Речь идет о том как правильно реализовать "стоп" таймера(устройства). Запустили таймер секунды начали отсчитываться вот для него нужно реализовать кнопки стоп и старт. Как правльно реализовать? Если данные выводятся с помощью динамической индикации. Может у кого то есть исходники на си подобного устройства? что бы посмотреть как реализовано меню(управление) устройства.
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Програмирование pic на СИ.

Сообщение Ghost in shell »

Как записать значение переменой по адресу памяти? Я смотрю в ICProg, 0000, 0008, 0010, 0018, 0020. И где логика?
В PonyProg все понятно. И сразу вопрос: как ввести в обиход старший байт? 255 (FF) - это как-то мало...
Вложения
FF.jpg
(172.2 КБ) 453 скачивания
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

Ghost in shell писал(а):Как записать значение переменой по адресу памяти? Я смотрю в ICProg, 0000, 0008, 0010, 0018, 0020. И где логика?
В PonyProg все понятн

В каждой строке по 8 байт .
В лошади в строке 16 байт.
Что Вас смущает ? :)))

Ghost in shell писал(а): И сразу вопрос: как ввести в обиход старший байт? 255 (FF) - это как-то мал.

Завести переменную 16бит ...
Chettuser

Re: Програмирование pic на СИ.

Сообщение Chettuser »

Лошадью еще пользуются? :shock:
Её давно пора на скотобойню!
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: Програмирование pic на СИ.

Сообщение Ghost in shell »

Вопрос остался открытым: как записать число непосредственно в память МК? И как это сделать для 8 и 16 бит?
Ну и как считать.

Да, пользуюсь лошадью. Абы работало. Я еще и PCAD 4.5 использую. 8)
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Ghost in shell писал(а):как записать число непосредственно в память МК?
Не совсем понятен вопрос. Что означает "память МК" и что значит непосредственно ?
Ну и для чего это вообще нужно ? Вдруг найдутся альтернативные решения Ваших задумок.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Програмирование pic на СИ.

Сообщение dosikus »

Ghost in shell писал(а):Да, пользуюсь лошадью. Абы работало. Я еще и PCAD 4.5 использую. 8)


То что пользуете еще полбеды , вы похоже этим гордитесь... :)))
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

Люди помогите пож в программировании на си
Пишу программу впервые, параллельно изучаю си, подпрограммы собрал с миру по нитке,
память не экономил, действовал по принципу пишу как получается, если не хватит буду оптимизировать, там где можно использовать bit или еще более экономичные структуры использовал чар, писал писал пока не дописался вот до такого сообщения:

Build E:\kaskad\pr1 for device 16F877A
Using driver C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe

Make: The target "E:\kaskad\delay.p1" is up to date.
Make: The target "E:\kaskad\main.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" --pass1 E:\kaskad\main.c -q --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Make: The target "E:\kaskad\ds18.p1" is up to date.
Make: The target "E:\kaskad\lcd.p1" is up to date.
Make: The target "E:\kaskad\rtc.p1" is up to date.
Make: The target "E:\kaskad\usart.p1" is up to date.
Make: The target "E:\kaskad\i2c.p1" is up to date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" -opr1.cof -mpr1.map --summary=default --output=default delay.p1 main.p1 ds18.p1 lcd.p1 rtc.p1 usart.p1 i2c.p1 --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a
Copyright (C) 2010 Microchip Technology Inc.
Serial number: HCPICP-654321 (PRO)
Error [1356] E:\kaskad\ds18.c; 35. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1E14/0x2 -> 0xF0A (pr1.obj 184/0x20)
Error [1356] E:\kaskad\ds18.c; 36. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1E3A/0x2 -> 0xF1D (pr1.obj 184/0x46)
Error [1356] E:\kaskad\ds18.c; 38. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1E64/0x2 -> 0xF32 (pr1.obj 186/0x14)
Error [1356] E:\kaskad\ds18.c; 28. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1EA4/0x2 -> 0xF52 (pr1.obj 186/0x54)
Error [1356] E:\kaskad\ds18.c; 29. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1EDA/0x2 -> 0xF6D (pr1.obj 188/0x30)
Error [1356] E:\kaskad\ds18.c; 30. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1EE8/0x2 -> 0xF74 (pr1.obj 188/0x3E)
Error [1356] E:\kaskad\ds18.c; 20. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1F30/0x2 -> 0xF98 (pr1.obj 190/0x3E)
Error [1356] E:\kaskad\ds18.c; 20. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1F3C/0x2 -> 0xF9E (pr1.obj 190/0x4A)
Error [1356] E:\kaskad\ds18.c; 21. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1F5E/0x2 -> 0xFAF (pr1.obj 193/0xC)
Error [1356] E:\kaskad\delay.c; 22. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0xE66/0x2 -> 0x733 (pr1.obj 314/0x24)

********** Build failed! **********


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

Build E:\kaskad\pr1 for device 16F877A
Using driver C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe

Make: The target "E:\kaskad\delay.p1" is up to date.
Make: The target "E:\kaskad\main.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" --pass1 E:\kaskad\main.c -q --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Make: The target "E:\kaskad\ds18.p1" is up to date.
Make: The target "E:\kaskad\lcd.p1" is up to date.
Make: The target "E:\kaskad\rtc.p1" is up to date.
Make: The target "E:\kaskad\usart.p1" is up to date.
Make: The target "E:\kaskad\i2c.p1" is up to date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" -opr1.cof -mpr1.map --summary=default --output=default delay.p1 main.p1 ds18.p1 lcd.p1 rtc.p1 usart.p1 i2c.p1 --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a
Copyright (C) 2010 Microchip Technology Inc.
Serial number: HCPICP-654321 (PRO)

Memory Summary:
Program space used D45h ( 3397) of 2000h words ( 41.5%)
Data space used 60h ( 96) of 170h bytes ( 26.1%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
Configuration bits used 1h ( 1) of 1h word (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)

Loaded E:\kaskad\pr1.cof.

********** Build successful! **********

люди добрые помогите пож
1 запустить этот второй банк,
2 и еще вопрос, кто разбирается посмотрите бегло пож как экономичнее использовать память для переменных изменив тип, знаю точно что строки
50 unsigned char reley[6];
51 unsigned char key_command[16];
это простые флаги 1 или 0, они запрсто могут быть bit но я пишу и немогу их переделать в bit вылезают новые ошибки,
покажите пож для примера как это сделать.

Весь проект прилагаю,

kaskad.zip
(917.01 КБ) 212 скачиваний


ошибка с переполнением появилась когда я добавил в строке 51 key_command[18];
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

1 запустить этот второй банк

bank2 unsigned char value;

2 50 unsigned char reley[6];
51 unsigned char key_command[16];
это простые флаги 1 или 0, они запрсто могут быть bit но я пишу и немогу их переделать в bit вылезают новые ошибки,

массив битовых переменных... к сожалению, содержимое массива не может занять меньше байта
так что именно в массив - экономии не получится. Самый простой способ получить битовые переменные - взять их из структуры
struct
{
unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
}Flags;
это занимает ровно 1 байт
И, наконец, текст абсолютно нечитабельный.
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

Ок понял спасибо, тоесть даже при не до конца заполненном первом банке можно какието перемннные жестко размещать во втором банке?

Структуры попробую, не знал просто с какой стороны подойти к ним.

а текст, ну привык я так писать с 92 года еще, на паскале, там свои особенности были, на мой взгляд так легче,на одном экране несколько процедур , имхо лучше чем прокручивать километр и забыть с чего начал.
Спасибо огромное, приезжайте в баню париться ) такто пар отличный и без этой железяки, эт так баловство
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

Да, можно. Ну и на будущее переходите на 18 -24 пики, если вы пики так любите - при одинаковой, в общем, ценовой политике - ни тебе эффекта rmw, ни возни со страницами.
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

Со структурой получилось правда есть еще пару вопросов, после двоеточичя это кол во резервируемых бит на элемент? А можно 2 или 3? Например если 3 элемента по 3 бита структура 2 байта полюбому займет?

И еще с банком 2 неполучилось совсем, вернее компилятор то его съел но переполнение всеравно происходит как и было, я пытался 51 строку во 2 банк назначить. Так ничего не изменилось, тоже переполнение, вообше как достоверно определить распределение памяти? Ведь компилятор показывал немного процентов . И еще достаточно этой вами указанной команды банк2 или чтото еще нудно указывать дале? Может есть какойнить пример или ссылка где про это почитать, а лучше и то и другое
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

1. Да, вы правильно догадались.
2.
вернее компилятор то его съел но переполнение всеравно происходит как и было, я пытался 51 строку во 2 банк назначить.

Посмотреть опции компилятора - возможно, стоит -STRICT, тогда нужно записывать _bank2
Никакого распределения памяти по банкам компилятор не делает - всем выделяемым вами переменным по умолчанию лепит квалификатор auto и ставит их в 0 банк. Раскидывать их по остальным банкам ручками - забота программиста.
http://lord-n.narod.ru/download/books/w ... cc_env.pdf
Глава 4.2 и вообще невредно даже очень все прочесть. И не один раз. Стопудово.
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

Спасиб наводку понял почитаю в этой области

Юрий а может у вас есть минутка посмотерь что я напортачил в этой теме

viewtopic.php?f=61&t=98048

наверняка там ответ гдето рядом а я несмог осилить
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

я не могу открыть ваш проект - не пользуюсь "про" версиями компилятора - последняя хорошая версия для 10-16 пиков это "std" 9.60 pl3 .
И - в протеусе есть модель этих часов - что, там тоже не идет ?
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

Я в той программе совсем не использовал никаких операторов проф версии, думаю простым копированием листинга в свой компилятор все заработает, листинг я давал в теме, и проект протеуса тож пробовал он есть в архиве, стоят часы и все тут, мне важен сам ход обращений к часам, что я пропустил, там в описании паузы наносекунды чтоли , я мкс ставил, незнаю как меньше сделать. При написании подглядывал в прогу иностранного чувака ноту него компилятор другой мне неудалось запустить его прогу вчистом виде а разобраться в его коде несмог
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

не использовал никаких операторов проф версии
там не нужно никаких операторов, компилятор левый сам по себе.
В общем, пытался портировать, в проте модель - выводы ад0 - ад7 не подстегтвались, то я разобрал модель, вручную добавил и собрал назад. Наверняка это неверно, ну это уже к Halex - у, он у нас специалист по проту. Скопируй из архива файлы USERDVC.IDX USERDVC.LIB в библиотеку прота. Вроде в проекте что-то там откликается даже.
Вложения
12887.rar
(102.68 КБ) 211 скачиваний
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

у меня тож было подозрение что в шине данных какаято нестыковка, совсем ничего не отвечало, а в железе я не пробовал еще, ок посмотрю потом что получилось, с наступающим всех
electronik_tver
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Re: Програмирование pic на СИ.

Сообщение electronik_tver »

Неа нихрена не получилось у меня, код красивый безусловно, структуры все по полочкам, обмен действительно идет но переменные получают какойто мусор, я подключил виртуальный компорт по усарт и каждый запуск значения разные, и секунды не идут в протеусе, и часы не обнуляются при инициализации, я так понял вы за основу взяли писанину того буржуина у которого якобы все работает но как у него это получилось непонял не разу, может правда в протеусе модель нерабочая? яв железе то непробовал еще,


Clock_DS12887 asm.rar
(48.13 КБ) 224 скачивания


у меня еще проектик есть, но там код на асме, может это прояснит дело?
очень уж хочется оживить эти железки
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

Вопросы - почему часы стоят - это уже не мне, а Тени. Имхо, здесь недопиленная разработчиками модель.
Самое время отложить протеус и взять в руки паяльник.
Ответить

Вернуться в «PIC»