| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Lookup Table Pic12f683 http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10348 |
Страница 1 от 1 |
| Автор: | basejn [ Пет Юли 27, 2012 4:36 pm ] |
| Заглавие: | Lookup Table Pic12f683 |
Здравейте ! Как да направя лукъп тейбъл със гореспоменатия пик който да има 256 стойности. Прерових интернета и ме заболя главата от четене и пак не разбрах Когато се опитвам да го направя когато поискам да взема стойността с по голям индекс и процесора забива . |
|
| Автор: | tolstolob [ Пет Юли 27, 2012 5:12 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Ползвай 2 таблици по 128. |
|
| Автор: | rumen65 [ Пет Юли 27, 2012 5:23 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
На какъв език пишеш, асемблер или С. Ако е на С, кой е точно компилатора, все пак това има значение. |
|
| Автор: | CarBeta [ Пет Юли 27, 2012 6:38 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Задаваш ли стойност на PCLATH преди да се ровиш в таблицата? |
|
| Автор: | Пушека [ Пон Юли 30, 2012 9:05 am ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Пробвай сленото: ... ... movfw Position call t8 movwf Number ... ... ... ORG 0X6FE t8: BSF PCLATH, 1 addwf PCL, f retlw d'0' ;0 retlw d'2' ;1 ... ... ... retlw d'255' ;253 retlw d'255' ;254 retlw d'255' ;255 ;--------------------------------------------------- end Идеята е да му дадеш начало на таблицата в поредната (последната) цяла секция х00..хFF, Мисля че от там идва омазването. |
|
| Автор: | CarBeta [ Пон Юли 30, 2012 3:23 pm ] | |||||||||||||||||||||||||||
| Заглавие: | Re: Lookup Table Pic12f683 | |||||||||||||||||||||||||||
Тц... така няма да стане. В твоя случай, когато брояча е на 0x6FF, какво ще стане ако му добавиш 0хE0 например? Ще отиде на 0х2DF, а там кой знае какво има... и отиде коня в реката! Това, което искаш да направиш, се прави с:
Но с големи таблици и това ще се омаже, когато за PCL започне да се получава резултат 9 бита. За да не става мазало трябва да се сметне целия адрес от таблицата(всичките 13 бита).
|
||||||||||||||||||||||||||||
| Автор: | Пушека [ Пон Юли 30, 2012 3:46 pm ] | |||||||||
| Заглавие: | Re: Lookup Table Pic12f683 | |||||||||
Тц... при мен работи |
||||||||||
| Автор: | CarBeta [ Пон Юли 30, 2012 8:22 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Въпросът не опира до адресното пространство, а до РСН, дето уж го пренебрегваш. 6FF + E0 = 7DF - това с калкулатора е така, но на практика няма как да накараш процесора да прескочи от 0х6FF -> 0х700 без да вкараш нужните битове по регистрите. PCLATH е само нули при стартиране. Променяйки PCL, без да закачаш PCLATH, гаранция отиваш в реката, освен ако таблицата не ти е някъде в началните адреси. Ако пратиш програмата на тоя адрес РС ще прескочи адресите нататък и ще си изпълни програмата, но ти му променяш РСL, а с това в PCH се записва каквото има записано в PCLATH. Т.е. променяш целия брояч, не само тая част дето ти се иска. Като сетваш втория бит на PCLATH му задаваш стойност 2, т.е. ще отидеш на адрес 0х2DF вместо на 0х7DF, където ти се иска всъщност и ще се чудиш защо програмата забива. То затова е и темата. Щото процесора прави каквото му кажеш, а не каквото ти си мислиш, че си му казал! Та с това сетване на втория бит няма как да работи при теб а и не само при теб. Ако сложиш таблицата на адрес 0x6FF и преди CALL t8 запишеш 0х7 в PCLATH ще заработи по тоя начин. |
|
| Автор: | Пушека [ Пон Юли 30, 2012 8:57 pm ] | ||
| Заглавие: | Re: Lookup Table Pic12f683 | ||
Преди време исках да си направя прост и евтин генератор на синусоида за проби на един мост и се сблъсках със същия проблем. Извиквам с "call t8", отивам на въпросния етикет, а там добавяйки отместване в младшия байт скачам на желания ред. Става, но до момента в, който добавката не промени старшата част(т.е. се получи пренос към старшите битове). Е вариантите бяха 2. Да смятам всеки път целия адрес или по-простия да не допускам пренос. За табличка с 256 числа номера става без пренос, ако първия елемент е в позиция 00 на произволна страница. Сега като се загледах не видях логична причина за реда: BSF PCLATH, 1 нямам спомен защо съм го писал, играейки го на симулатора не се променя така или иначе. Ей го кода, пробвай и ще видиш че става и на скопа излиза красива синусоида.
|
|||
| Автор: | CarBeta [ Пон Юли 30, 2012 9:22 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Е естествено, че ще работи така |
|
| Автор: | Пушека [ Пон Юли 30, 2012 9:37 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Да бе написах 6FE за да му пасне за последната страница, без да съобразя да сменя и другото. Ама нали човекът трябва да напрегне малко главата все пак. |
|
| Автор: | stoyanoff [ Вто Юли 31, 2012 11:09 am ] | |||||||||
| Заглавие: | Re: Lookup Table Pic12f683 | |||||||||
Ето какво направих на бързо с CCS complier.
Memory usage: ROM=14% RAM=5% - 5% Остава уговорката, че масивът е константа! Поздрави! |
||||||||||
| Автор: | basejn [ Вто Юли 31, 2012 11:17 am ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Благодаря ви за отговорите . С асемблер работя. Начинът който CarBeta описва ми изглежда работещ . Мерси все пак но аз се справих с проблема като използвах EEPROM - a .Заредих го с таблицата и прочитах стойността от там . Това което исках да направя и в крайна сметка го направих и работи е електронно запалване на мотор. Запалването взема сигнал от датчика на коляновия вал който е 36 градуса преди ГМТ, измерва с Тimer0 периода на въртенето или времето от един пулс на датчика до следващия и стойността на таймера я зарежда направо като индекс на таблицата . Тя връща съответната стойност и я подава като аргумент на функция Delay която забавя искрата.Доста проблеми срещнах за това просто на пръв поглед нещо Една седмица по цял ден се занимавах с него дори последните няколко дена реших да направя машинка с която да тествам дали всичко работи защото ако го пробвам направо на мотора и може да ми счупи крака ако предварението при палене е твърде голямо. |
|
| Автор: | stoyanoff [ Вто Юли 31, 2012 2:03 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
Ами не знам на каква честота работиш, но сигурен ли си, че успява да се справи контролера ти за 1 импулс време. EEPROM паметта е по-бавна от RAM и ROM. |
|
| Автор: | Cekins [ Вто Юли 31, 2012 2:21 pm ] |
| Заглавие: | Re: Lookup Table Pic12f683 |
При писане, stoyanoff |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|