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

12F683 не изработва 1 едновременно на два порта.
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=8748
Страница 1 от 2

Автор:  kirchi [ Вто Мар 29, 2011 9:58 pm ]
Заглавие:  12F683 не изработва 1 едновременно на два порта.

Задействам две релета когато напрежението измерено от ацепето мине определена стойност. Релетата се намират на GP1 и GP2, като транзистора е bc639 и между базата и пика съм сложил 1,5к резистор. Проблема е в това че пика не изработва едновременно 1 на двата изхода. Поотделно си работят но заедно винаги GP1 е 0. От какво може да е?
Това е софта:

while(1)
{
acp();

if (volt >= 4250)
{
GP1=1;
GP2=1; //като изтрия този ред работи GP1

}
else{GP1=0;}
}

Автор:  milenjs [ Вто Мар 29, 2011 10:14 pm ]
Заглавие: 

А защо не ги установяваш двете едновременно? Това с какъв компилатор?

Автор:  kirchi [ Вто Мар 29, 2011 10:23 pm ]
Заглавие: 

На htsoft 9.81

Автор:  fan [ Вто Мар 29, 2011 11:08 pm ]
Заглавие: 

А това 12F628 от къде го измисли? Най-близкото до него е 12F629, но е без АЦП. С АЦП е 12F675. А проблема ти ми прилича на неизключени компаратори към входовете. Доста гадаене е така... :(

Автор:  CarBeta [ Вто Мар 29, 2011 11:27 pm ]
Заглавие: 

Проблема само с GP1 ли е или с този, който пръв се сетва? Опитай да сетнеш първо GP2 и после GP1 и виж дали проблема няма да се прехвърли на GP2.

Автор:  dan [ Сря Мар 30, 2011 9:16 am ]
Заглавие: 

Ако правилно си конфигурирал пиновете, проблемът може да идва от "read-modify-write".
По това има изписано много, вкл. и тук.
Пробвай да използваш т.нар. засенчващ регистър- вместо да записваш данните директно в PORTx, запиши ги първо в някой регистър (променлива) SHADOW и после го копирай в PORTx.

например:
Код:
BSF SHADOW,3
BSF SHADOW,7
MOVFW SHADOW
MOWVF PORTA

вместо просто
Код:
BSF PORTA,3
BSF PORTA, 7

Автор:  Cekins [ Сря Мар 30, 2011 11:18 am ]
Заглавие: 

По-правилно е да се прави с ANDWF/IORWF за да не се променя случайно състоянието на някой друг бит. Ама това само принципно. А ако ги сетваш BSF(BCF) те така или иначе не се включват "едновременно" а един след друг. А това за read-modify-write в случая няма нищо общо.

Ако наистина става въпрос 12f629 - той има само компаратор. И баш тези (GP0 - 2) са му пиновете. Компаратора е включен по дефолт.

Автор:  ps66 [ Сря Мар 30, 2011 11:43 am ]
Заглавие: 

какво толкова му им се чудите и маете на тия пикове !?

явно и двата пина са на един порт и компилатора приема CP1=1 за байтова а не битова операция
(да беше погледнал асемблерския листиг ли !?)

Автор:  Reader [ Сря Мар 30, 2011 11:52 am ]
Заглавие: 

На мен пък ми прилича точно на RMW-проблем.
Пробвай съвета на CarBeta и ако проблемът се прехвърли на GP2, значи трябва да използваш решението, дадено от dan.

Автор:  fan [ Сря Мар 30, 2011 11:57 am ]
Заглавие: 

Цитат:
акво толкова му им се чудите и маете на тия пикове !?

явно и двата пина са на един порт и компилатора приема CP1=1 за байтова а не битова операция
(да беше погледнал асемблерския листиг ли !?)

Тука не позна изобщо! :) Тука GP1(а не CP1) и GP2 са предварително дефинирани битове... и т.н. :)

Автор:  ps66 [ Сря Мар 30, 2011 12:37 pm ]
Заглавие: 

fan написа:
Цитат:
акво толкова му им се чудите и маете на тия пикове !?

явно и двата пина са на един порт и компилатора приема CP1=1 за байтова а не битова операция
(да беше погледнал асемблерския листиг ли !?)

Тука не позна изобщо! :) Тука GP1(а не CP1) и GP2 са предварително дефинирани битове... и т.н. :)


не съм се и опитвал да гадая ... още по-малко ме интересува дели е GP или CP :)

ако питащия имаше поне малко мозък - щеше да види какво е генерирал компилатора ... и щеше да го постне (ако не може да го проумее).

в последно време форуна се напълни с малоумни питания ... явно е тенденция и ще трябва да се свиква :)

Автор:  fan [ Сря Мар 30, 2011 12:42 pm ]
Заглавие: 

Прав си, много си прав! :(

Автор:  valioman [ Сря Мар 30, 2011 4:43 pm ]
Заглавие: 

Според мен не се е напълнил с глупави питания а с умни отговори .
Просто забравихме от де тръгнахме и ние .... изровете си постове от преди 3 години да видите къв смях ще падне.
Няма смисъл да се избиват комплекси .. питащия попита дадоха му се насоки ... и той млъкна... просто оставяме темата да потъне и това е.. а не както се прави напоследък да се обърне на говорилня от типа НЕЩО vs ДРУГО НЕЩО

Автор:  kirchi [ Сря Мар 30, 2011 7:16 pm ]
Заглавие: 

Опа процесора е 12f683, не знам защо съм написал 628. Проблема винаги е на GP1 каквото и да въртя и да сменям. Написах
GP1=1;
delay_s(1);
GP2=1;

и в момента GP2=1 на GP1 измервам 0,23V.

В асемблерския листиг всичко си е ок. Пробвах с real pic simulator и си баца. Може ли пика да е изтрищял?

Автор:  CarBeta [ Сря Мар 30, 2011 7:37 pm ]
Заглавие: 

Би ли пуснал асемблерския листинг или направо хекса(ако, разбира се, не са строго секретни)?

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