Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

MPLAB-SIM
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6857
Страница 1 от 1

Автор:  iorgov [ Чет Май 28, 2009 9:57 pm ]
Заглавие:  MPLAB-SIM

Здр.
В момента си пиша дипломната работа която е пряко свързана с програмиране на един микроконтролер (PIC16C74), та изтеглих си аз MPLAB започнах да пиша и стигнах до един момент в който осъзнах че само с писане няма да я бъде, трябва и симулация. Порових се в интернет и разбрах, че ако имам нужната екипировка мога направо да тествам програмата върху чипа, или да използвам вградения симулатор в MPLAB, а именно MPLAB-SIM. До тук добре поразгледах го тоя симулатор цъкнах навсякъде що има да се цъка по менюта и т.н. и най-накрая реших да му прегледам help-a. Пуснах симулацията, имаше доста грешки разбира се изчистих ги и стигнах до момента в който ми се налага да правя АЦ преобразуване. Проклетия симулатор спира и зацикля когато тръгне да пробверява дали GO/DONE битът е 0 и до там. Предполагам че в симулатора няма никакъв проблем работи си перфектно, проблема е там че не може да се симулира напражение на който и да е от изводите и просто не се извършва преобразуване.

Въпросът ми е следния има ли някакъв начин да го накарам тоя MPLAB да подкара преобразуването софтуърно?

Благодаря предварително

Прилагам част от кода да е по-нагледно:

Код:
   BSF   STATUS, RP0      
   CLRF   ADCON1         
   BSF   PIE1,    ADIE      
   BCF   STATUS, RP0      
   MOVLW   0X83         
   MOVWF   ADCON0         
   BCF   PIR1,   ADIF      
   BSF   INTCON,   PEIE      
   BSF   INTCON,   GIE      
   NOP            
   NOP            
   NOP            
   NOP            
   BSF   ADCON0,   GO
   SLEEP
   BTFSC   ADCON0,   GO (симулацията зацикля на този ред)
   GOTO   PRSRX
   GOTO   SAVERES   
SAVERES:

Автор:  valioman [ Чет Май 28, 2009 10:00 pm ]
Заглавие: 

Дръпни си Proteus :idea:
Въпреки , че симулациите на схеми си е като виртуалния секс ,ама важното е кефа да е пълен :)

Автор:  ji4ka [ Чет Май 28, 2009 10:36 pm ]
Заглавие: 

На реалния АЦП му трябват 25 такта за да пусне флага. На някои контролери симулатора изчаква коректно тези тактове, при други АЦП-то не се симулира коректно. Виж също SLEEP-a да не бърка нещо. Реална стойност(напрежение) може да се вкара например ръчно директно в регистрите. Може и автоматично но е голяма врътня и не е удобно.

Автор:  a_stankov [ Пет Май 29, 2009 7:20 am ]
Заглавие: 

Не можеш да накараш да симулира преобразуване от АЦП със симулатора в МПЛАБ.Ако искаш да провериш спрямо резултата дали ще извъши
конкретно действие,заместваш преобразуването с конкретен резултат и гледаш дали прави това което си си наумил.
MPLAB-SIM не може да симулира външни въздействия върху контролера.Ако правиш такава симулация просто заменяш въздействието с готов резултат
за да проследиш алгоритъма които си създал.
Така като ти гледам кода това прилича на инициализация.

BSF ADCON0, GO
SLEEP
BTFSC ADCON0, GO Мога ли да попитам за какво ти е този SLEEP точно на това място,конфигурираш прекъсвания пускаш АЦП и се
мъчиш да SLEEP-ваш контролера според мен безмислено защото преобразуванието на АЦП -то е около 4uS.

Автор:  iorgov [ Пет Май 29, 2009 7:27 pm ]
Заглавие: 

така

първо искам да благодаря на valioman за това, че ми каза за Proteus (преди това не бях чувал за него) БЛАГОДАРЯ !! :) :prayer:

второ благодаря за отговорите

успях да си реша проблема с АЦП ( :supz: ) - забраних всички прекъсвания с изключение на ADIF. не поставям контролера в SLEEP, a проверявам с прост цикъл дали GO/DONE битът се е нулирал и след това си вземам резултата и продължавам напред.

сега ми остава да реша и другите 3/4 от задачата :)

Автор:  a_stankov [ Съб Май 30, 2009 7:16 am ]
Заглавие: 

BSF ADCON0, GO
BTFSC ADCON0, GO
GOTO $-1

Ето така е по-добре според мен да си чакаш разултата от АЦП.Без прекъсвания.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/