Отговори на тема  [ 20 мнения ]  Отиди на страница 1, 2  Следваща
Софтуеърен таймер за 60 000 000 цикъла (PIC16C74) 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение Софтуеърен таймер за 60 000 000 цикъла (PIC16C74)
Трябва ми такъв таймер с грешка най-много до ±100 цикъла.

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

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


Пон Юни 01, 2009 3:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Таймер или брояч?
Дай по - подробни данни де.


Пон Юни 01, 2009 6:44 pm
Профил ICQ WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение 
Значи

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

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

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

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

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


Пон Юни 01, 2009 8:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

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


Пон Юни 01, 2009 8:41 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение 
Готово! Таймера е направен, не е както исках, но определено е по-добре отчита 59,958 секунди


Последна промяна iorgov на Сря Юни 03, 2009 12:22 am, променена общо 3 пъти



Вто Юни 02, 2009 4:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Браво, че си се справил. Но пишеш сякаш си дизасемблер....
Когато се пише на асемблер, ако искаш да пишеш свестен код,
се пише коментар на всеки ред; и имената, които избираш за символите
трябва да носят съответния възможно най-очевиден за човек смисъл.
Ще се учудиш колко по-бързо върви програмирането като почнеш с текст
(на всеки ред) да обясняваш защо правиш каквото правиш на тоя ред (не и
да обясняваш синтаксиса, очаква се който чете да го знае). И нищо, ако
английският ти не е много красив за коментарите и имената; важното е да е
разбираем.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 02, 2009 5:02 pm
Профил WWW
Мнение 
ами то хората са си направили колкулаторче за цикли..може и цикли може и секунди
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



Вто Юни 02, 2009 5:45 pm
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение 
maiden благодаря за посочения сайт. от сега нататък само него ще ползвам


Вто Юни 02, 2009 5:54 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Нед Яну 18, 2009 1:28 pm
Мнения: 110
Мнение МъЪЪка, МъЪЪка
такова решение - само пикоборец може да измисли !

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

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


Вто Юни 02, 2009 6:01 pm
Профил
Мнение 
Цитат:
предполагам че за прекъсвания, таймери ... не си чувал !


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


Вто Юни 02, 2009 6:10 pm
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Ное 25, 2008 4:44 pm
Мнения: 31
Мнение 
smtp написа:
предполагам че за прекъсвания, таймери ... не си чувал !


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

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


Вто Юни 02, 2009 6:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
мммммммм шах и мат ... не се сърди, ама ако съм ти един ръководител недай си боже изпитващ и ми дойдеш с такъв код ще те изгоня, това което си направил означава тотално непознаване на архитектурата. Разбирам че е динпломна работа, и че може би не си много в час, ама ако не знаеш питаш .. чакай да види Киров :D.
Относно горния коментар за пикобореца, това няма нищо общо с пика, и с арма мое се сътвори същото.
Значи тоя твоят пик си има хардуерни таймери. Праиш си една 32 битова променлива, инкрементваш я във всяко прекъсване и толкоз ......


Вто Юни 02, 2009 6:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
ToHu написа:
... и с арма мое се сътвори същото ...


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


Вто Юни 02, 2009 7:35 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Съб Дек 06, 2008 9:22 am
Мнения: 119
Местоположение: Пловдив
Мнение 
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


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


Вто Юни 02, 2009 9:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
То не трябва да работи, дипломна работа е... :P


Вто Юни 02, 2009 9:53 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни