Автор Тема: Проблем с PIC18F6620  (Прочетена 49980 пъти)

CarBeta5

  • Вече знае какво е робот!
  • *****
  • Публикации: 81
    • Профил
Проблем с PIC18F6620
« Отговор #30 -: Май 03, 2010, 07:30:45 pm »
BRA - безусловен преход. В 16F877, където инструкциите са само 35, тая инструкция не е валидна. За 16F877 подобна инструкция е GOTO

Не са ти невидими постовете, колега, но са извън темата.

Vexorian

  • Заклет Роботостроител
  • *****
  • Публикации: 305
    • Профил
Проблем с PIC18F6620
« Отговор #31 -: Май 03, 2010, 11:37:33 pm »
BRAnch е безусловен преход като GOTO, с тази разлика, че отнема само една дума за изпълнение, и следователно позволява преход само към адреси в интервала [-1024 : +1024] от текущия. Подобни инструкции са:

BZ, BNZ, BC, BNC, BN, BNN, etc.. Който и 18f дейташийт да погледнеш, все ще намериш инструкцийте в края описани подробно. Някои контролери имат допълнителни инструкции в "продължен режим" "Extended instruction set".
Викторио Семир Ел Хаким, София 20г.
Аналогова/Цифрова електроника, програмиране
I\'m watching your ass! :D

IbT

  • Зомбиран Роботостроител
  • *****
  • Публикации: 156
    • Профил
Проблем с PIC18F6620
« Отговор #32 -: Май 04, 2010, 10:42:15 am »
Вече работя с другия ПИК - 182580. Но тези дни като ми остане време все пак ще пробвам пак и другия с тези препоръки. Платката си е моя и не е нищо особено, както писах - едно захранване и ПИК-а. Всички захранвания са включени. Ще пиша до няколко дена да кажа какво е станало.

IbT

  • Зомбиран Роботостроител
  • *****
  • Публикации: 156
    • Профил
Проблем с PIC18F6620
« Отговор #33 -: Май 13, 2010, 04:23:12 pm »
Колеги, с две думи тоя PIC няма да ми свърши работа се оказва. Част от целта на проекта е да се направи поне 32bit таймер (а може и 64bit), който да отмерва с възможно най-малко закъснение. Имам предвид, че ако го направя софтуерно с препълване на единия таймер да пуска импулс към другия (2х16b) се получава известно закъснение, което е недопостимо. Единият вариант е да го направя с Compare модула. Мислех си обаче дали няма да е най-добре да ползвам PIC, който има 32bit таймер. Прегледах сайта на Microchip с всички PIC18 и PIC24, но не намерих такъв. Някой срещал ли е подобен контролер? Знам, че dsPIC-овете имат, но за целта на проекта не е оправдано да ползвам такъв (поне на този етап). Моля, ако някой е по-навътре с PIC-овете и се е занимавал професионла да ми пише на ЛС, ако има време да ми обърне внимание, за да му обясня за какво става въпрос и да даде някой съвет евентуално.

bateAz

  • Зомбиран Роботостроител
  • *****
  • Публикации: 187
    • Профил
Проблем с PIC18F6620
« Отговор #34 -: Май 13, 2010, 08:44:23 pm »
Младежо, 32 битов таймер се прави даже и с 8 битов. Е, софтуерно се добавя брояч, с който се увеличава периодът. А това за "закъснението", е много интересна работа. Ако е направено както трябва, всичко си става кварцово точно.
Не може да не може

Венцислав Караджов, 61 год.

IbT

  • Зомбиран Роботостроител
  • *****
  • Публикации: 156
    • Профил
Проблем с PIC18F6620
« Отговор #35 -: Май 13, 2010, 10:02:03 pm »
Не исках да пиша в темата, за да не я спамя допълнително, но явно е по-добре да го направя. Забавянето ми бърка доста работите, защото ще се отчита датата и времето на постъпване на импулси и с точност до 100ns (ако се постигне по-ниска - още по-добре). При положение, че работя на 40MHz това означава един такт - 100ns. Оттам нататък всяка софтуерна намеса ми внася допълнителна грешка, която е сериозна. Поразрових се малко и като че ли засега се спрях на PIC24 серията. Там таймери 2 и 3 могат да работят като един 32 битов, освен това се работи на 20 или 30 MIPS-a, което мисля че ще даде задоволителен резултат. Опитах се да почета малко повече за тази серия, но Microchip явно имат проблем със сайта и ми изкарва Error, така че някой може ли да ми каже има ли голяма разлика с 8 битовете PIC-ове? То разлика е ясно, че има, но дали има нещо по-съществено, което трябва да имам предвид. Програмата ще я направя на Microchip C30 (нещо CCS май не ми допада особено).

bateAz

  • Зомбиран Роботостроител
  • *****
  • Публикации: 187
    • Профил
Проблем с PIC18F6620
« Отговор #36 -: Май 13, 2010, 10:21:05 pm »
Не знам какво космическо приложение спряташ, но както и да е.
100ns са на границата на това, което можеш да постигнеш с PIC18Fxxxx.
За решаването на тази задача се прави следното:
1. Пуска се един таймер да брой на 10 MHz ( то толкова си може ) с автоматично презапускане.
2. При препълване на таймера получаваш прекъсване. Броейки прекъсванията, знаеш колко време от по 65536 * 100ns е минало от началото на броенето на системата ти до началото на броенето на 16-битовоя таймер.
3. Импулсите, които искаш да следиш, се подават на входа за Capture на таймера. При фронт на тествания сигнал се получава прекъсване ( друго ), а в един регистър се записва стойността на брояча в момента на пристигане на фронта.
64-битов таймер не ти трябва. При 10 Mhz на входа до 21 дек 2012 няма да можеш и 48-битов да си запълниш ( 16 хардуерни + 32 софтуерни бита ).
Има и няколко "византийски момента", но ще ти ги оставя ти да се справиш с тях.
 Не ми е ясно каква "софтуерна грешка" ще натрупаш?
Не може да не може

Венцислав Караджов, 61 год.

IbT

  • Зомбиран Роботостроител
  • *****
  • Публикации: 156
    • Профил
Проблем с PIC18F6620
« Отговор #37 -: Май 14, 2010, 09:04:52 am »
Ами грешката ще е от софтуерната обработка на прекъсванията. По-горе незнам защо 64bit съм писал - имал съм предвид 48 :)

ПП. Грешка ще ми възникне и в самия брояч - закъснението от първия до последния тригер. И още други грешки и за това трябва да ги сваля до минимум. А тази технология наистина, че може да се нарече космическата, защото служи за улавяне и регистриране на космически частици :)

CarBeta5

  • Вече знае какво е робот!
  • *****
  • Публикации: 81
    • Профил
Проблем с PIC18F6620
« Отговор #38 -: Май 14, 2010, 01:36:09 pm »
Доколкото разбирам искаш на всеки 100ns да се проверява за импулс, но нямаш време за реакция ако постъпи такъв импулс. Според мен, ако правилно съм разбрал, ти трябва или двуядрен процесор или да се примириш, че докато се записват данните, каквито и да са, може да пропуснеш някой и друг импулс.

Vlado

  • Вече знае какво е робот!
  • *****
  • Публикации: 76
    • Профил
Проблем с PIC18F6620
« Отговор #39 -: Май 14, 2010, 03:20:31 pm »
А защо не ползвате хардуерен брояч реализиран със ТТЛ http://www.kpsec.freeuk.com/components/74series.htm#74163 синхронни двоични броячи(серия ALS) по-бързо от това няма http://scitec.uwichill.edu.bb/cmp/online/P10F/counters1.htm
процесора само да чете брояча и софтуерно може да обработва препълването му.

ето и откъде може да се намерят стандартни TTL синхронни броячи серия LS http://mario.bg/shop/default.php?cPath=2_20

Цитат на: "IbT"
Колеги, надявам се някой да може да помогне. Не мога да подкарам генератора на този PIC. С 20MHz кристал е, кондензаторите са 22р, но пробвах и с 15р. Като тип съм го задал HS. Ползвам CCS, пробвах и в MPLAB-a на асемблер, но не ще да тръгне и това е. Захранването ми е малко импровизирано, но е само за пробата. Състои се от един диод само изправителен, 7805 и два електролитни кондензатора (един на входа и един на изхода) по 1000uF. Възможно ли да е толкова капризен към него или е някакъв друг проблема?

На един PIC-микроконтролер, генератора му не се пускаше, а беше шунтиран с два керамични кондензатора, както е по описание. Случайно се оказа, че ако единия кондензатор се откачи генерациите се появяват - Така, че пробвайте само с един кондензатор 15пФ.
инж.Владислав Димов 33г.

kotaraka

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 114
    • Профил
Проблем с PIC18F6620
« Отговор #40 -: Май 14, 2010, 05:53:24 pm »
Това с брояча ми харесва като идея.
Може да го пробвам при някой мой проект.
Радостин Киров   26г.     Бургас

http://vbox7.com/play:c8b99132
http://vbox7.com/play:c627c6b9

emil74

  • Зомбиран Роботостроител
  • *****
  • Публикации: 227
    • Профил
    • http://www.maystorio.com
Проблем с PIC18F6620
« Отговор #41 -: Май 14, 2010, 06:42:26 pm »
Вържи някъде един светодиод и кажи къде. Ще ти пратя един hex и така ще разбереш дали ти работи контролерът.
Ама пак ще се заям за захранването. Ти на входа ли бодна 47uF? На входа 470uF, на изхода - 10uF. И тогава кажи къде ти е диодът, че да направим мигалка.
После ще получиш и асемберския файл, откъдето да си свалиш конфигурацията и ще имаш база за начало.

IbT

  • Зомбиран Роботостроител
  • *****
  • Публикации: 156
    • Профил
Проблем с PIC18F6620
« Отговор #42 -: Май 14, 2010, 07:55:27 pm »
Колеги, не се мъчете повече с тоя PIC и аз го захвърлих и сега съм взел PIC24 и ще пробвам с него. Там си пускам двата таймера като един 32bit и мисля, че ще е достатъчно бързо.

bateAz

  • Зомбиран Роботостроител
  • *****
  • Публикации: 187
    • Профил
Проблем с PIC18F6620
« Отговор #43 -: Май 14, 2010, 09:47:04 pm »
Цитат на: "Vlado"
А защо не ползвате хардуерен брояч реализиран със ТТЛ ....


Ужас! Това същото ( дори доста по-развито ) го има в почти всеки микроконтролер. Не виждам защо трябва да се ползва външно. Не е ли доста по-елегантно да се прочете дейташитът и да се направи както трябва.
Не може да не може

Венцислав Караджов, 61 год.

Vlado

  • Вече знае какво е робот!
  • *****
  • Публикации: 76
    • Профил
Проблем с PIC18F6620
« Отговор #44 -: Май 14, 2010, 10:56:17 pm »
bateAz напълно съм съгласен съм с вас.

А ако става въпрос за много бързо от порядъка на наносекунди и съвременно решение, ще трябва да се използват програмируеми логики FPGA.

Доколкото са ми обяснявали за космическите лъчи(космическата радиация)/радиационен фон/. Процеса е случаен и няма как да се предвиди кога ще се получи импулс(частица). И самия детектор след отчитане на импулс има временна нечуствителност за нови импулси. Затова се слагат два и повече детектора, а изходите им се сумират със лог. схема "ИЛИ" и се подават на брояча.
 Интересно от физична гледна точка е да се следи едновременното настъпване на лавинно събитие(лог. схема "И"). Когато два или повече детектора разположени на по-голямо разстояние един от друг се активират в един и същ момент от време. Това се случва при падане на високо заредени частици, които се разпадат в атмосферата и създават вълна от частици, който едновременно активират детекторите в дадена зона.
инж.Владислав Димов 33г.