|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 6:05 pm
|
Страница 1 от 1
|
[ 7 мнения ] |
|
| Автор |
Съобщение |
|
pencho
Ранг: Минаващ
Регистриран на: Съб Ное 01, 2014 1:31 pm Мнения: 1
|
 Проблем на начинаещия
Здравейте, от 2 дни се уча да програмирам контролери на MikroC , като ги симулирам на Proteus При желание да активирам PWM на 16f887 с код (от библиотеката на MikroC)
void main(){
trisc = portc = 0 ; ansel = anselh = 0 ; pwm1_init(1999) ; pwm1_set_duty(122); PWM1_start ;
}
При симулацията излизат на крачетата C -нулички и грешки : Program or EEPROM data has invalid adress [2000;2001;2002;2003] for this device
Пробвах на Real pic simulator и резултата е аналогичен. Моля за съвети. Поздрави!
|
| Съб Ное 01, 2014 1:49 pm |
|
 |
|
marcuka68
Ранг: Ориентиран
Регистриран на: Пет Авг 07, 2009 4:58 pm Мнения: 273
|
 Re: Проблем на начинаещия
Аз не симулирам на Протеус, но бих пробвал да започна от нещо минимално работещо. След като го видя, че работи добре, пиша още малко код, отново се уверявам, че работи ,както трябва, и продължавам така.
Следвайки горния подход, обикновено правя следните неща на нова платка: 1. Пускам светодиод да свети на някой крак на микроконтролера; 2. Пускам таймер и размигвам с него светодиода на определено време; 3. Пускам УАРТ; 4. Продължавам да пиша код и дебъгвам, като гледам стойности на променливи с УАРТ-а.
|
| Вто Ное 04, 2014 4:39 pm |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
 Re: Проблем на начинаещия
А пък още по - преди това, трябва да научи, че от мейн функцията не трябва да излиза. Добави си например в края на мейн функцията и продължавай с опитите. Естествено кода който пишеш, ще трябва да го слагаш преди безкрайния цикъл..
|
| Вто Ное 04, 2014 8:18 pm |
|
 |
|
pechkov
Ранг: Напреднал
Регистриран на: Пет Фев 14, 2014 4:45 pm Мнения: 439 Местоположение: Монтана
|
 Re: Проблем на начинаещия
Малко екзампълс няма да е във вреда: http://www.mikroe.com/chapters/view/17/chapter-4-examples/#c4v8Обаче аз лично нямам доверие на симулатори, когато се касае за програмен код в чипове. Съвета на marcuka68 е по-доброто решение. Ще ти трябва някаква скромна breadboard, малко жички, шепа резисторчета, кондензаторчета, светодиодчета и прочие, нормален програматор за PIC-ове и действай по метода one step at a time. 
_________________ Не карай по-бързо от своя ангел-пазител!
|
| Пет Ное 07, 2014 12:14 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Проблем на начинаещия
А какъв е проблема да се симулира програмен код - много по-лесно е от аналогова симулация...
|
| Пет Ное 07, 2014 10:25 am |
|
 |
|
pechkov
Ранг: Напреднал
Регистриран на: Пет Фев 14, 2014 4:45 pm Мнения: 439 Местоположение: Монтана
|
 Re: Проблем на начинаещия
То проблеми да искаш.  Ще разкажа един мой случай. Почнах едно мъъъъничко проектче. Много мъничко код, с много мъничък процесор PIC12F683. И по някое време при разширяване на възможностите на устройството ми потрябва и UART. А пък 12F683 няма хардуерен, не ми се пускаше библиотеката за софтуерен UART, понеже много товари като размер на програмата... Промених конфигурацията, смених типа на процесора на PIC12F1840, компилирах, записах в чипа, и... не тръгна. ... Изгубих два дни в чудене. Програмния код за функционалността на проекта до този момент беше написан, тестван, и работещ. По метода на изключването - почнах да премахвам избрани редове от кода, после ги връщах и премахвах други, докато гада не се показа в един на пръв поглед несъмнителен ред. Побитова операция за запис на данна в масив от байтове. Бях написал математическа операция за събиране в параметъра за указване на кой байт от масива да бъде записана данната. При 12F683 си работеше нормално, но за 12F1840 не. Развойната среда е MicroBasic 6.0. И досега не знам дали е заради някаква разлика в процесорите, или компилатора има бъг.
_________________ Не карай по-бързо от своя ангел-пазител!
|
| Пет Ное 07, 2014 12:48 pm |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
 Re: Проблем на начинаещия
И двете  И ядрата са различни и компилатора не е напревен като хората. Ако пишеш на бейсик, пробвай Proton-а. Да ти обясня ся къв е проблема : 683 паметта му е разпиляна. Като дефинираш масив, той започва от първото свободно място до края на конкретната банка и продължава от първото свободно място на следващата и т.н. С други думи един масив може да е на адреси от 0х030 до края на банката (0х06F примерно) и после от 0х0А0 на следваща банка до някъде си. Зависи как са му SFR регистрите - сега не ми се гледа точно. За да можеш да ги четеш и пишеш вярно, програмата някак си трябва да установи дадения индекс къде точно се намира - абе въобще гоуем секс. Обаче - 1840 (а и цялата серия 18хх и другите нови 14бит коре) имат една екстра всички рам регистри са достъпни ЛИНЕЙНО от физически адрес 0х2000 но САМО с използването на FSR0 и FSR1, като първия свободен рам регистър в банка 0 е на адрес 0х2000, втория на 0х2001 и т.н. и примерно в банката има 80 клетки, последната ще е на адрес 0х204F а първата рам клетка от банка 1 (която е на адрес 0x0A0 примерно) ще дойде на адрес 0х2050 в линейната памет. И т.н. със всички останали банки в които има GPR-и. Комбинирано с няколкото допълнителни инструкции специално за манипулация на FSRх регистрите, работата с големи масиви на тия въшлета става доста удобна. Протон-а ги знае тия работи и се възползва максимално от тях. Не знам микорбейсик-а дали ги знае. Трябва да компилираш и да видиш когато четеш/пишеш някой индекс как точно инициализира FSR регистрите - ако го зарежда с 0х2ххх значи е добре, ама ако задава нормалния адрес е нормално да се омаже програмата. Омазва се защото индекса ти реално сочи към SFR регистър (който е в началото на следващата банка) а не към GPR (който реално е някъде по средата на банката).
|
| Пет Ное 07, 2014 6:35 pm |
|
|
|
Страница 1 от 1
|
[ 7 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|