реклама на сайте
подробности

 
 
> Почему не работает код?
DMD
сообщение May 16 2008, 17:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



Не могу понять - почему не работает код, когда тут вроде бы висеть нечему! Компилятор - CodeVision, славится своей тупизной в общении с типами данных. Контроллер - ATMega8535.
Почему-то вот такой код не работает:
Код
//....
typedef unsigned char byte;
typedef unsigned long int dword;

dword SID = 0L;

typedef struct
{
    byte extended_identifier;
    dword identifier;      //32 bit
    // data length:
    byte  dlc;
    byte  dta[8];
    // Acceptence Filter that enabled the reception
    byte  filhit;
    byte rtr;
} CanMessage;

...
//теперь необходимо сдвинуть идентификатор на 5 бит влево...
SID = (dword)(((dword)(msg.identifier)) << 5);      

//Вот тут и висим, непонятно почему...
//так как следующий оператор ничего в порт не выводит:

printf("Packet observed: SID=0x%04lX; data: ", SID);
for (i=0; i<=7; i++) printf("[0x%02X] ", msg.dta[i]);
printf("\n");      
LED_WORK = 0;
//...

Вот почему висим там? Чему там висеть-то??
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DMD
сообщение May 16 2008, 22:46
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



"нидецкие" printf - это чисто для отладки. Нормальный компилятор давно ищу и не могу найти, не подскажете?
SID = msg.identifier << 5; - так не пробовал, но боюсь, что на какой-нибудь косяк компилятора нарвусь... "Косяк" - потому что кто-то посчитал, что преобразование к int перед, к примеру, сдвигом - операция ненужная в целях экономии чертовой памяти... Поэтому вот такой код не работает (хоть и компилится на все 100%):

unsigned char t = 255;
unsigned f = t << 3;

И такая штука твориться только в CodeVision, я на ней неделю просидел - все не мог вдуплить чего там твориться... Пришлось копаться в ассемблере. ..


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
defunct
сообщение May 16 2008, 23:22
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(DMD @ May 17 2008, 01:46) *
"нидецкие" printf - это чисто для отладки.

Да понятно что для отладки, но память то они все равно жрут ;>

Цитата
Нормальный компилятор давно ищу и не могу найти, не подскажете?

Компиляторы (нормальные) -

Бесплатный WinAVR (avrgcc) встраивается в AVR-Studio (только самый последний релиз не советую брать он еще сырой, стабильная версия "на сейчас" 20071221).

Небесплатный IAR-Systems с IDE IAR-EWAVR, the best for AVR.

С ними хоть можно не так сильно бояться насчет
Цитата
что на какой-нибудь косяк компилятора нарвусь...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DMD   Почему не работает код?   May 16 2008, 17:48
- - Qwertty   Цитата(DMD @ May 16 2008, 21:48) Вот поче...   May 16 2008, 18:26
- - DMD   Нее, тут все ОК, я тоже думал. Стоит long,width оп...   May 16 2008, 18:43
- - plombir   Кодtypedef unsigned long int dword; вот это я не п...   May 16 2008, 18:56
- - DMD   32 бита   May 16 2008, 19:45
|- - defunct   Цитата(DMD @ May 16 2008, 22:45) 32 бита ...   May 16 2008, 19:53
|- - Nick_Shl   Цитата(DMD @ May 17 2008, 01:46) unsigned...   May 17 2008, 04:42
|- - Сергей Борщ   Цитата(DMD @ May 17 2008, 01:46) так не п...   May 17 2008, 10:08
|- - Nick_Shl   Цитата(Сергей Борщ @ May 17 2008, 13:08) ...   May 17 2008, 14:30
- - WHALE   да,все правильно,только имхо галочку они неправиль...   May 17 2008, 07:12
- - WHALE   Насколько я знаю,многие компиляторы допускают возм...   May 17 2008, 10:18
- - WHALE   Цитата(Nick_Shl @ May 17 2008, 18:30) Я с...   May 17 2008, 16:16
|- - Nick_Shl   Цитата(WHALE @ May 17 2008, 19:16) а си п...   May 17 2008, 16:37
- - WHALE   а я по книжкам.Кстати-у нас с вами одна библия. о...   May 17 2008, 17:02
- - DMD   Спасибо, ребята, за помощь. В понедельник на обору...   May 17 2008, 19:37
- - DMD   Ребят, а последней версии CodeVision у вас нет с л...   May 18 2008, 07:28
|- - Nick_Shl   Цитата(DMD @ May 18 2008, 10:28) Ребят, а...   May 18 2008, 07:58
- - WHALE   Цитата(DMD @ May 18 2008, 11:28) Ребят, а...   May 18 2008, 07:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016