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

Проблем с PIC12F1840
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13711
Страница 1 от 2

Автор:  lcr [ Сря Апр 15, 2015 1:38 pm ]
Заглавие:  Проблем с PIC12F1840

Здравейте приятели!

Начинаещ съм в програмирането на микроконтролери, но до момента все някак се справях. Натъкнах се на непонятен за мен проблем с PIC12F1840 и XC8 компилатор. Проблемът се състои в това, че не мога да накарам да се "запалят" повече от един изхода едновременно.

Пример:


#include<pic.h>
#include<pic12f1840.h>
#pragma config WDTE=OFF
#pragma config LVP=OFF

unsigned int i;
void pause_1();


void main()
{

OSCCON = 0B10111010; //int osc - 1Mhz
TRISA = 0B00000011; //RA1 ; RA0 inputs

RA4=1;
pause_1();
RA4=0;
pause_1();

}


void pause_1()
{

for(i=0; i<5000; i++);
}


В този случай RA4 си се пали и гаси, както трябва.

Ако сменя RA4 с RA2, RA2 също си се пали и гаси.

Но ако искам и двата порта да се палят едновременно:

void main()
{

OSCCON = 0B10111010; //int osc - 1Mhz
TRISA = 0B00000011; //RA1 ; RA0 inputs

RA4=1;
RA2=1;
pause_1();
RA4=0;
RA2=0;
pause_1();

}

работи само RA2

Моля за вашата помощ относно това, как да накарам повече от 1 порт да се управляват едновременно.

Автор:  michev [ Сря Апр 15, 2015 2:03 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Изглежда почти работещо .. ако изключим факта че има изход от програмката ти.
Я пробвай така
Код:

#include <xc.h>
#pragma config .....

void pause_1()
{

for(i=0; i<5000; i++);
}

void main()
{

OSCCON = 0B10111010; //int osc - 1Mhz
TRISA = 0B00000011; //RA1 ; RA0 inputs

  while (1)
  {
    RA4=1;
    RA2=1;
    pause_1();
    RA4=0;
    RA2=0;
    pause_1();
  }
}

Автор:  lcr [ Сря Апр 15, 2015 3:45 pm ]
Заглавие:  Re: Проблем с PIC12F1840

michev написа:
Изглежда почти работещо .. ако изключим факта че има изход от програмката ти.
Я пробвай така ........


Пак работи само RA2 :(

Автор:  Cino [ Сря Апр 15, 2015 4:08 pm ]
Заглавие:  Re: Проблем с PIC12F1840

LATA4=1;
LATA2=1;

http://www.mikroe.com/download/eng/docu ... lp/rmw.htm

Автор:  lcr [ Сря Апр 15, 2015 4:43 pm ]
Заглавие:  Re: Проблем с PIC12F1840




Така всичко е "ток и жица" :)

Много ти благодаря!

Жив и здрав да си!

Автор:  Cekins [ Сря Апр 15, 2015 9:18 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Ти верно ли настъпа тая мотика? Този ефект съм го постигал чак при 64MHz на 18F4622. При 4-8MHz не би трябвало да го прави.

Автор:  lcr [ Сря Апр 15, 2015 11:46 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Cekins написа:
Ти верно ли настъпа тая мотика? Този ефект съм го постигал чак при 64MHz на 18F4622. При 4-8MHz не би трябвало да го прави.


Да бе - то такива работи на такива прощапулници, като мен се случват - за да се сблъскат с трудности, та да се понаучат :)

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

....И за пореден път се убедих в това, че форумът е голяма работа :)

Автор:  Gogo [ Чет Апр 16, 2015 12:29 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Cekins написа:
Ти верно ли настъпа тая мотика? Този ефект съм го постигал чак при 64MHz на 18F4622. При 4-8MHz не би трябвало да го прави.
За какъв ефект става въпрос?

Автор:  Cekins [ Чет Апр 16, 2015 2:54 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Физически пина да не се сетне за времето между две инструкции. В линка дето е даден е обяснено с картинки. Не че е невъзможно ама бая капацитет трябва за да се случи - нещо от порядъка на над 500pF - 1nF. Капацитета на пиновете по спомен беше нещо като 10-15pF. Освен ако няма закачен някой корав мосвет директно на тоя пин, друго какво може да го натовари така? Та на мен ми се е случвало ама чак при 64MHz и да има достатъчно голям капацитет на пина, че да не може да стигне 3 волта до следващата инструкция.

Автор:  lcr [ Чет Апр 16, 2015 8:35 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Обяснението от линка го разбрах, но не разбрах, защо примерно при 16F84 или 16F88 този ефект го няма. Или поне аз не съм го забелязал.
А и обяснението с капацитивния характер на товара - ОК но в случая с 12F1840 с чисто активен товар и то далеч от товароспособността на изхода (1 mA) пак се проявява мизерията. :(

Автор:  Cekins [ Чет Апр 16, 2015 9:25 pm ]
Заглавие:  Re: Проблем с PIC12F1840

При всички пикове го има (за 16 и 32 битовите не съм сигурен). Вече казах при какви условия лично аз съм го виждал това. Имам усещането, че при теб проблема е друг. Пусни .asm файла с неработещата програма да видим какво дъвче компилатора, щото проблема може и от там да е.

Автор:  lcr [ Пет Апр 17, 2015 10:34 am ]
Заглавие:  Re: Проблем с PIC12F1840

Cekins написа:
При всички пикове го има (за 16 и 32 битовите не съм сигурен). Вече казах при какви условия лично аз съм го виждал това. Имам усещането, че при теб проблема е друг. Пусни .asm файла с неработещата програма да видим какво дъвче компилатора, щото проблема може и от там да е.


Прикачени файлове:
1840_test.X.production.txt [21.82 KiB]
299 пъти

Автор:  Cekins [ Пет Апр 17, 2015 11:52 am ]
Заглавие:  Re: Проблем с PIC12F1840

Хм. Нормално си е. Явно наистина си настъпал мотиката :)

Автор:  pechkov [ Пет Апр 17, 2015 12:46 pm ]
Заглавие:  Re: Проблем с PIC12F1840

lcr написа:
... В този случай RA4 си се пали и гаси, както трябва.
Ако сменя RA4 с RA2, RA2 също си се пали и гаси.
Но ако искам и двата порта да се палят едновременно: ...
... работи само RA2


На мен нещо ми убягва. Как с промяна в програмата ще се променя капацитета на периферията?

Автор:  lcr [ Пет Апр 17, 2015 1:21 pm ]
Заглавие:  Re: Проблем с PIC12F1840

Обяснението с капацитивния товар вероятно не касае този случай. А и примерно със 16F88 и с RC товар на изход, на границата на товароносимостта му, такъв проблем не съм имал.

Явно е това с мотиката :)

По-важното е това, че решението на мизерията е ясно.

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