memory
Участник-
Постов
13 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйКонтакты
-
Сайт
Array
-
Режим отключение от шины
memory ответил memory тема в Controller Area Network (CAN)
Проблема в том что устрройство планируется использовать на разных машинах -
Режим отключение от шины
memory ответил memory тема в Controller Area Network (CAN)
Огромное спасибо тем кто откликнулся!!! Остался один вопрос - какой период таймаута??? Устройство будит использоваться в автомобиле, мне точно нужно знать подключено устройство CAN шине или нет. -
Режим отключение от шины
memory ответил memory тема в Controller Area Network (CAN)
Прочитал русcкую документацию, затем англоязычную, на сколько понял – контроллер входит “режим отключения от шины” при переполнении счетчика ошибок. В этом режиме контроллеру запрещено любое воздействие на шину (например посылать кадр пассивной ошибки). Вопрос в другом как контролировать подключения шины к контроллеру? Смотреть прием, при каждом удачном приёме увеличивать значение какой ни будь переменой. В цикле таймера проверять, увеличилось значение переменной или нет? С каким периодом вызывать таймер? Может есть у кого и другие варианты проверки подключения шины? -
Режим отключение от шины
memory опубликовал тема в Controller Area Network (CAN)
at90can128 пытаюсь отследить отключение от шины КАН, /* таймер период 10мс */ if(CANGSTA_BOFF) PORTD = 0x00;//LED else PORTD = 0x40;//LED откидываю провада от шины, бит BOFF - 0 что-то делаю нетак? -
Всем привет, проблема в следующем - м1 автомобильный контроллер и у него обьеденили UART передатчик с LIN передатчиком. Регистры тоже объединили не могу настроить UART. #include <iom16m1.h> #include <inavr.h> //------------------------------------------------------------------------------ //************************ Register LINCR ************************************** #define LSWRES 7 #define LIN13 6 #define LCONF1 5 #define LCONF0 4 #define LENA 3 //1 = Enable (both LIN and UART modes). #define LCMD2 2 #define LCMD1 1 #define LCMD0 0 //************************ Register LINSIR ************************************** #define LTXOK 1 #define LRXOK 0 void main(void) { DDRD=(1<<6);//LED PORTD=(1<<6);//LED LINCR=(1<<LENA)|(1<<LCMD2);//LCMD[2:0]=100, UART Rx & Tx Byte disable LINBRR = 38;//LDIV[11..0] = ( fclki/o / LBT[5..0] x BAUD ) - 1 while(1) { __disable_interrupt(); //CLI //ждем окончания передачи предыдущего байта while( ( LINSIR & ( 1 << LTXOK ) ) == 0 );//прога не выходит из цикла PORTD ^=(1<<6); //передача данных LINDAT = 170; __enable_interrupt(); } } /прога не выходит из цикла???? смотрел осцилографом на ноге ТХ может её подтенуть надо куда нибудь
-
Работает с другим портом
memory ответил BeginnerAVR тема в IAR
выложите ассемблер, вашего кода -
В принципе все работает , только без __flash компилятор не инициализирует значения массива а так всё нормально #pragma location=0x1000 __flash const unsigned char DATA[32][16]={//0x00 Ford_Fokus_2 0x00,0x00,0x04,0x20,0x08,0x59,0xEF,0x00,0x5E,0x42,0x10,0x03,0x32,0x00,0x96,0xFF, //0x01 Ford_Fokus_3 0x00,0x00,0x02,0x18,0x08,0x99,0x22,0x8F,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0xFF, //0x02 Ford_Mondeo
-
Спасибо всем откликнувшимся, директива __flash решила проблему на 99% , уже и массив в ОЗУ не располагается, и место на стек хватает. Как сделать так, чтобы массив располагался в конце кода программы, например его первый элемент должен находится в ячейке 500hex. Этот массив будут редактировать люди, не имеющие отношение к программированию, надо сделать так чтобы дамп программы а именно массив хорошо читался в блокноте.
-
Iar объявление динамического массива Привет всем участникам форума, проблема в следующем - есть глобальный массив unsigned char DATA[32][16], при компиляции выскакивает ошибка линковщика Error[e16]: Segment CSTACK (size: 0x100 align: 0) is too long for segment definition. At least 0xb more bytes needed. The problem occurred while processing the segment placement command "-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_SRAM_BASE-_..X_SRAM_END", where at the moment of placement the available memory ranges were "DATA:40b-4ff" Reserved ranges relevant to this placement: DATA:100-304 NEAR_I DATA:305-3ca NEAR_Z DATA:3cb-40a RSTACK DATA:40b-4ff CSTACK Насколько я понял этот массив передается через стек и не вмещается в нем, как объявить его динамически, то-есть привязать конкретной области памяти флеша.