| Автор |
Съобщение |
|
Mhz
Ранг: Минаващ
Регистриран на: Вто Яну 22, 2008 7:09 pm Мнения: 7 Местоположение: София
|
 Различни въпроси
Може ли някой да ми обясни точно работи тази функция.И как се "оразмерява" да работи в us, ms и s.
Последна промяна Mhz на Нед Фев 27, 2011 3:11 am, променена общо 2 пъти
|
| Пет Фев 25, 2011 4:36 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
Почни малко по от далече - Платформа, IDE, компилатор, процесор и т.н.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Пет Фев 25, 2011 4:50 pm |
|
 |
|
Mhz
Ранг: Минаващ
Регистриран на: Вто Яну 22, 2008 7:09 pm Мнения: 7 Местоположение: София
|
PIC16F84A
HI-TECH C
MPLAB
идеята е да управлявам 7 сегментен индикатор , правейки брояч от 0 до 9 секунди , ясно ми е всичко как трябва да стане , освен как да го направя да изчаква 1 секунда, а и като цяло искам да разбера как работи тази функция.
|
| Пет Фев 25, 2011 5:02 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Калкулира няколко цикъла, според тактовата честота и я пльосва 'inline' за да не се губи/пресмята и времето за викане на функция. От където пък следва, че ако я използваш на няколко места кодът ще нараства линейно на броя извиквания. Като цяло не е това подхода, защото така ще загубиш 1s процесорно време. Използвай таймер. Просто му проверявай стойността и при достигане на необходимата стойност сменяй цифрата и нулирай таймера.
|
| Пет Фев 25, 2011 5:59 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Недай си боже и ако се обработват прекъсвания - тая 1 секунда става + Х микро/мили секунди, където Х е голямо неизвестно
Проверката на таймера пък също не е най-удачния вариант - прави се със запис на предварително изчислена стойност в таймера и той като се препълни да цъкне прекъсване. А ако сложи кварц 2.097152 MHz с таймер1 ще може да прави и 1 секунда точно. А 4.194304 MHz има да се продават - с него става 2 Hz.
|
| Пет Фев 25, 2011 6:23 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Това е ясно Цекинс, ама сметнах, че ще го хвърлим много надълбоко.
|
| Пет Фев 25, 2011 9:20 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Че то плитко има ли? То тва да не е РС?
От самото начало трябва да се свиква да се броят инструкциите 
|
| Пет Фев 25, 2011 11:17 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Не е точно така. Обучението трябва да бъде последователно и методично, от по-лесно към по сложно. И да се повтарят нещата с цел получаване на трайни познания. Като съответно трябва да е съобразено с текущото ниво на развитие на мозъка в дадената област.
|
| Съб Фев 26, 2011 12:42 pm |
|
 |
|
Mhz
Ранг: Минаващ
Регистриран на: Вто Яну 22, 2008 7:09 pm Мнения: 7 Местоположение: София
|
От известно време се боря с Timer0 ама без успех ,
Дайте някоя идея как да го направя да дели до 1hz ...
4Mhz ми е кварца
|
| Съб Фев 26, 2011 5:52 pm |
|
 |
|
fan
Ранг: Почетен член
Регистриран на: Съб Окт 13, 2007 12:12 pm Мнения: 712
|
Ами това, което си написал върши работа, но за да го видиш визуално трябва лека преработка.
|
| Съб Фев 26, 2011 8:17 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
И за да не разхищаваме процесорното време, аз бих го написал така:
|
| Съб Фев 26, 2011 8:57 pm |
|
 |
|
Mhz
Ранг: Минаващ
Регистриран на: Вто Яну 22, 2008 7:09 pm Мнения: 7 Местоположение: София
|
Сменям името на темата, защото мисля да задавам тук и други глупави въпроси.  Та още един въпрос някаква конкретна формула за изчисляване на делението на честотата от кварца?И как тази програма да я вкарам като функция и да я викам примерно като ми трябва закъснение 1s?
|
| Съб Фев 26, 2011 9:52 pm |
|
 |
|
a_stankov
Ранг: Новодошъл
Регистриран на: Съб Дек 06, 2008 9:22 am Мнения: 119 Местоположение: Пловдив
|
За TMR0:
Tover=(256-(TMR0)) x 1/Kpc x 4/Fosc
Fosc - е в Mhz
Променяйки стойността на регистъра TMR0 и/или коефициента на прескалера (Kpc), можеш да променяш времето са препълване на таймера.
|
| Нед Фев 27, 2011 10:45 am |
|
 |
|
Mhz
Ранг: Минаващ
Регистриран на: Вто Яну 22, 2008 7:09 pm Мнения: 7 Местоположение: София
|
Добре как да изравня дължината на импулса и паузата... защото получавам дълъг импулс и къса пауза и обратното? Също как да го направя така че да го викам като функция като ми трябва закъснение 1 секунда?
|
| Нед Фев 27, 2011 7:09 pm |
|
 |
|
a_stankov
Ранг: Новодошъл
Регистриран на: Съб Дек 06, 2008 9:22 am Мнения: 119 Местоположение: Пловдив
|
Я постни някакъв примерен код от това което пишеш за да ти помогнем практически. Принципно точно HI-Tech точно не съм ползвал но CCS и MicroC имат готови функции за време закъснение от ms и us.
Delay_ms(x);
Delay_us(x);
Като х може да има стойност до 65536.
|
| Нед Фев 27, 2011 10:02 pm |
|
|