Отговори на тема  [ 49 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща
Моля за малко помощ 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Авг 18, 2011 3:44 pm
Мнения: 27
Мнение Моля за малко помощ
Тъй, ето я програмата, която съчиних:
Код:
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 и след това четенето и от там и присвояването и към порт С, обаче все нещо не ми се получава. Дайте някакви идеи моля.


Чет Авг 18, 2011 3:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Моля за малко помощ
Ъъъъъ

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

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


Чет Авг 18, 2011 9:56 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Авг 18, 2011 3:44 pm
Мнения: 27
Мнение Re: Моля за малко помощ
Имам 2 бутона на RA0 и RA1 и 2 светодиода на RC0 и RC1. Искам при предизвикано прекъсване чрез бутона на RA0 , да светва диода на RA0 и съответно от бутона на RC1 да светва диода на RC1.


Чет Авг 18, 2011 10:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Моля за малко помощ
Какъв е чипа?

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

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

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

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


Чет Авг 18, 2011 11:58 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Авг 18, 2011 3:44 pm
Мнения: 27
Мнение Re: Моля за малко помощ
pic16f688, той няма порт В, ама от асемблер не разбирам много тъй, че ако може на С. Другия ми проблем е, че като симулирам с протеус, не ми нулира RAIF и не излиза от прекъсването, а при реална схема всичко работи нормално.


Пет Авг 19, 2011 12:28 am
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение Re: Моля за малко помощ
cekins, почти всички пикове особено 16ките имат прекъсване по портА.
а stojo, никои флаг индикиращ нпрекъсжане не се нулира сам. това че ти работи на схема се дължи на грешен сорс


Пет Авг 19, 2011 9:26 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Моля за малко помощ
Почти всички 16-ки имат Interupt On Change на PortB4 .. 7

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

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


Пет Авг 19, 2011 10:06 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Авг 18, 2011 3:44 pm
Мнения: 27
Мнение Re: Моля за малко помощ
didofen нулирал съм го в кода, при физическа установка програмата си работи добре, просто в протеус не се нулира, и незнам защо, или някоя настройка за която не знам, или бъг... питам защото там ми е по удобно да внасям изменения в програмите, вместо да буча чипа от програматора в платката и обратно...


Пет Авг 19, 2011 12:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12764
Местоположение: София
Мнение Re: Моля за малко помощ
Понякога има разлика между реалния контролер и моделът му в Протеус.


Пет Авг 19, 2011 1:14 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

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


Съб Авг 20, 2011 10:34 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12764
Местоположение: София
Мнение Re: Моля за малко помощ
TRIS е една от стъпките. Виж каква периферия има на съответните пинове и чрез кои регистри се конфигурира. По спомен, MCLR беше в "configuration words".


Съб Авг 20, 2011 12:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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


Съб Авг 20, 2011 1:23 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение Re: Моля за малко помощ
да, освен входовете за всички видове генератори там няма друго. задаваш си, че искаш вътрешен генератор и вече от триса си правиш входове, и ще тръгне. а за мслр, наистина се ползва мн внимателно, с подпорка и кондензатор 1-100нФ, че е мн чувствителен


Пон Авг 22, 2011 9:04 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Авг 18, 2011 3:44 pm
Мнения: 27
Мнение Re: Моля за малко помощ
А как да стане така, че прекъсването от различен пин на порт а да ми задейства диод на различен пин от порт с?


Пон Авг 22, 2011 6:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение Re: Моля за малко помощ
Ами просто, въпросът е обаче колко бързи са тия сигнали. Правиш си "бакъп" на порта при всяко прекъсване, при следващото сравняваш бекъпа с текущото състояние и откриваш кои пинове са се променили. Тук опира и до тов акак да направиш бекъпа и как да сравняваш. С оглед на това че ПИК поддържа побитови инструкции, най-лесно е да пазиш бекъп на всеки бит а не да четеш порта и да го пазиш като байт, въпреки че и това не е по-бавно ако се напише както трябва, всъщност неправилно написано побитовата обработка може да отнеме повече време от неправилно написано побайтово проверяване.


Пон Авг 22, 2011 9:18 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 49 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


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

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни