| Автор |
Съобщение |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
 Т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 4:46 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Постни кода за инициализация на TMR0, какъв му е делителя ? Да не ди да брои 4 пъти по-малко импулси, вместо 4 пъти в повече ? Да нямаш шумотевици от входния сигнал, видя ли го с осцилоскоп с каква форма ? Достатъчно е да има тесен пик и да брои в повече.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пет Фев 24, 2006 7:00 pm |
|
 |
|
Dimiter
Ранг: Популярен
Регистриран на: Пет Фев 04, 2005 3:18 pm Мнения: 309 Местоположение: Sofia
|
RA4 е с отворен колектор , изтегли го за всеки случай с няколко килоома към +
|
| Пет Фев 24, 2006 7:39 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Най-вероятно проблема е до това, че всяко действие с TMR0 регистъра нулира PS-а  И става весело
Не е до незнаене. Просто се случва някои път да забравиш да укажеш стойността на PS.
Предполагам и затова Pirev иска кода 
|
| Пет Фев 24, 2006 7:41 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Без да се сърдиш че пускам дуплика, това дето предлагаш какво ще помогне ? Човека използва RA.4 като вход, не като изход. Ако е изход да, ама като вход ми е голяма въпросителна ...
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пет Фев 24, 2006 7:50 pm |
|
 |
|
zz_stefanov
Ранг: Популярен
Регистриран на: Пон Дек 26, 2005 3:19 pm Мнения: 336 Местоположение: Varna
|
То няма ли вътре WPU, а и говорим за вход.
Поздрави и успех 
Последна промяна zz_stefanov на Пет Фев 24, 2006 7:56 pm, променена общо 1 път
|
| Пет Фев 24, 2006 7:55 pm |
|
 |
|
Dimiter
Ранг: Популярен
Регистриран на: Пет Фев 04, 2005 3:18 pm Мнения: 309 Местоположение: Sofia
|
прави проблеми наистина
|
| Пет Фев 24, 2006 7:55 pm |
|
 |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
BANKSEL OPTION_REG
movlw B'01101000'
movwf OPTION_REG
movlw D'6'
movwf ADCON1
movlw B'00010101'
movwf TRISA
Но пак да кажа на Протеуса си върви както трябва.
Не е до смущения, защото направих достатъчно много проби и то с различни честоти.
Резултата - точно четири пъти повече преброени импулси.
|
| Пет Фев 24, 2006 9:00 pm |
|
 |
|
zz_stefanov
Ранг: Популярен
Регистриран на: Пон Дек 26, 2005 3:19 pm Мнения: 336 Местоположение: Varna
|
Това не прави ли броенето по нарастващ фронт и от там да се обърква всичко.
Dimiter извини ме  WPU имало само в PORTB
Поздравии успех 
|
| Пет Фев 24, 2006 9:39 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
Ами нямал съм никакви проблеми, не разбрах импулсите ли са ти 50 мс или времто за което мериш е 50 мс, ако винаги ралзката е 4 пъти повече ... замислял сли си дали просто не мериш за 4 пъти по дълго време .. защото смущение може да прави проблем, но пък винаги да е точно 4 пъти в повече ....
|
| Пет Фев 24, 2006 11:05 pm |
|
 |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
Правилно, допуснал съм грешка:
коректната конфигурация е :00111000, но едва ли това ще е причината, импулсите са с правоъгълна форма и К = 50%.
Ако не е нещо свързано със синхронизация спрямо тактовите импулси, което въобще не можах да разбера, проблемът ще е по-скоро хардуерен.
|
| Пет Фев 24, 2006 11:15 pm |
|
 |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
Времето за което меря е 50ms , честотата на имп. поредица е от 1 до 4,5 KHz.
При един килохерц би трябвало да преброи около 50 фронта, а в съответния регистър стойността е 200.
И така за всички честоти, като при по-високите за този интервал превърта регистъра.
Изхода от Hex inverting Schmitt trigger 74HC/HCT14 е свързан директно към RA4.
Времето задавам чрез TMR1 и при симулацията на Proteus си брои както трябва.
Странна работа, в понеделник ще се задълбоча повече върху РЕАЛИТИ изпълнението.
|
| Пет Фев 24, 2006 11:32 pm |
|
 |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
Симулаторите са удобно нещо, но никога 100% сигурност.
Трябва буква по буква да се чете дата шиита на процесора.
И най добре се пише на асемблер..
В този случай най-вероятно проблема е в инициализацията на таймер 1 (за 50-те мс)
|
| Съб Фев 25, 2006 1:20 am |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
@perro_iv, зарежи симулаторите и провери още веднъж програмата си.
Прочети внимателно описанията и ератите на двата таймера, като отчиташ и тактовата честота на контролера.
|
| Съб Фев 25, 2006 10:18 am |
|
 |
|
perro_iv
Ранг: Новодошъл
Регистриран на: Вто Авг 23, 2005 10:36 am Мнения: 156 Местоположение: Казанлък
|
Проблема е ясен и е в схемата за извеждане стойността на регистъра.
Понеже предназначението на схемата е с изследователска дейност, реших че най-простия начин за визуализиране на резултата е чрез преместващ регистър и
8 LED-а. Да ама наслагах и едни изтеглящи резистори, дето в симулацията ги няма. Получава се някво объркване по фронтове (днес не ми остана време да се задълбоча) и целия резултат излиза с два бита изместен наляво, което май е 4-пъти по-голяма стойност.
|
| Вто Фев 28, 2006 1:08 am |
|
|