|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 8:50 am
| Автор |
Съобщение |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Аз пак не ти вярвам  Как ли работят всичките ми устройства с вътрешен генератор и забранен MCLR (в повечето случаи, особено при 12-ките го ползвам като input) ?! 
|
| Съб Дек 22, 2007 11:23 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Mm
 |  |  |  | Syrius-B написа: При всички е така. Освен това има проблеми с програмирането - проблема е, че обикновено не се програмира Това, което го пише в Datasheets за разните функционални възможности, е вярно поотделно, но не е безусловно и винаги. Специално за MCLR пина, не можеш да го ползваш като I/O, при вътрешен генератор по нормалния начин. Има обиколен път, но е "с едно наум". Трябва при програмирането да го излъжеш, че няма да го ползваш, и после да го включиш, но номера не минава на всички процесори Затова, просто не го ползвай, и няма да имаш проблем нито с програмирането, нито с дебъга. |  |  |  |  |
Нищо вярно няма в тези твърдения !!!
1.Защо твърдиш че не ти се програмира, явно в програматора ти куца нещо ?
2.Специално на този професор управлението на MCLR се насочва при програмиране , най добре си го сложи вътрешно за да нямаш ядове и така освобождаваш порта за свой цели и си става порт за вход . Никога не съм имал ядове в такъв случай въпреки че си бачка с вътрешен генератор !
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Нед Дек 23, 2007 1:31 am |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
 УСПЕХ !!!
Здравейте,
нещата се оправиха,PIC-a го програмирам като съм извел лентов кабел от програматора и чрез него програмирам PIC-a на платката. Като разбира се чрез джъмпери изключвам PIC-a от останалата част от платката. Проблемът беше че не бях поставил кабела както трябва. След като го оправих PIC-a се прочете успешно. Така че предположението че PIC-a не е свързан добре излезе вярно.
Сега относно генератора. Стана точна така, както каза plameniv. Първо прочетох процесора и на проследният адрес от програмната памет 0х3FF имаше записана стойност 0х3444.
Записах стойността на лист и после от File -> Open вкарах моя код. След това записах 0х3444 на адрес 0х3FF и пуснах PIC-a да се програмира. При програмирането в началото започва да се чете PIC-a и в един момент излиза съобщение че на адрес 0х3FF от файла е намерена стойност 0х3444 и в съобщението се пита дали да се ползва тази стойност при програмирането. Дадох му Yes и програмирането продължи нататък. След като се програмира пуснах платката и всичко си тръгна както трябва.
След тези опити мога да кажа, че без конфигуриращата стойност на тактовия генератор изобщо не тръгва а стойността не е само за донагаждане на тактовата честота,както си мислех в началото.
Относто извода MCLR, при INTOSC може да се ползва но само като вход, като изход не работи. Това го проверих на практика.
Благодаря на всички да съдействието и най-вече на plameniv, че иначе кой знае колко време щях да се тормозя докато подкарам PIC-a!
Сега ми става да се проборя с аналоговия компаратор  че нещо ми създава ядове за сега.
Имам и още един въпрос. Понякога АЦП-то ми дава лъжливи стойности. В началото меря от един вход от АЦП-то и след това сменям от друг. Може ли от това да се дължи. Между превключването съм оставил закъснения и пак така се получава. Като пусна програмата в Proteus-a ми изписва съобщение че при този генератор може АЦП-то да не работи коректно и май наистина ще излезе така. Как може да се оправи това.
Утре ще пусна и код за да видите програмата.
|
| Нед Дек 23, 2007 10:07 am |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Re: УСПЕХ !!!
Как ще тръгне генератора ако не пишеш нищо там нали имаш обръщение към този адрес , то отива там за да вземе каква е настройката и посля я записва ако го пратиш на NOP или 3FFF е съвсем друга команда !!! А между другото нали си сложил в началото на програмата обръщение към този адрес ?
Цифровия компаратор има доста настройки :
1.трябва да решиш как да си конфигурираш компаратора кой извод къде ще е насочен според конфигуриращите битове
2.трябва да решиш с какъв Vref ще е вътрешен или външен пак според конфигуриращите битове, ако е вътрешен този VREF също има настройки за какво ниво да ти се преобръща компаратора и т.н.
3.имай в предвид че АДЦ-то е бавно , има един бит който се вдига когато си е свършил работата слушай него , дори може и прекъсване да ползваш вместо празни цикли да редиш , като пекъсне изчиташ го и върши нещо , може напремер основната програма да проверява този флаг ако е вдигнат изчита АДЦ-то и го пуска на дисплей или за някакви операции с тия данни ако трябва да се правят 
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Нед Дек 23, 2007 4:16 pm |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Сигурно имаш в предвид бит-а GO/DONE. Понеже работя с CCS компилатора не бях много сигурен дали в функцията read_adc() прави проверка за край на ADC преобразуването, обаче като проверих чрез МПЛАБ-а се оказа че в асемплерския файл който се прави от C файла има такава проверка. В снимката отдолу може да погледнеш в дясно на ред 114.
Сега да обясня на кратко какво искам да направя. Искам да измеря стойностите на напрежението от двата канала на ADC-то, 6-ти и 7-ми. Ако напрежението на 6-ти например е > от напрежението на 7-ми се светва един светодиод ако напрежението на 6-ти например е <от напрежението на 7-ми. В Proteus-a всичко си върви перфектно обаче на практика съвсем не е така. По принцип светодиодите се превключват нормално в зависимост от напрежението обаче в един момент става превключване на светодиодите за момент без причина за около 0.1 сек след което нещата пак си тръгват нормално. Разликата между напреженията е много малка около 30мВ. Обаче при опорно напрежението на ADC-то 5В и резолюция от 1024 това прави 5/1024=0.0049В на импулс което е достатъчно да хване разлика от 30мВ.
Идва ми една идея как да оправя нещата ама е много тъпо. Да направя една проверка дали примерно напрежението на 6-ти например е > от напрежението на 7-ми след което да изчакам 200mS и пак да повторя проверката така превключванията с време < 0.1 сек няма да отказват влияние. Ама нещо не ми харева много този метод щото каква е гаранцията че след 200nS няма пак да има импулс. Е не че вероятнота е много голяма, ама све пак.
Пускам и кода на програмата
|
| Пон Дек 24, 2007 10:20 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
Мисля че имаше подобна тема във форума за този проблем , когато следиш с АДЦ на 2-та порта в професора трябва да имаш при превключване когато мериш по голямо закъснение между тях за да успее капацитета на АДЦ-то да се зареди с новата стойност 
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Вто Дек 25, 2007 3:09 am |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Да и аз мисля че някъде из форума бях чел за нещо подобно. Ще се поразровя дано да открия темата.
|
| Вто Дек 25, 2007 8:02 am |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Здравейте,
прегледах темите из форума по въпроса с АЦП-то. Това което намерих в една от темите беше че преди смяната на каналите АЦП-то трябва да се изключи и да се изчака известно време след което да се смени канала и пак да се включи. Добавих това в моята програма обаче за съжаление това не помогна. Отново от време на време се получават лъжливи стойности. Проблемът го реших по много тъп начин, но пък работи. Решението което измислих е следното. Прави се едно измерване на стойностите на канал 6 и 7, след което измерването се повтаря ако резултатът е същия т.е напрежинието на канал 6 е <( > ) от напрежението на канал 7 тогава се преминава нататък в програмата. Или на кратко ако трябва да обобщя, ако 2 последователни изнервания дадат един и същи резултат тогава се изпълнява нататък. Ако измерванията се различават се преминава към ново измерване. Наясно съм че това е едно от най-тъпите решения но за момента само то върви работа.
|
| Чет Дек 27, 2007 3:02 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|