| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| ТMR0 и RA4 странна работа ... http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=1883 |
Страница 1 от 2 |
| Автор: | perro_iv [ Пет Фев 24, 2006 4:46 pm ] |
| Заглавие: | ТMR0 и RA4 странна работа ... |
Използвам TMR0 за броене на импулси чрез RA4 при падащ фронт за 50 ms (PIC16F876). На симулацията с Протеуса всичко е наред, а в действителност преброява 4 - пъти повече импулси. Гледам тука някви обяснения относно фазови синхронизации с тактовия генератор, ама нещо не вдявам. Therefore, it is necessary for T0CKI to be high for at least 2Tosc (and a small RC delay of 20 ns) and low for at least 2Tosc (and a small RC delay of 20 ns). Някой да си е блъскал също главата. Импулсите са си точни, гледам ги на Осцилоскопа и като честота и форма нямат проблеми. |
|
| Автор: | ¶ [ Пет Фев 24, 2006 7:00 pm ] |
| Заглавие: | |
Постни кода за инициализация на TMR0, какъв му е делителя ? Да не ди да брои 4 пъти по-малко импулси, вместо 4 пъти в повече ? Да нямаш шумотевици от входния сигнал, видя ли го с осцилоскоп с каква форма ? Достатъчно е да има тесен пик и да брои в повече. |
|
| Автор: | Dimiter [ Пет Фев 24, 2006 7:39 pm ] |
| Заглавие: | |
RA4 е с отворен колектор , изтегли го за всеки случай с няколко килоома към + |
|
| Автор: | the_real_maniac [ Пет Фев 24, 2006 7:41 pm ] |
| Заглавие: | |
Най-вероятно проблема е до това, че всяко действие с TMR0 регистъра нулира PS-а Не е до незнаене. Просто се случва някои път да забравиш да укажеш стойността на PS. Предполагам и затова Pirev иска кода |
|
| Автор: | ¶ [ Пет Фев 24, 2006 7:50 pm ] | |||||||||
| Заглавие: | ||||||||||
Без да се сърдиш че пускам дуплика, това дето предлагаш какво ще помогне ? Човека използва RA.4 като вход, не като изход. Ако е изход да, ама като вход ми е голяма въпросителна ... |
||||||||||
| Автор: | zz_stefanov [ Пет Фев 24, 2006 7:55 pm ] | |||||||||
| Заглавие: | ||||||||||
То няма ли вътре WPU, а и говорим за вход. Поздрави и успех |
||||||||||
| Автор: | Dimiter [ Пет Фев 24, 2006 7:55 pm ] |
| Заглавие: | |
прави проблеми наистина |
|
| Автор: | perro_iv [ Пет Фев 24, 2006 9:00 pm ] |
| Заглавие: | |
BANKSEL OPTION_REG movlw B'01101000' movwf OPTION_REG movlw D'6' movwf ADCON1 movlw B'00010101' movwf TRISA Но пак да кажа на Протеуса си върви както трябва. Не е до смущения, защото направих достатъчно много проби и то с различни честоти. Резултата - точно четири пъти повече преброени импулси. |
|
| Автор: | zz_stefanov [ Пет Фев 24, 2006 9:39 pm ] | |||||||||
| Заглавие: | ||||||||||
Dimiter извини ме Поздравии успех |
||||||||||
| Автор: | ToHu [ Пет Фев 24, 2006 11:05 pm ] |
| Заглавие: | |
Ами нямал съм никакви проблеми, не разбрах импулсите ли са ти 50 мс или времто за което мериш е 50 мс, ако винаги ралзката е 4 пъти повече ... замислял сли си дали просто не мериш за 4 пъти по дълго време .. защото смущение може да прави проблем, но пък винаги да е точно 4 пъти в повече .... |
|
| Автор: | perro_iv [ Пет Фев 24, 2006 11:15 pm ] |
| Заглавие: | |
Правилно, допуснал съм грешка: коректната конфигурация е :00111000, но едва ли това ще е причината, импулсите са с правоъгълна форма и К = 50%. Ако не е нещо свързано със синхронизация спрямо тактовите импулси, което въобще не можах да разбера, проблемът ще е по-скоро хардуерен. |
|
| Автор: | perro_iv [ Пет Фев 24, 2006 11:32 pm ] |
| Заглавие: | |
Времето за което меря е 50ms , честотата на имп. поредица е от 1 до 4,5 KHz. При един килохерц би трябвало да преброи около 50 фронта, а в съответния регистър стойността е 200. И така за всички честоти, като при по-високите за този интервал превърта регистъра. Изхода от Hex inverting Schmitt trigger 74HC/HCT14 е свързан директно към RA4. Времето задавам чрез TMR1 и при симулацията на Proteus си брои както трябва. Странна работа, в понеделник ще се задълбоча повече върху РЕАЛИТИ изпълнението. |
|
| Автор: | Syrius-B [ Съб Фев 25, 2006 1:20 am ] |
| Заглавие: | |
Симулаторите са удобно нещо, но никога 100% сигурност. Трябва буква по буква да се чете дата шиита на процесора. И най добре се пише на асемблер.. В този случай най-вероятно проблема е в инициализацията на таймер 1 (за 50-те мс) |
|
| Автор: | Desert Leo [ Съб Фев 25, 2006 10:18 am ] |
| Заглавие: | |
@perro_iv, зарежи симулаторите и провери още веднъж програмата си. Прочети внимателно описанията и ератите на двата таймера, като отчиташ и тактовата честота на контролера. |
|
| Автор: | perro_iv [ Вто Фев 28, 2006 1:08 am ] |
| Заглавие: | |
Проблема е ясен и е в схемата за извеждане стойността на регистъра. Понеже предназначението на схемата е с изследователска дейност, реших че най-простия начин за визуализиране на резултата е чрез преместващ регистър и 8 LED-а. Да ама наслагах и едни изтеглящи резистори, дето в симулацията ги няма. Получава се някво объркване по фронтове (днес не ми остана време да се задълбоча) и целия резултат излиза с два бита изместен наляво, което май е 4-пъти по-голяма стойност. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|