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

Софтуеърен таймер за 60 000 000 цикъла (PIC16C74)
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6863
Страница 1 от 2

Автор:  iorgov [ Пон Юни 01, 2009 3:30 pm ]
Заглавие:  Софтуеърен таймер за 60 000 000 цикъла (PIC16C74)

Трябва ми такъв таймер с грешка най-много до ±100 цикъла.

опитах се да го направя,но в края изброините цикла са с около 1 милион повече

ще съм ви много благодарен ако ме насочите към някой сайт :oops:

Автор:  relsys [ Пон Юни 01, 2009 6:44 pm ]
Заглавие: 

Таймер или брояч?
Дай по - подробни данни де.

Автор:  iorgov [ Пон Юни 01, 2009 8:31 pm ]
Заглавие: 

Значи

Поставената ми задачата е да се направи управлението на следяща соларна система.

Системата е снабдена с два мотора за завъртене по осите Х и Y

Нужен ми е този таймер (или брояч) за да мога да казвам на моторите да се въртят в определена посока за 1 мин.
И след това имам изчакване от 5 мин за което мисля да използвам този от 1 мин и да го повторя 5 пъти. След което се стартира на ново програмата събира данните и решава на къде да се завърти.Замислено е системата да работи 24 часа без прекъсване.
Проблема в този таймер който организирах аз е че за 1 мин напредва с ~1.6 s. а за 5мин с ~8 s. Може да сметнете за 24 колко ще напредне

ПИК-ът работи на 4MHz времете за изпълнение на един цикъл е 1 микросекунда.

Само да спомена че това ми е дипломната работа :oops:

Автор:  ToHu [ Пон Юни 01, 2009 8:41 pm ]
Заглавие: 

Ами проблема ти не е в таймера или в софтуера а в честоата на процесора, въпреки че тази секунда за 1 мин е доста дори и за вътрешния осцилатор. Тези процесори имат регистър дето им пишеш корекция за генератора, но така или иначе не очаквай чудеса с вградения осцилатор, той си е RC, т.е. дори да го натъкмиш някак да работи при теб, на полето като го напече слънцето и стане 60 градуса ще мръдне не малко. По добрия вариант бучни един 32 кхц да ти е мирна главата, а пък ако искаш сложи и и голям, направо в Мхз.
Иначе от самото ти описание не е съвсем ясно каква ти е идеята ама както и да е, следил съм слънцето и си представям какво искаш да направиш :)

Автор:  iorgov [ Вто Юни 02, 2009 4:21 pm ]
Заглавие: 

Готово! Таймера е направен, не е както исках, но определено е по-добре отчита 59,958 секунди

Автор:  tgi [ Вто Юни 02, 2009 5:02 pm ]
Заглавие: 

Браво, че си се справил. Но пишеш сякаш си дизасемблер....
Когато се пише на асемблер, ако искаш да пишеш свестен код,
се пише коментар на всеки ред; и имената, които избираш за символите
трябва да носят съответния възможно най-очевиден за човек смисъл.
Ще се учудиш колко по-бързо върви програмирането като почнеш с текст
(на всеки ред) да обясняваш защо правиш каквото правиш на тоя ред (не и
да обясняваш синтаксиса, очаква се който чете да го знае). И нищо, ако
английският ти не е много красив за коментарите и имената; важното е да е
разбираем.

Автор:  maiden [ Вто Юни 02, 2009 5:45 pm ]
Заглавие: 

ами то хората са си направили колкулаторче за цикли..може и цикли може и секунди
http://www.golovchenko.org/cgi-bin/delay


ето примерен код за 60сек на 4мхз

Код:
; Delay = 60 seconds
; Clock frequency = 4 MHz

; Actual delay = 60 seconds = 60000000 cycles
; Error = 0 %

   cblock
   d1
   d2
   d3
   endc

         ;59999994 cycles
   movlw   0x23
   movwf   d1
   movlw   0xCB
   movwf   d2
   movlw   0x83
   movwf   d3
Delay_0
   decfsz   d1, f
   goto   $+2
   decfsz   d2, f
   goto   $+2
   decfsz   d3, f
   goto   Delay_0

         ;6 cycles
   goto   $+1
   goto   $+1
   goto   $+1


Автор:  iorgov [ Вто Юни 02, 2009 5:54 pm ]
Заглавие: 

maiden благодаря за посочения сайт. от сега нататък само него ще ползвам

Автор:  smtp [ Вто Юни 02, 2009 6:01 pm ]
Заглавие:  МъЪЪка, МъЪЪка

такова решение - само пикоборец може да измисли !

то по-добре сложи един механичен будилник (ще мери по-точно) :)

предполагам че за прекъсвания, таймери ... не си чувал !

Автор:  maiden [ Вто Юни 02, 2009 6:10 pm ]
Заглавие: 

Цитат:
предполагам че за прекъсвания, таймери ... не си чувал !


е стига де ...всеки рано или късно достига истината. Човека пита нещо конкретно
и е редно в унисон с него да му се отговори, пък дали има и по-добри начини сам ще се научи!!

Автор:  iorgov [ Вто Юни 02, 2009 6:25 pm ]
Заглавие: 

smtp написа:
предполагам че за прекъсвания, таймери ... не си чувал !


ами не чувал съм просто трябва да си предам работата до 11-ти юни, а за таймери нищо не знам и трябва да чета, а време няма

пак преди това ми се е налагало да организарам таймер на СМ600 по подобен на горният начин и за това реших да използвам него. Просто сметките не ми излизаха и за това се обърнах към вас за помощ. За която благодаря

Автор:  ToHu [ Вто Юни 02, 2009 6:57 pm ]
Заглавие: 

мммммммм шах и мат ... не се сърди, ама ако съм ти един ръководител недай си боже изпитващ и ми дойдеш с такъв код ще те изгоня, това което си направил означава тотално непознаване на архитектурата. Разбирам че е динпломна работа, и че може би не си много в час, ама ако не знаеш питаш .. чакай да види Киров :D.
Относно горния коментар за пикобореца, това няма нищо общо с пика, и с арма мое се сътвори същото.
Значи тоя твоят пик си има хардуерни таймери. Праиш си една 32 битова променлива, инкрементваш я във всяко прекъсване и толкоз ......

Автор:  woody [ Вто Юни 02, 2009 7:35 pm ]
Заглавие: 

ToHu написа:
... и с арма мое се сътвори същото ...


Ако ти се смятат сложните цикли на конвейра и достъпът към различните памети. И то естествено ако няма кеш. :P

Автор:  a_stankov [ Вто Юни 02, 2009 9:18 pm ]
Заглавие: 

iorgov написа:
Готово! Таймера е направен, не е както исках, но определено е по-добре отчита 59,958 секунди
Прилагам кода в случай че някой иска да го ползва или му се занимава да го доискосури точно за 60 секунди :roll:

Код:
TIMER1MIN
   MOVLW   0X06
   MOVWF   LR_TEMP2
L13
   MOVLW   0X02
   MOVWF   AKC
L9
   MOVLW   0X50
   MOVWF   AKB
L10
   MOVLW   0XA1
   MOVWF   AKA
L11   
   DECFSZ   AKA   
   GOTO   L11
   DECFSZ   AKB
   GOTO   L10
   DECFSZ   AKC
   GOTO   L9
   DECFSZ   LR_TEMP2
   GOTO   L13
   RETURN


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

Автор:  relsys [ Вто Юни 02, 2009 9:53 pm ]
Заглавие: 

То не трябва да работи, дипломна работа е... :P

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