Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » протеус и реальный пик
протеус и реальный пик
ntro123 Дата: Сб, 03.07.2010, 19:15  |                                                                                                                Сообщение # 1
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

Доброе времени суток.

тут такая проблема ...

вот код на бейсике

Code
device = 16f84A
Declare XTAL 4
dim i as word
LOW PORTB
i=0
main:

High PORTB.0
delayms 500
low PORTB.0
delayms 500
High PORTB.1
delayms 500
low PORTB.1
delayms 500
High PORTB.2
delayms 500
low PORTB.2
delayms 500
High PORTB.3
delayms 500
low PORTB.3
delayms 500
High PORTB.4
delayms 500
low PORTB.4
delayms 500
High PORTB.5
delayms 500
low PORTB.5
delayms 500
High PORTB.6
delayms 500
low PORTB.6
delayms 500
High PORTB.7
delayms 500
low PORTB.7

FreqOut PORTA.2, 100, 7000, 5000     
FreqOut PORTA.3, 100, 7000, 5000     

goto main

он отлично пашет в протеусе. Но в реальном пике загораются тока первые два светодиода а должны все ...
т.е. программа работает только 1-2 секунды потом почемуто сбрасывается и наченает работать сначала. (а в протеусе все норм)

а вот код на асм
(ппришлось прикрипить архив с кодом был привышен лимит)

Пашет нормально в реальном пике но както криво (при 4mhz) в протеусе (и не доканца)

Подскажите что за дело... почему бэйсик любит тока протеус? (проект в архиве это точная копия того что есть в реале)

зарание блогодарен!

Добавлено (03.07.2010, 13.15.37)
---------------------------------------------
это все тотже pic16f84A, что тока не пылтался делать ... и asm файл который от протона получается, компилировал другими кмпиляторами .... вобщем беда. и частоту менял везде ... но в реале работает прога только 1 -2 сек и все ... '(

Добавлено (03.07.2010, 19.15.54)
---------------------------------------------
Может быть я что-то не правильно объяснил ... но правда я уже что только не пробовал поисковики не рабудют.

Прикрепления: Archive.rar(16Kb)

Сообщение отредактировал ntro123 - Сб, 03.07.2010, 13:16
ЯНДЕКС Дата: 03.07.2010
anatol Дата: Сб, 03.07.2010, 19:59  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 14   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Что бы работало в железе необходимо настроить ПИК. Т.е. установить специальные регистры. Смотри программу ProtonHeaderMaker, есть на сайте.
Похоже на сброс от WDT.
ntro123 Дата: Сб, 03.07.2010, 21:19  |                                                                                                                Сообщение # 3
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

>установить специальные регистры
скачал, посмотрел и не понял как это сделать(

Добавлено (03.07.2010, 21.19.06)
---------------------------------------------
anatol, может подскажите куда тыкать?

vanish Дата: Сб, 03.07.2010, 22:42  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 63
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2010

Статус: Offline

У меня команда буттон нормально работала в протеусе, но в железе глючила.Изучи, что такое слово конфигурации (прав анатол) отключи вдт. Пиши программу в нескольких вариантах, это не СИ, глюки будут часто происходить.
У меня бегущие огни получились сразу, код примерно похожий. Я собрал тестовую плату и на ней проверяю. Протеусу много доверять нельзя.Скачай даташит на свой пик, найди бит вдт и отключи его . Если щас конкретно сказать, то ты не научишься искать.так что пардон.
ntro123 Дата: Сб, 03.07.2010, 23:04  |                                                                                                                Сообщение # 5
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

>слово конфигурации
да знаю я что это такое.
и знаю как на асм менять но на бэйсике не знаю как изментить... а хочется сразу все на бейсике ... думал подскажите что-то типа declare WDT = OFF
но увы. ладно спасибо, завтра буду заниматься и отпешусь.

Добавлено (03.07.2010, 22.56.49)
---------------------------------------------
хотя привыборе хекс файл программа программатора считывает конфиг биты и они 11111111110001 т.е. WDT off (вроде да)

Добавлено (03.07.2010, 23.04.22)
---------------------------------------------
Очень надеюсь на вашу помошь.

terrarus Дата: Вс, 04.07.2010, 14:17  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (vanish)
Протеусу много доверять нельзя.

Ну это Вы батенька хватили через край! Лично я очень даже доверяю.
Хорошим программам, как и хорошим людям, стоит доверять!

ntro123,
Скорее всего дело в вашем железе. Может быть даже кривой PIC из каких нибудь левых или уже жеченый.

Что касается программы:

1.зачем в программе эти две строки
dim i as word
i = 0
ведь в программе они не применяются. Хотя в принципе они ничего не испортят. Может бля будующего цикла? Даже если так то не стоит временную переменную для цикла объявлять как Word лучше как Byte. Хотя в принципе онa ничего не испортит.

2. Не понятно назначение именно двух одинаковых выходных сигналов -
FreqOut PORTA.2, 100, 7000, 5000
FreqOut PORTA.3, 100, 7000, 5000
Вы формируете на двух выходах одинаковые звуковые сигналы сигналы длительностью всего по 100 милисекунд после цикла бегущих огней длительностью 7,5 секунды . То есть 8 светодиодов по очереди включаются на 0,5 сек и выключаются на время равное 0,5 сек и когда выключается последний, то вырабатываеются здва вуковых сигнала длительность по 0,1 сек. Можно даже звук не услышать за такое время. Звуковой сигнал звучит 0,1 сек через каждые 7,5 секунд - странно зачем так? Изачем на двух портах одинаковый звуковой сигнал?

3. Очень странно написана программа с точки зрения Протона - во многих операторах одни маленькие буквы
А ведь Протон, даже если вы все пишете маленькими буквами, обязательно приведет к виду -
Device = 16F84A
Declare Xtal 4
Dim i As Word
Low PORTB
i=0
main:

High PORTB.0
DelayMS 500
Low PORTB.0
DelayMS 500
High PORTB.1
DelayMS 500
Low PORTB.1
DelayMS 500
High PORTB.2
DelayMS 500
Low PORTB.2
DelayMS 500
High PORTB.3
DelayMS 500
Low PORTB.3
DelayMS 500
High PORTB.4
DelayMS 500
Low PORTB.4
DelayMS 500
High PORTB.5
DelayMS 500
Low PORTB.5
DelayMS 500
High PORTB.6
DelayMS 500
Low PORTB.6
DelayMS 500
High PORTB.7
DelayMS 500
Low PORTB.7

FreqOut PORTA.2, 100, 7000, 5000
FreqOut PORTA.3, 100, 7000, 5000

GoTo main

Это я скопировал ваш текст и вставил его в Протон а затем снова скопировал его и поместил сюда.
Похоже что пишете вы не в Протона а в другом редакторе хотя и по протоновски. Синтаксис протоновский. И компилите наверное не в Протоне. Не отсюда ли все ваши глюки?
Кстати желательно добавить в начало программы
TRISA.2 = 0
TRISA.3 = 0 ' не знаю как там насчет других выводов этого порта. Зависит как вы там их используете?
TRISВ = %00000000

А ПРОТЕУС-у нужно доверять!!! Вот видите я даже пишу его с большой буквы, правда иногда и по русски.
Если будете писать в Настоящем Протоне, то стоит только объявить микроконтроллер в начале программы -
Device = 16F84A ,
как Протон сконфигурирует его по умолчанию (подробнее смотрите на моем сайте в моей электронной книге)
а если забудете это сделать, то он сконфигурирует все ровано но по умолчанию под пик 16F84
Declare Xtal 4 можно вообще не объявлять - по умолчанию Протон устанавливает частоту кварцевого генератора равную 4 МГц.
А вот если нужно установить например частоту 20 Мгц то нужна обязательно строка
Declare Xtal 20.
По умолчанию Протон конфигурирует камень так как нужно для 90% программ. Вот этим и хорош Протон - не нужно заморачиваться с конфигурацией, все делает автоматически.

Если уж нужна более тонкая настройка, то тогда применяется оператор Config (c.м на моем сайте ).
Пример. ' Выключить сторожевой таймер и использовать высокочастотный кварц, для 16F877
Config HS_OSC , WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF , WRTE_ON , CP_OFF , DEBUG_OFF

Если директива Config не используется в пределах Бейсик-программы, то тогда применяются значения по умолчанию. Они могут быть найдены в файлах *.LPB папки INC. Очень советую туда заглянуть и посмотреть как же по умолчанию настроен Ваш PIC.
А если нужна или экзотическая настройка то можно использовать и вставки на асслемблере, например:

Ниже приведены примеры установки битов регистра конфигурации для микроконтроллера 18F452.

@Config_REQ
@__Config Config1H, OSCS_OFF_1 & HS_OSC_1
@__Config Config2L, BOR_ON_2 & BORV_20_2 & PWRT_ON_2
@__Config Config2H, WDT_OFF_2 & WDTPS_128_2
@__Config Config3H, CCP2MX_ON_3
@__Config Config4L, STVR_ON_4 & LVP_OFF_4 & DEBUG_OFF_4


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Вс, 04.07.2010, 15:16
retas Дата: Вс, 04.07.2010, 14:21  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 462
Репутация: 10   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Посмотрите какой нить пример как в Протоне выставляется конфигурация.
В одном из моих проектов, скажем, так
Device 16F887
@CONFIG_REQ
@__CONFIG _CONFIG1, INTOSCIO & WDT_OFF & DEBUG_OFF & LVP_OFF & FCMEN_OFF & IESO_OFF & BOR_OFF & CPD_ON & CP_ON & MCLRE_OFF & PWRTE_ON
@__CONFIG _CONFIG2, WRT_OFF & BOR21V
* в вашем ПИЦе конечно второго слова конфигурации нет ну и нет некоторых установок.

И не надо накатывать на Протон такими словами "глюки будут часто происходить" . Еслиб тут было уместно слово "часто", то кто бы с ним мучался и многоуважаемый terrarus не писал бы по нему книгу (скажем все ему дружно СПАСИБО!).
Имитацию на компе и реальную жизнь конечно приходится различать но мне не попадалось чтоб програ
работающая в Протеусе в реале работала иначе, при условии что выгребана дурь т.е. то о чем Протеус
ни когда не догадается. Например в одном устр-е у меня был бардак - в одной переменной появлялись данные которые по логике работы никак
немогли там появится. Оказалось, в начале прогры пропустил установку этой переменной в 0.
Другой случай. На 16F887 сделал 20 портов работающих по оператору RCIN т.е быстренько разгружаем конд подключенный к порту
и загружая его через сопрот ждём появления на нём лог. 1 засекая время. В Протеусе красота, в реале чепуха (на некоторых портах). Ну и сам
дурак, понадеялся что все 20 портов поведут себя на плате одинакого. Интересно было бы попробывать с другим однотипным МК, но
уж сама возможность появления подобного не приемлима и я решил менять подход к задаче.
Да преследует вас удача!


Новый подход к питанию потребителей переменного тока: http://ekolaif.ucoz.ru
brown Дата: Вс, 04.07.2010, 15:56  |                                                                                                                Сообщение # 8
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 335
Репутация: 10   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Кстати о конфигурации МК в Протоне - есть к нему плагин. В нужных позициях выбираешь значение и в листинге получаете
текст Config


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
ntro123 Дата: Вс, 04.07.2010, 22:08  |                                                                                                                Сообщение # 9
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

terrarus,
1. я с чегода взял что дело в delayms и решил написать свою задержку из нопов. а эти две строки забыл закоментить (но как Вы и гворите они вред не несут)
тип ворд, а не байт т.к. чтобы переменная вмешала большие значения (больше чем в байт)
2. Они не одинавковые первый в порт А2 а второй А3
я пытался и по одной команде ... но ксожелению звука нет.
все отлично слышно ... и на пике и в протеусе. упеваю слышать. (только вот пик не доходит до этого закарается тольлко первые два свето диода и все заного)
3. Разве протон чувстветелен к регистру?
редактор я + он же компилятор у меня:

Буду добр если Вы скадите чем вы компилите и где пишите и если дадите ссылку отдельное спс!)

Добавлено (04.07.2010, 22.07.42)
---------------------------------------------
Да в протеусе все верно ... но в жизни все подругому. так что если работает в протеусе то в жизни тоже будет работать на все 100% НО при условии что все будет как в протеусе, и вы сутра встаните с правельной ноги.

Quote
Очень советую туда заглянуть и посмотреть как же по умолчанию настроен Ваш PIC.

Вот что там написано

P16F84A.lpb

Code


MAXVAR = 68
MAXMEM = 1024
PAGES = 1
BANKS = 1
PORTS = 2
ADC = 0
ADCRES = 0
EEPROM = 64
BANK0_START = 12
BANK0_END = 79
BANK1_START = 0
BANK1_END = 0
BANK2_START = 0
BANK2_END = 0
BANK3_START = 0
BANK3_END = 0
RAM_BANKS = 1
UART = 0
VARADDR = 12

INDF  EQU     0
TMR0     EQU     1
PCL      EQU     2
STATUS   EQU     3
FSR      EQU     4
PORTA    EQU     5
PORTB    EQU     6
EEDATA   EQU     8
EEDAT    EQU     8
EEADR    EQU     9
PCLATH   EQU     10
INTCON   EQU     11

OPTION_REG    EQU     129
TRISA    EQU     133
TRISB           EQU     134
EECON1          EQU     136
EECON2          EQU     137

END_DEF

W = 0
F = 1

; STATUS Bits  

IRP = 7
RP1 = 6
RP0 = 5
NOT_TO = 4
NOT_PD = 3
Z = 2
DC = 1
C = 0

; INTCON Bits  

GIE = 7
EEIE = 6
T0IE = 5
INTE = 4
RBIE = 3
T0IF = 2
INTF = 1
RBIF = 0

; OPTION Bits   

NOT_RBPU = 7
INTEDG = 6
T0CS = 5
T0SE = 4
PSA = 3
PS2 = 2
PS1 = 1
PS0 = 0

; EECON1 Bits   

EEIF = 4
WRERR = 3
WREN = 2
WR = 1
RD = 0

         __MAXRAM H'CF'
         __BADRAM H'07', H'50'-H'7F', H'87'

; [START OF CONFIGURATION BITS]

CP_ON                       EQU H'000F'
CP_OFF                      EQU H'3FFF'
PWRTE_ON                    EQU H'3FF7'
PWRTE_OFF                   EQU H'3FFF'
WDT_ON                      EQU H'3FFF'
WDT_OFF                     EQU H'3FFB'
LP_OSC                      EQU H'3FFC'
XT_OSC                      EQU H'3FFD'
HS_OSC                      EQU H'3FFE'
RC_OSC                      EQU H'3FFF'

; [SET THE DEFAULT FUSE CONFIGURATION]
  ifndef CONFIG_REQ
    ifdef WATCHDOG_REQ
          __config XT_OSC & PWRTE_ON & CP_OFF & WDT_ON
    else
   __config XT_OSC & PWRTE_ON & CP_OFF & WDT_OFF
    endif         
  endif
  LIST

(ничего не менял)

Добавлено (04.07.2010, 22.08.47)
---------------------------------------------
ПС. у меня два pic16F84A
и оба не хотят по хорошему рабоать (и даже по плхому, вобше никак)
НО асм же пашет ...

Прикрепления: 7834032.jpg(72Kb)
terrarus Дата: Вс, 04.07.2010, 22:50  |                                                                                                                Сообщение # 10
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (ntro123)
Буду добр если Вы скадите чем вы компилите и где пишите и если дадите ссылку отдельное спс!)
. Можно скачать дистрибутив Протона на котором я работаю на http://terrarus.ucoz.ru/proton_plus_ide/index.html , далее ИНСТРУМЕРТАРИЙ/POTON+IDE.
Немного позже помещу и дистрибутив Протеуса. 7.5 SP3.

Quote (ntro123)
Да в протеусе все верно
. Я не силен в асме, а со связкой Протона и Протеуса у меня подобных проблем не возникало.

Quote (ntro123)
3. Разве протон чувстветелен к регистру?
- Протон сам почти все исправит особенно регистры. А у Вас он как я поняk не исправляет, вотэто меня и настораживает.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
ntro123 Дата: Пн, 05.07.2010, 13:23  |                                                                                                                Сообщение # 11
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

terrarus, протеус у меня самый последний с таблеткой. Так что спасибо можете не выкладывать. За дистрибутив Протона спасибо!
terrarus Дата: Пн, 05.07.2010, 16:57  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (ntro123)
протеус у меня самый последний с таблеткой. Так что спасибо можете не выкладывать.

Не... выложу обязательно, но не только для вас...


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
ntro123 Дата: Вс, 11.07.2010, 11:00  |                                                                                                                Сообщение # 13
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

Возможно я упустил очень важную вешь.
я не юзаю внешний генератор.

вот искал на форуме вот что нашел.
http://www.picbasic.ru/forum/5-405-1

а иммено:

Quote
Quote
http://www.picbasic.ru/forum/5-405-1

В данном случае имеется в виду внешний кварц с частотой 4 мГц.

а мне нужен внутренний.
как я понел для 16 не юзаются конфиги в протоне тольео асм.
или я не прав? кто что скажет?
brown Дата: Вс, 11.07.2010, 19:45  |                                                                                                                Сообщение # 14
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 335
Репутация: 10   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

16Ф84А устаревший МК и в нем нет внутреннего генератора (вернее сказать только может работать с внешними частотозадающими элементами). Смотрите даташиты на МК.

Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
dimitriy-bc Дата: Вт, 03.04.2012, 20:10  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 198
Репутация: 1   ±
Замечания:   ±
На сайте с 19.03.2012

Статус: Offline

Всем доброго времени суток. Протон и протеус, только начинаю осваивать. У меня такой вопрос. Может ли протеус работать с двумя пиками одновременно?
В прилагаемых файлах находится то, что у меня получилось. Если убираю один из пиков, протеус работает. С двумя, отказывается наотрез.
Прикрепления: ENCODER.bas(2Kb) · ENCODER_OUT.bas(2Kb) · ENCODER.dsn(133Kb)

Сообщение отредактировал dimitriy-bc - Вт, 03.04.2012, 20:12
Форум Picbasic.ru » Программирование МК » Proton PicBasic » протеус и реальный пик
Страница 1 из 212»
Поиск: