Отговори на тема  [ 15 мнения ] 
Конфигуриращи битове - проблем!?! 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение Конфигуриращи битове - проблем!?!
Здравейте,
Защо с 10mhz кварц не мога да пусна PIC18F на 40 mhz? (т.е. работи си все на 10)

Според документацията :
FOSC2:FOSC0: Oscillator Selection bits
111 = RC oscillator w/ OSC2 configured as RA6
110 = HS oscillator with PLL enabled/Clock frequency = (4 x FOSC)
101 = EC oscillator w/ OSC2 configured as RA6
100 = EC oscillator w/ OSC2 configured as divide-by-4 clock output
011 = RC oscillator
010 = HS oscillator
001 = XT oscillator
000 = LP oscillator

би трябвало с този ред в конфигуриращите битове по долу да стане
__CONFIG H'300001', B'110'

Когато включа таймер1 с външна честота за еталон (пр. 32.768 khz) и същевременно
засичам препълване на таймер0 (настроен по вътрешен такт) , таймер 1 показва едни и същи резултати с PLL и без PLL при 10 mhz.
Неможах да намеря отговора и затова се обръщам към Вас.

btw.. като четох документацията пробвах примерно да защитя кода чрез CONFIG5L - резултат пак нямаше.

Само от конфигуриращите битове ли зависи включването на PLL-a (и защита от четене) или има и още нещо, което пропускам ????

Ще бъда благодарен на смислени отговори :-) , а не от типа.......ЧЕТИ или айде сега пък тоя !!!!


Съб Окт 06, 2007 4:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Цитат:
Ще бъда благодарен на смислени отговори , а не от типа.......ЧЕТИ или айде сега пък тоя !!!!

Аз ще бъда благодарен ако започнеш да упоменаваш за кой точно процесор имаш в предвид!
Ето ти пример за 18F448 :
__CONFIG _CONFIG1H,_OSCS_ON_1H & _XT_OSC_1H
__CONFIG _CONFIG2L,_BOR_OFF_2L & _PWRT_OFF_2L
__CONFIG _CONFIG2H,_WDT_OFF_2H & _WDTPS_128_2H
__CONFIG _CONFIG4L,_STVR_OFF_4L
__CONFIG _CONFIG5L,_CP0_OFF_5L & _CP1_OFF_5L

Пример за 18F4550:
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN

На какъв език и за какъв чип и компилатор ти трябва конфигурацията?


Съб Окт 06, 2007 5:02 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение 
Благодаря Кичо !
Става въпрос за PIC18F452. Пиша на asm и използвам MPLAB.


Съб Окт 06, 2007 5:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Прочети този пост: http://mcu-bg.com/mcu_site/viewtopic.php?t=1107&start=0


Съб Окт 06, 2007 6:04 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение 
Благодаря на Ки40 и Gogo. В крайна сметка стана само по този начин:
CONFIG OSC = HSPLL
CONFIG OSCS = ON
CONFIG PWRT = ON
CONFIG BOR = OFF
CONFIG WDT = OFF
CONFIG WDTPS = 32
CONFIG CCP2MUX = OFF
CONFIG STVR = ON
CONFIG LVP = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = ON
CONFIG CP1 = ON
CONFIG CP2 = ON
CONFIG CP3 = ON
CONFIG CPB = ON
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTB = ON
CONFIG WRTC = ON
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF

По този начин въобще не се конфигурира пика: (дали нещо става при компилацията...незнам засега нямам нужният опит !?!?!

__CONFIG _CONFIG1H,_OSCS_ON_1H & _XT_OSC_1H
__CONFIG _CONFIG2L,_BOR_OFF_2L & _PWRT_OFF_2L
__CONFIG _CONFIG2H,_WDT_OFF_2H & _WDTPS_128_2H
__CONFIG _CONFIG4L,_STVR_OFF_4L
__CONFIG _CONFIG5L,_CP0_OFF_5L & _CP1_OFF_5L

При промяна на _XT_OSC_1H се конфигурира, но на 10 mhz.

Наистина всички препоръчват 'C' за 18FXX2, ама като съм учил 1 семестър само асемблер и това то. После 10-на години въобще
не съм се занимавал с нещо подобно и затова тръгнах на asm. Това което съм започнал ще го изкарам на asm, но следващото ...дълбоко се съмнявам (освен ако не е да паля светодиоди :-) ).

Искам да попитам по напредналите , а и не само. Една и съща задача за PIC, ако се напише на asm и после на 'C' еднакво място ли се заема от програмната памет ?!?!? И съответно това , което ме интересува: Тъй като ми трябва да измервам импулси по 5-6 us, и едва смогвам на asm (затова вдигам честотата, че процесора се бави) ако същото напиша на 'C' дали ще смогва пика ?!?!?


Съб Окт 06, 2007 8:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
__CONFIG" АААААА"_CONFIG1H,_OSCS_ON_1H & _XT_OSC_1H на мястото на " АААААА"_ трябва да има интервал,предполагам че си го написал слято и за това не тръгва.
Сложи си един външен кристал на 38 или 40 MHz и ползвай Capture на таймера и ще смогнеш да измерваш времеинтервала.Не че със вътрешната PLLняма да стане,ама аз си предпочитам външния кристал :)


Съб Окт 06, 2007 9:28 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Авг 25, 2006 11:31 pm
Мнения: 168
Местоположение: Русе
Мнение 
Не е проблема в интервала. СОРСА СЕ КОМПИЛИРА БЕЗ ГРЕШКА.
Ако не сложа интервал или каквото и да е друго MPLABa ще изреве за грешка и няма да получа хекс файла.
Примерно за защитата на пика ако напиша:
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
или __CONFIG _CONFIG5L, _CP0_ON_5L & _CP1_ON_5L & _CP2_ON_5L & _CP3_ON_5L

Все се чете. (уж защитен)
Или пък за PLL-a. Пак компилира се , записвам, пускам , но на 10mhz.
Иначе си прав за външният кристал ама като нямам в събота след обяд и неделя, та реших да пробвам с PLL-a, па като се запъна.......


Съб Окт 06, 2007 9:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение 
Цитат:
Една и съща задача за PIC, ако се напише на asm и после на 'C' еднакво място ли се заема от програмната памет ?!?!?


Това зависи както от програмиста, така и от С-компилатора, а и от самия алгоритъм. Но по принцип, писането на асемблер дава по компактен код, но това не е предимство като се отчете времето за написване на програмата и това, че контролера обикновено има достатъчно флаш. Най-големият гърч при асемблера (IMHO) е настройката на регистрите за съответната периферия. Не се чуди, а започвай С-то.

Цитат:
Тъй като ми трябва да измервам импулси по 5-6 us, и едва смогвам на asm (затова вдигам честотата, че процесора се бави) ако същото напиша на 'C' дали ще смогва пика ?!?!?


Въпросът ти е некоректен, защото не си уточнил каква разделителна способност и грешка те устройва.


Нед Окт 07, 2007 9:45 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Авг 30, 2007 2:14 pm
Мнения: 118
Мнение 
В никакъв случай не се отказвай от асемблера.
Има случай, когато трябва да гониш времена и цикли , едновременно да следиш
и да испълняваш задачи тогава C-то е напълно безполезно.


Съб Окт 13, 2007 5:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение 
Ако се окаже, че:
Цитат:
C-то е напълно безполезно
тогава най-напред се сменя програмиста :wink:
Ако времената са толкова критични се сменя контролера.


Съб Окт 13, 2007 5:58 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Авг 30, 2007 2:14 pm
Мнения: 118
Мнение 
тогава най-напред се сменя програмиста
Добре , например как на C мога да напиша следното:
(който и да е процесор на ATMEL с AVR studio)
SBRC PORTB , 0 //Skip if Bit in I/O Register is Cleared
goto six_ciklA
goto six_ciklB
six_cklA: nop //точно 6 цикъла
nop //или какъвто и да е код , но да се изпълнява за 6 цикъла
nop
nop
nop
goto cont_3
six_cklB: nop //точно 6 цикъла
nop
nop
nop
nop
goto cont_3

Давам този пример, като най-елементарна конструкция от този тип. Ако имаме още по едно разклонение на логиката
с точно сметнати цикли в тях, как може да се постигне това в C. Предполагам с много добро познаване на начина по койти
компилатора замества изразите от C с асемблерните думи , но това не е моя случай.А предполагам и на повечето начинаещи.
По принцип компенсирам незнанието си с повече труд.А и не вярвам някои да постигне повече без перфектно познаване на асемблер.


Нед Окт 14, 2007 8:50 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение 
Комбинаторе, не вземай шегата толкова навътре :wink:
Аз не отхвърлям асемблера, но пак казвам, че ако нещата са толкова критични откъм време, дори точния брой цикли няма да те спаси, защото реалния свят е друг. Например, времетраенето на цикъла в зависимост от температурата. Затова, ако пишейки на С имаш подобен проблем, не мисли, че с асемблер ще го оправиш. По-добре преосмисли нещата още веднъж и ако трябва използвай по-бърз процесор и съответна периферия.
.


Нед Окт 14, 2007 12:32 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Юни 29, 2007 10:59 pm
Мнения: 113
Мнение 
Моите наблюдения са, че като цяло, особено при по-сложни (?!) задачи С компилатора се представя много по-добре. Или по-скоро оптимизатора му. Не че всеки средно опитен програмист не би могъл да напише такъв код, особено ако следва правилата на оптимизатора, но този код става изключително труден за четене и промяна. Докато компилатора според оптимизацията добавяйки дори 1 допълнителна ключова дума в кода, може да промени изцяло цели блокове с цел оптимизация по място или бързина. А и въпроса не е С или асемблер. В повечето проекти не се налага употребата на асемблер. Но ако се наложи какъв е проблема да използваш. Или пък ако пишеш основно на асемблер можеш използваш С функции. Такъв е момента да кажем при разни математически изчисления в ПИК-а. Защо да се трепеш да пишеш килобайти на асм, като може да се напише с 1 ред на С и да го използваш като библиотечна функция. Само трябва да се съобразиш с конюнктурата на компилатора.


Нед Окт 14, 2007 1:05 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
//офтопик
//само за да сме коректни....


SBRC не е SBIC , но така или иначе -
и двете се изпълняват за 1 или 2 цикъла!!
т.е. не е еднакво времето трябва още 1 NOP

//


Нед Окт 14, 2007 3:37 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
Комбинатор написа:
SBRC PORTB , 0 //Skip if Bit in I/O Register is Cleared
goto six_ciklA
goto six_ciklB
six_cklA: nop //точно 6 цикъла
nop //или какъвто и да е код , но да се изпълнява за 6 цикъла
nop
nop
nop
goto cont_3
six_cklB: nop //точно 6 цикъла
nop
nop
nop
nop
goto cont_3

И ти наричаш това... програмиране??? :)


Нед Окт 14, 2007 7:01 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 15 мнения ] 

Кой е на линия

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


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

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