Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

PIC16F873 + CCS #org and/or #build
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=2905
Страница 1 от 1

Автор:  [ Съб Сеп 16, 2006 11:34 pm ]
Заглавие:  PIC16F873 + CCS #org and/or #build

Постановка на задачата:
имам код за PIC16F872, който се заключва и по време на работа процесора си записва разни неща в програмната памет. Същият код искам да го прехвърля на PIC16F873, но има малък проблем, че PIC16F873 когато се заключи не може програмно да се пише в заключената част. Програмата ми е по-малка от 2к и може да се прехвърли от адрес 0x0800 нагоре, а мястото където се пише в програмната памет, да се прехвърли на адрес по-малък от 0x0800. Над 0x0800 може да се заключи, под него да не се заключи.

Пробвах с директивите #org и #build на CCS, вересия 3.249, но нещо не става както трябва работата. Пиша #build(memory=0x0800:0x0FFF), а парчето програмна памет, където програмно ще пиша го задавам като #rom 0x0700, но компилатора упорито си слага част от програмния код от адрес 0x0400, след което застъпва моето парче код. Освен това RESET и INT векторите ми ги слага от адрес 0x0800 ( айде ще ги оправя с #build(reset=0x0000,interrupt=0x0004) ), но защо ще ме цака CCS вересия 3.249 с топла бира ? Дали щото е вересия или си е такава работата ?

П.П. С #build(reset=0x0000,interrupt=0x0004) нищо не става. Пак си ги заковава от адрес 0x0800 нагоре.

Автор:  Gogo [ Нед Сеп 17, 2006 12:03 am ]
Заглавие: 

CCS верЕсия 3.249 явно е много бъгава. При мене при компилирането, като срещне #org, показва някаква неопределена грешка и се започва едно безкраааайно компилиране...

Автор:  bateAz [ Нед Сеп 17, 2006 11:07 am ]
Заглавие: 

Не става ли да си дефинираш един голям безполезен масив от константи, който да ти запълни цялата Flash до $0800 ? Тогава и векторите ще са където трябва, и всичко? Аз ползвам CCS 1.183 ( или нещо такова ), то разполага константите най-отпред ( всъщност знаеш как са константите на 16F ). После си го забърсваш при първото стартиране на системата и готово!

Автор:  Nikola Kirov [ Нед Сеп 17, 2006 11:44 am ]
Заглавие: 

В IAR такива магии се правят през конфигурационния фаил на линкера. Оттам може да задаваш адресите.
Също оттам в желаното адресно пространство може да си декларираш user сегмент и да си го ползваш за целта.
Така че поразгледай документацията на линкера на CCS за подобни неща.

Автор:  Predator_MF [ Нед Сеп 17, 2006 2:14 pm ]
Заглавие: 

Код:
#ORG 0x0800,0x0FFF AUTO=0 DEFAULT
...your code here
#ORG DEFAULT


Горното при мен винаги се компилира само от 0x0800 нататък. Ако ползваш серийна връзка с #use RS232(...) го вкарай в този код, в противен случай компилатора си го поставя където му е удобно.

Автор:  [ Нед Сеп 17, 2006 2:33 pm ]
Заглавие: 

Predator_MF написа:
Код:
#ORG 0x0800,0x0FFF AUTO=0 DEFAULT
...your code here
#ORG DEFAULT


Горното при мен винаги се компилира само от 0x0800 нататък. Ако ползваш серийна връзка с #use RS232(...) го вкарай в този код, в противен случай компилатора си го поставя където му е удобно.

Нещо не ще така да се компилира, излиза празна MessageBox и компилира безкрайно.

Автор:  Predator_MF [ Нед Сеп 17, 2006 3:19 pm ]
Заглавие: 

Смени си версията на CCS, явно някакъв бъг с хапчето, при мен работи на 3.245 (и 3.236)

Автор:  [ Нед Сеп 17, 2006 11:38 pm ]
Заглавие: 

3.249 използвам. Гледам, че вече е излязла прословутата им 4-та версия, обаче за нула време има 10-тина подверсии, явно не са се отказали да имат бъгове. Някой има ли на лице 4-ката ?

Автор:  Gogo [ Пон Сеп 25, 2006 4:32 pm ]
Заглавие: 

В сайта на майкрочеп пише така:

"MPLAB v7.42 Interim Release
MPLAB IDE now includes a free copy of the CCS PCB C Compiler."

Ама не съм го пробвал...

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/