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

Странен проблем с външно пълнене на TMR1
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=5805
Страница 1 от 1

Автор:  perro_iv [ Чет Май 22, 2008 3:58 pm ]
Заглавие:  Странен проблем с външно пълнене на TMR1

Конфигурирам си таймер1 да се пълни през RB6 на PIC16F87. Този пин е към колектора на един оптрон, който е изтеглен към захр. напр през 10К резистор.Активирам таймера с T1CON,0 и той се препълва без да подавам положителни фронтове.Когато го изключа и тествам пина като стандартен вход по същата схема всичко е ОК, в смисъл няма някви смущаващи осцилации, които да са причина за препълване на таймера.
Има ли някаква особеност при конфигурирането на таймера, освен:

movlw B'00000110'
movwf T1CON

Шибаното е че този пин се ползва от ICD-то и не мога да дебъгна както трябва.Иначе съм му дал DEBUG_OFF в конфиг. дума, за да си бъде стандартен I/O.

Автор:  plameniv [ Чет Май 22, 2008 4:37 pm ]
Заглавие:  Re: Странен проблем с външно пълнене на TMR1

perro_iv написа:
Конфигурирам си таймер1 да се пълни през RB6 на PIC16F87. Този пин е към колектора на един оптрон, който е изтеглен към захр. напр през 10К резистор.Активирам таймера с T1CON,0 и той се препълва без да подавам положителни фронтове.Когато го изключа и тествам пина като стандартен вход по същата схема всичко е ОК, в смисъл няма някви смущаващи осцилации, които да са причина за препълване на таймера.
Има ли някаква особеност при конфигурирането на таймера, освен:

movlw B'00000110'
movwf T1CON

Шибаното е че този пин се ползва от ICD-то и не мога да дебъгна както трябва.Иначе съм му дал DEBUG_OFF в конфиг. дума, за да си бъде стандартен I/O.

А как си конфигурирал OPTION_REG ?
Там е важно да му заложиш делител и към кой таймер да ходи от какъв фронт да се пълни ?

Автор:  perro_iv [ Чет Май 22, 2008 4:55 pm ]
Заглавие: 

OPTION_REG няма отношение към работата на TMR1, а на TMR0 и WDT.

Автор:  relsys [ Чет Май 22, 2008 10:09 pm ]
Заглавие: 

пусни синхронизацията

Автор:  perro_iv [ Пет Май 23, 2008 10:49 am ]
Заглавие: 

Не е от синхронизацията.
Възможно ли е да е от това че ICD 2 програматора ползва този пин, въпреки че така или иначе го изключвам а пина го свързвам през джъмпер към у-то.
Никви чипове с малко пинове вече ... мамка му ...

Автор:  GTN [ Пет Май 23, 2008 11:36 am ]
Заглавие: 

Сигурен ли си че TRISB6=1?
Аз точно сега си се занимавам с друг процесор но пак с ТМР1. Пуксма го така:
Код:
T1CON=0b00000110;   //timer 1 OFF, gate_off, prescaler 1:1,  LP_off, asyncronious
TMR1ON=1;   //start timer 1


Като го спирам
Код:
TMR1ON=0;   //stop timer 1
TMR1L = 0;
TMR1H = 0;

Автор:  Cekins [ Пет Май 23, 2008 6:03 pm ]
Заглавие: 

Ти всъщност не каза по какво разбираш че се е напълнил таймера - по прекъсване ли, проверяваш TMR1H и ТМR1L или как.

Автор:  perro_iv [ Пет Май 23, 2008 10:54 pm ]
Заглавие: 

По флаговия бит.
Тъй като не мога да използвам ICD-то като дебъгер си пускам едно диотче като контрола.

Пускам таймера и следя бита, ако се вдигне паля диода, ако не нищо.

Като не пусна таймера диода не светва, като го пусна светва моментално.

Нулирам флага и пускам таймера, пускам таймера и на следващата стъпка нулирам флага - все същия резултат.

Няква шибана история, ама вече си направих платката и не ми се заменя с някоя 876-ца.

Така или иначе се отказах да ползвам таймера по този начин и просто си следя RB6 и инкрементирам.
Проблема е, че трябва да преброя близо 600 фронта и с TMR1 в Compare мод на CCP-то щеше да стане перфектно ама и така става.

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

Иначе ако някой се сеща нещо по въпроса може да сподели.

Автор:  Syrius-B [ Съб Май 24, 2008 1:27 am ]
Заглавие: 

Щом не брои от вънка, значи брои от някъде другаде.
Прегледай си инициализацията.

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