|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 11:59 am
| Автор |
Съобщение |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
И една корекция в 18f8525.lkr
иначе не става
Между другото, това е описано подробно в един от пдф-ите на компилатора (не помна точно кой).
|
| Пет Фев 24, 2006 9:27 pm |
|
 |
|
setoy
Ранг: Почетен член
Регистриран на: Пет Фев 17, 2006 9:17 am Мнения: 765 Местоположение: Стара Загора
|
Пирев, благодаря ти, но това го пробвах и преди и не става, ето резултата:
 |  |  |  | Код: #include <16F88.h> #device *=16 #FUSES NOWDT, INTRC_IO, NOPUT, NOMCLR, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, FCMEN, NOIESO #use delay(clock=8000000,RESTART_WDT)
int8 a[120]; void main() { }
|  |  |  |  |
error 74 Not enouch RAM for all variables а ина4е тази опция си от зна4ение.  |  |  |  | Код: #include <16F88.h> #device *=16 #FUSES NOWDT, INTRC_IO, NOPUT, NOMCLR, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, FCMEN, NOIESO #use delay(clock=8000000,RESTART_WDT)
int8 a[80],a2[80],a1[96]; void main() { }
|  |  |  |  |
CCS PCM C Compiler, Version 3.235, 16465 28-Ôåâðóàðè-06 11:59
Filename: C:\Program Files\PICC1\test4e.LST
ROM used: 19 words (0%)
Largest free fragment is 2048
RAM used: 261 (71%) at main() level
261 (71%) worst case
Stack: 0 locations
Ако я премахна - отново няма памет. Ако без нея указа твърфи адреси на трите масива с #locate - памет има, но дава
RAM used: 165 (94%) at main() level 165 (94%) worst case Stack: 0 locations
....абе луда работа. Нямам време сега да разучавам приумиците на тъпия компилатор, така ще го с функция на ниско ниво, ама все пак е тъпо да не става 
|
| Вто Фев 28, 2006 1:12 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Верно, че не иска  С 18-ките CCS не се държи така, заделял съм голям масив за 18-ка и е работело. Явно CCS за 16-ките за един масив може да задели максимум една банка RAM. Освен тия 120 байта да ги разположиш ръчно в две банки, примерно първата половина от 0x20, втората от адрес 0xA0, за да можеш само с бит 7 да превключваш ту едната половина, ту другата половина. И да си направиш get/set функции, с които да имаш достъп до масива, няма да е много елегантно но ще стане. Пък и така ще го направиш с по-кратък код, отколкото би генерирало CCS.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Вто Фев 28, 2006 4:12 pm |
|
 |
|
backson
Ранг: Новодошъл
Регистриран на: Сря Дек 21, 2005 2:09 pm Мнения: 145
|
Gogo ти компилираш през CCS, а аз ползвам MPLAB C18. Сигурно има некав бъг. Тука и колегата си блъска и той главата накрая си направи 4 масива по 256. Просто C18 не иска да обедини няколко банки RAM pri deklaraciqta 
|
| Чет Мар 02, 2006 11:57 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
CCS даже го нямам инсталиран на компа. Това е за С18 на майкрочип и си работи. Гледай внимателно да не пропускаш нещо.
|
| Чет Мар 02, 2006 6:57 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|