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

Моля за малко помощ
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9276
Страница 1 от 4

Автор:  stojo [ Чет Авг 18, 2011 3:47 pm ]
Заглавие:  Моля за малко помощ

Тъй, ето я програмата, която съчиних:
Код:
int a=1;
void interrupt()
{
PORTC=0xff;
a=0 ;
INTCON.B0=0;
}
void main()
{
TRISA=0xff;
TRISC=0x00;
PORTC=0x00;
ANSEL=0;
CMCON0=7;
CMCON1=7;
ADCON1=6;
INTCON.B3=1;
INTCON.B7=1;
IOCA= 0xff;
for(a=0; a<=1; a++)
{
PORTC=0xff;
Delay_ms(1000);
for(a=1; a>=1; 1)
{
PORTC=0x00;
}
}
while(1);
}


използвах компилатора mikroc и PIC16F688.
До тук добре, при преминаване от високо към ниско ниво на кой да е пин от порт А, настъпва прекъсване и всички пинове на порт С се установяват във високо ниво. След промяна от ниско към високо ниво на пиновете от порт А, излиза от прекъсването и изпълнява закъснение на прехода на порт С от високо към ниско. Обаче зациклих..
Как да направя така, че при промяна на RА1, да се променя само RC1. Мисех варианти със запис на инвертираната стойност на порт А в eeprom-a и след това четенето и от там и присвояването и към порт С, обаче все нещо не ми се получава. Дайте някакви идеи моля.

Автор:  Cekins [ Чет Авг 18, 2011 9:56 pm ]
Заглавие:  Re: Моля за малко помощ

Ъъъъъ

Дай пауза на въпросите и се върни към книгите.

Това твоето не е въпрос а някакъв гювеч от хвърчащи идеи. Въобще не е ясно какво искаш да направиш та някой да ти каже как да го направиш.

Автор:  stojo [ Чет Авг 18, 2011 10:45 pm ]
Заглавие:  Re: Моля за малко помощ

Имам 2 бутона на RA0 и RA1 и 2 светодиода на RC0 и RC1. Искам при предизвикано прекъсване чрез бутона на RA0 , да светва диода на RA0 и съответно от бутона на RC1 да светва диода на RC1.

Автор:  Cekins [ Чет Авг 18, 2011 11:58 pm ]
Заглавие:  Re: Моля за малко помощ

Какъв е чипа?

Това ако ще е само това най лессно става с три - четири команди дето се въртят в цикъл.

BTFSS porta,0
BCF portc,0
BSF portc,0

Горе долу така...

Ама не се сещам кой чип има прекъсване на портА.

Автор:  stojo [ Пет Авг 19, 2011 12:28 am ]
Заглавие:  Re: Моля за малко помощ

pic16f688, той няма порт В, ама от асемблер не разбирам много тъй, че ако може на С. Другия ми проблем е, че като симулирам с протеус, не ми нулира RAIF и не излиза от прекъсването, а при реална схема всичко работи нормално.

Автор:  didofen [ Пет Авг 19, 2011 9:26 am ]
Заглавие:  Re: Моля за малко помощ

cekins, почти всички пикове особено 16ките имат прекъсване по портА.
а stojo, никои флаг индикиращ нпрекъсжане не се нулира сам. това че ти работи на схема се дължи на грешен сорс

Автор:  Cekins [ Пет Авг 19, 2011 10:06 am ]
Заглавие:  Re: Моля за малко помощ

Почти всички 16-ки имат Interupt On Change на PortB4 .. 7

Усетих се че иде реч за някой дето няма портБ ама със закъснение. Аз много рядко ги ползвам.

Освен това, специално за пиковете е хубаво да познаваш асемблера - никой не казва да пишеш на асемблер, ама понякога се налага да се напише нещо много изцедено. А другото приложение е да видиш какви ги е натворил компилатора. И освен всичко останало това не е РС.

Автор:  stojo [ Пет Авг 19, 2011 12:51 pm ]
Заглавие:  Re: Моля за малко помощ

didofen нулирал съм го в кода, при физическа установка програмата си работи добре, просто в протеус не се нулира, и незнам защо, или някоя настройка за която не знам, или бъг... питам защото там ми е по удобно да внасям изменения в програмите, вместо да буча чипа от програматора в платката и обратно...

Автор:  itso.t [ Пет Авг 19, 2011 1:14 pm ]
Заглавие:  Re: Моля за малко помощ

Понякога има разлика между реалния контролер и моделът му в Протеус.

Автор:  stojo [ Съб Авг 20, 2011 10:34 am ]
Заглавие:  Re: Моля за малко помощ

А как да конфигурирам RA3:5 като входове? RA3 e mcrl, RA4 и 5 са osc1 и 2. И за трите пише, че може да се ползват като входове, ама само от trisa не се получава. http://ww1.microchip.com/downloads/en/d ... 41203B.pdf
Използвам вградения осцилатор.

Автор:  itso.t [ Съб Авг 20, 2011 12:53 pm ]
Заглавие:  Re: Моля за малко помощ

TRIS е една от стъпките. Виж каква периферия има на съответните пинове и чрез кои регистри се конфигурира. По спомен, MCLR беше в "configuration words".

Автор:  Cekins [ Съб Авг 20, 2011 1:23 pm ]
Заглавие:  Re: Моля за малко помощ

Осцилатора също е от Fuses. Резета може да се ползва само като вход но лично аз не го препоръчвам, освен ако чак толкова не си закъсал за един вход. Много рядко ползвам резета като вход и то само на 12-ки. Ако правилно си направил config-а би трябвало безпроблемно да си работят като I/О двата пина. Не ми се гледа сега ама по спомен освен осцилатора там няма нищо друго обикновенно.

Автор:  didofen [ Пон Авг 22, 2011 9:04 am ]
Заглавие:  Re: Моля за малко помощ

да, освен входовете за всички видове генератори там няма друго. задаваш си, че искаш вътрешен генератор и вече от триса си правиш входове, и ще тръгне. а за мслр, наистина се ползва мн внимателно, с подпорка и кондензатор 1-100нФ, че е мн чувствителен

Автор:  stojo [ Пон Авг 22, 2011 6:09 pm ]
Заглавие:  Re: Моля за малко помощ

А как да стане така, че прекъсването от различен пин на порт а да ми задейства диод на различен пин от порт с?

Автор:  ToHu [ Пон Авг 22, 2011 9:18 pm ]
Заглавие:  Re: Моля за малко помощ

Ами просто, въпросът е обаче колко бързи са тия сигнали. Правиш си "бакъп" на порта при всяко прекъсване, при следващото сравняваш бекъпа с текущото състояние и откриваш кои пинове са се променили. Тук опира и до тов акак да направиш бекъпа и как да сравняваш. С оглед на това че ПИК поддържа побитови инструкции, най-лесно е да пазиш бекъп на всеки бит а не да четеш порта и да го пазиш като байт, въпреки че и това не е по-бавно ако се напише както трябва, всъщност неправилно написано побитовата обработка може да отнеме повече време от неправилно написано побайтово проверяване.

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