Страница 1 из 1

pic16f887 + Flowcode

Добавлено: Вс июн 14, 2009 20:15:36
Volody10
Всем мяу :))
Требуется помощь в нахождении ошибки
В програмировании я не силён , только начал изучать с помощью Flowcode V4 (наигравшись со светодиодами (в железе) решил попробывать посложнее)

В Flowcode я создал программу (реверсивный счётчик 6 разрядный 7 сегментный) и при запуске (эмуляции) в Flowcode всё работает ОК
При моделировании в железе, всё происходит не так как в симуляторе
При включении счёт идёт не сразу а через примерно 1 минуту и сначало тока на одном сигменте, потом на втором и дальше третьего не идёт , тоесть 000998-000999-000000
Сегменты A-G на порт D 0-6 , управление разрядами пробывал и на А0-А5 и на В0-В5 - результат стабильно одинаков
Кварца нет , исользую встроиный генератор (я так думаю)
Предполагаю что ошибка в настройке битов конфигурации или в использовании прерываний - порт В6 и В7 , хотя кто его знает :o

Прекреплённый файл в архиве для Flowcode V4 и асм(правда в асм я не очень)
Уважаемые специалисты , не откажите во внимании

Добавлено: Вс июн 14, 2009 20:18:35
Volody10
для Flowcode V4 что то не получается отправить - тока асм

всё, получилось выложить - выложил в архиве Flowcode и асм

Добавлено: Вс июн 14, 2009 20:21:52
ikarab
Дак проверьте код в других симуляторах - тогда будет ясно в чем дело. PROTEUS например.

Добавлено: Вс июн 14, 2009 20:30:51
Volody10
протеуса нет , да и если и там всё ОК будет
кстати мерял частоту по управлению разрядами если не ошибаюсь примерно 80 кГц на всех шести ( В0-В5 ) :shock:
прошиваю пиккитом из акции

Добавлено: Вс июн 14, 2009 22:47:43
Volody10
Попробывал в PIC Simulator IDE - всё работает
что делать :o

Добавлено: Вс июн 14, 2009 23:56:53
Настя
Volody10 - а какую помощь вы хотите здесь получить?
Во Flowcode из кирпичей вы создали проект, откомпилили
и предлагаете поковыряться в получившемся "ассменном фарше".

Качаем оригинальный даташит на PIC16F887
http://catalog.gaw.ru/index.php?page=document&id=9773
стр 234-241 описание ассемблерных команд.

Если есть желание почитать то же самое на русском качаем
http://www.microchip.ru/files/d-sheets-rus/PIC16_29.pdf
система команд; распечатываем в виде книжечки. И на стол.

Общий вывод: если ни кто вам не помог, значит инструмент
работы у вас не той системы. Либо меняйте систему.
Либо инструмент. А лучше всё вышеперечисленное.

Как должен работать ваш реверсивный счетчик?
Проект делаете на отладочной плате из комплекта PicKit2?

В комплекте PicKit2 два диска, на одном из них среда разработки
MPLAB_8.1 и компилятор Си. Это как подсказка, куда смотреть.

Добавлено: Пн июн 15, 2009 01:44:00
Volody10
Спасибо за ссылки, правда с английским я не очень и даташит у мя есть, говорят pic16f877 - почти полный аналог, причём для нё даташит на русском. Кстати вот здесь http://www.microchip.ru/ тоже можно найти много всего на русском

Если бы я хорошо владел английским и разбирался програмировании, я наверное не писал бы здесь всякие глупости
Volody10 - а какую помощь вы хотите здесь получить?
Общий вывод: если ни кто вам не помог, значит инструмент
работы у вас не той системы. Либо меняйте систему.
Либо инструмент. А лучше всё вышеперечисленное.
Я расчитывал что для опытного специалиста или более продвинутого новичка не составит большого труда воспользовавшись своими любимыми средствами програмирования и отладки протестировать мой асм или погонять Flowcodовский файл и вынести свой вердикт
С Вашем выводом я немного не согласен (личное мнение)
Понятное дело что Flowcode возможно не профессиональная прога и код она создаёт не оптимальный наверное и все профи работают с общепринятым совтом, но я не профи и с этим софтом пока работать не умею, зато в Flowcode всё достаточно наглядно (хотя мож я и ошибаюсь)

На отладочной плате тока пикуха (все порты в воздухе) + самодельная плата для индикаторов (соединяю проводками)
Самоделка - 100% без косяков

Добавлено: Пн июн 15, 2009 10:07:11
Настя
Volody10 писал(а): Я расчитывал что для опытного специалиста или
более продвинутого новичка не составит большого труда
воспользовавшись своими любимыми средствами програмирования и
отладки протестировать мой асм или погонять Flowcodовский файл и
вынести свой вердикт
"протестировать мой асм"
1. Вашу железку в реале собирать ни кто не будет.
Я бы собрала только виртуальную в Протеусе.
2. Если обнаружится, что ваша прошивка не работает
я бы не стала ковырять ваш ассм и написала бы свой.

В связи с этим я и задала вопрос - как должен работать
ваш реверсивный счетчик. Подали питание и дальше что
- счет от нуля и до 999999. Или наооборот, от 999999 до 0.
Или есть еще отдельный вход, переключающий направление
счета. Как должен работать в реальной жизни ваш счетчик.


"погонять Flowcodовский файл"
это вам нужно искать знатоков Flowcod.

Добавлено: Пн июн 15, 2009 11:40:45
ikarab
Volody10 писал(а): с английским я не очень
Тогда вам может быть полезно - Микроконтроллер PIC для начинающих с нуля - материалы на русском языке, переводы фирменной документации, инструмены для работы. Пример, апноуты и проекты. Это страница 9 в моей домашней страничке под кнопкой www ниже.

Добавлено: Пн июн 15, 2009 23:01:03
Volody10
В связи с этим я и задала вопрос - как должен работать
Если я правильно понял вопрос - то алгоритм следующий
При подаче питания на всех 6 разрядах светятся 0 (000000)
B6,B7 настроины на прерывание,(подключены к энкодеру, но мож и вручную подавать 0 или 1 ) прерывание происходит от изменения уровня на В6 или В7 , но считываем значение тока одного (если 0 то от переменной отниманм 1 , если 1 то прибавляем)
Для каждого разряда своя переменная + создаём ещё несколько

выгядит все примерно следующим образом

ххххх
ххххх
начало цыкла
выходы в0-в5 =0
переменная = переменной сегм1 = портD выход(подпрограмма)
выход в0=1
задержка
выходы в0-в5 =0
переменная = переменной сегм2 = портD выход(подпрограмма)
выход в1=1
задержка
и так до сегмента 6
хххххх
ххххх
Подключение 7 leds сандартное (наверное)
A-G -Через резисторы на порт D
Разряды - с порта на резисторы далее на базу, эмитер на землю колектор на разряды
Ну вот гдето так если это имелось в виду
Есчо раз о замеченном странном поведении всего этого
при включении сначало не один сегмент не считает, потом после подачи примерно 10 импульсов начинает считать тока 1 разряд , после его многократного обнуления подключается второи разряд,после значительного колличества раз обнулений подключается 3 разряд
Решил оставить всё это дело на всю ноч включенным , к утру счёт доходил до 5 разряда (099999) - гдето явный косяк :shock:

Добавлено: Вт июн 16, 2009 18:05:28
Volody10
Ну вот вроде разобрался :)))
Сделал две вещи
1) В самом начале программы всем переменным присвоил начальные значения (не обращал на это внимания так как при симуляции переменным присваивался 0 по умолчанию)
2) В подпрограмме сложения или вычитания было:
if xxx >= yyy да
нет

сделал
if xxx=yyy да
нет

Предполагаю что на положительный результат повлияло 1 изменение
Вопрос к знатокам - всегда ли нужно обьявлять значения переменных явным образом или всёже по умолчанию = 0
Всем принявшим участие спасибо
Эксперементы продолжаются :)) :)) :))