Отговори на тема  [ 7 мнения ] 
Proteus > PIC 12-êè 
Автор Съобщение
Мнение Proteus > PIC 12-êè
Ïðèíöèïåí âúïðîñ. Proteus-à èìà ëè ïðîáëåì ñúñ ñèìóëàöèÿòà íà 12-êè? Èìàì íÿêîëêî ïðîãðàìè, êîèòî ñúñ ñèãóðíîñò ðàáîòÿò. Ïðè 16-êè è ò.í. íÿìà ïðîáëåìè. Ïðè 12-êè íå òðúãâàò.?
Ìèñëÿ ñúùî, ÷å èìà ïðîáëåì àêî íàïðèìåð íàïðàâÿ delay_ms îò ïîðÿäúêà íà 10ìèí.... è íàãîðå.


Пет Апр 01, 2005 8:55 pm
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Абе и при мене прави подобни работи, само дето всичко което съм пробвал с 12-ка тръгна. Проблеми ми дава при Config думата, но не ме бърка. Я поясни какъв е тоя delay_ms() 10 мин. Да не ти е проблем в сорса...


Съб Апр 02, 2005 10:19 am
Профил
Мнение 
Àêî íå ñå ëúæà delay ñå èçïîëçâà êàòî çàêúñíåíèå çà íÿêàêúâ èíòåðâàë îò âðåìå. Àç ñúì çàäàë ïîâå÷å ìèëèñåêóíäè. Ïî òîçè íà÷èí ìîãà äà ïîëó÷à 1ìèí. è ò.í.. ×ðåç âãðàäåíèÿ òàéìåð èçìåðâàì öèêëè. Ñïîðåä ìåí è äâåòå ïðîãðàìè ïðÿáâà äà ðàáîòÿò, à íå ñàìî ïúðâàòà. Íå áè ëè òðÿáâàëî Ñ-òî ñàìî äà ïðàâè òàçè ÷àñò îò êîä ïðè ïî-ãîëåìè èíòåðâàëè îò âðåìå? Ñìèñúë ïðè ïî-ìàëêè èíòåðâàëè äà îòìåðâà ñàìî òàèìåðà, à ïðè ïî-ãîëåìè äà èçìåðâà íÿêîëêî öèêúëà íà òàéìåðà?

Ïðèìåð:

1) òàçè ñ delay 1ìèí. òðúâà
#include <16F84.h>

#fuses XT, NOWDT, PUT
#use delay(clock=4000000)
#define Red_LED PIN_A1
main() {
while(TRUE) {output_low(Red_LED);
delay_ms(60000);
output_high(Red_LED);
delay_ms(60000);}}

2) òàçè ïðè 10ìèí. íå òðúãà- òîåñò âúðâè íî âðåìåòî êîåòî èìåðâà òðîòåóñà å äàëå÷ îò èñòèíàòà, à è àëãîðèòúìà âúîáùå íå ñå ñïàçâà.

#include <16F84.h>

#fuses XT, NOWDT, PUT
#use delay(clock=4000000)
#define Red_LED PIN_A1
main() {
while(TRUE) {output_low(Red_LED);
delay_ms(600000);
output_high(Red_LED);
delay_ms(600000);}}
:?


Съб Апр 02, 2005 11:55 am
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Абе да не те изъжа но май delay не може да е по голямо от FFFF ......

п.с. направо не може .......
но ..... да прави подобно закъснение по тоя начин .. не ми изглежда много добре, най-малко защото ак имаш други процеси неможеш да ги обслужваш по време на delay .....настрой си таймера да ти дава прекъсване на определено време и си слагаи в него променливите за таймера, така може да реализираш произволни времеви диапазони, без при това да се връзваш в delay.


Съб Апр 02, 2005 2:54 pm
Профил
Ранг: Професионалист
Ранг: Професионалист
Аватар

Регистриран на: Сря Окт 13, 2004 11:24 pm
Мнения: 500
Местоположение: Стара Загора
Мнение 
ТоНи е прав пробвай нещо от сорта:
Код:
#define X  10  // 10 минути
static long timer_intr_count;
#INT_TMR0 //настрой таймера и делителя за прекъсване всяка секунда
void timer_isr(){
    timer_intr_count++;
}

void main(){
    while(1){
       if (timer_intr_count == 60*X){
       //прави нещо през 10 мин.
       timer_intr_count=0; 
       }
     //прави нещо друго докато чакаш

    }
}


Съб Апр 02, 2005 3:22 pm
Профил YIM
Мнение 
Àáñîëþòíî ñòå ïðàâè, ÷å ìîÿò íà÷èí çà ïðàâåíå íà çàêúñíåíèå íå å óäà÷åí, íî âúïðîñúò å ïðèíöèïåí. Èìåííî ïðè FFFF å ìàêñèìàëíîòî ïðåïúëâàíå íà òàéìåðà, êîåòî ïðè 4Mhz å 65.5ms. Òîâà áè òðÿáâàëî äà îçíà÷àâà, ÷å çà 1ìèí. ñå èçìåðâàò n íà áðîé ïðåïúëâàíèÿ, íî çàùî òîâà íåñòàâà ñ ïî-ãîëåìè âðåìåíà 5ìèí.. è ò.í. êîãàòî ïðèíöèïà çà òÿõíîòî ðåàëèçèðàíå å ñúùèÿ. :?:


Вто Апр 05, 2005 4:47 pm
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Абе колегите говорят за самата функция delay_ms (или delay_us, все тая) че не трябва да ги викаш по подобен начин:
Код:
delay_ms(100000000000)
a най-голямото число в скобките да ти е FFFF или 65535....Ако искаш да направиш закъснение по голямо от 65535мс го напиши с цикъл...например
Код:
for (i=0;i<100;i++) delay_ms(10)
Това го пишеш за 1 секунда...Схващаш... :D


Вто Апр 05, 2005 4:53 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

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


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

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