Отговори на тема  [ 6 мнения ] 
Проблем с извикване на функция 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение Проблем с извикване на функция
Функцията е следната -
Код:
void write_string(int address, char string[]) {
  int i = 0;
      while(string[i]!='\0') {   
      write_eeprom(address++,string[i]);   
      i++;
      }
      write_eeprom(address++,0); 
}   

, процесора 877а, компилатора CCS.
Трябва да работи а не иска. Когато я извикам записва на първия адрес 4А и хвърля процесора в киреча - рестартира се постоянно. Пробвах друго - на мястото на извикването и поставих кода от функцията - тогава всичко е на 6+ . Защо се получава така?


Сря Дек 26, 2007 9:35 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
сигурен ли си че стринга ти има 0 накрая? ако да, пробвай все пак да подмениш това char string[] със char *string, нямам им вяра на тия [].


Сря Дек 26, 2007 11:42 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ако стринга който подаваш на функцията си е нормално терминиран с 0 по скоро CCS-a обозява нещо.
Толкоз години вече този компилатор не мръдна от ниво ТНТМ история :)
Евентуално може и стек да ти се препълва. Що не дебъгнеш да видиш какво става точно.


Сря Дек 26, 2007 1:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Ами стринга си е терминиран с 0 накрая, преди това викам функция която го изравнява от дясно, пробвах и char string[] да го заменя с *string - същата боза. По закона на Мърфи ICD2-то ми казва че неможело да стартира таргета, Протеуса незнайно защо не дава да се сложат на този проект breakpoins на главния файл.
Между другото, пробвах да извикам същата тази функция в друг проект пак на CCS, работи си ОК, явно дали от ТНТМ-то или поради неплащане на продукта?


Сря Дек 26, 2007 2:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Всичко свързано с PIC е общи линии е ниво ТНТМ. Да не те учудва. А CCS-a се лекува безболезнено,ням да е от лечението.


Сря Дек 26, 2007 2:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
гледай асемблерския код, там ще се види какво става.
по принцип който си мисли че може да пише за микроконтролер и да седи встрани от асемблера се лъже.
да се пише на асемблер е глупаво, но за нуждите на дебъгването асемблера е неминуем, и то не само за микроконтролери. дори джаварските и .НЕТ среди показват псевдокода, хем по замисъл трябва да се ползват от кретени.


Сря Дек 26, 2007 3:24 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

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


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

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