Перейти к содержанию
    

еще раз про скорость at90can128

народ нихрена понять не могу,стоит внешний кварц на 8мГц, настариваю сокрость как написано в даташите, на 250 кбот,

 

CANBT1= 0x02;

CANBT2 = 0x0C;

CANBT3=0x37;

В итоге посылка проходит, получаю ОК на отправку, ОК на приеме, только данных нету, везде 0 ли прописаны!

 

Ставлю скорость вот такую, где то нашел в сети:

CANBT1= 0x26; //

CANBT2 = 0x24; //

CANBT3=0x13

 

Все работает и данные идут, но от куда взялись эти парамтры понять не могу, почему из даташина не работают?

регистр CANTCON = 0x00; может кто поможет, разораться. :( спаисбо!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

блин сейчас вообще ни с какой скоростью данные не доходят :(. гуру ну подскажи плииз где копать? Попадаю на прерывание от моба, те и адрес и маске поравильно заданы, передатчик говорит TXOK, те удачное завершение передачи. А на приемнике в реситре CANCDMOB == 0х80. те младшие биты DLC равны 0. Хотя на передаче я выставляю из хначение 8. Может такое из за сокрости быть ? или ошибка в когде где то :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот разве это похоже на посылку из 8 ми байт? и 11 битный ID

желтый луч в линии а синий на ноге TX

post-47606-1362116582_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень походе что переджается только адрес, тк его меняю и меняется осуилограмма, а елси меняю данные в посылке ничего не меняется. Отключаю второй узел, который ОК выдает, на желтом лучше пропадает последний импульс.

 

пипец, взял другую железяку и все пошло :(, 3 дня потратил в пустую....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто сталкивался, если отправлять данные не через прерывание, а ждать ну типа :

while (CANGSTA & (1<<TXBSY));

Это может на долго повесить программу, или же быстро закинется посылка в буффер для отправки, и не важно что там с сетью скоростью и тд? Просто я менял скорость и смотрел по осциллографу сколько держится это флаг, что на быстрой что на медленной передаче примерно 1-2мс, в принципе это терпимо, но вот если эта пауза будет больше, то уже не хорошо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это может на долго повесить программу

Зависит от многих факторов.

Самый плохой вариант развития событий: вы заполнили все буфера на передачу, но физически передача не осуществляется (канал постоянно занят другими высокоприоритетными сообщениями). В этом случае можно висеть намного дольше.

При работе по флагам лучше использовать if () вместо while().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С if тоже хреново, нету же гарантии что передатчик сейчас свободен. А с while вообще не вариант, сейчас посомтрел прибором, елси обрыв в линии то вешается вся программа, достаточно 2-а раза отправить послку. Она просто второй раз не отправится, и будеи висеть в while и ждать.... По хорошему только прервания делать, или таймер еще вводить, типа while (CANGSTA & (1<<TXBSY) | timeOut );

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С if тоже хреново, нету же гарантии что передатчик сейчас свободен.

Ну и что, что в данный момент передатчик занят, при следующем опросе освободиться и можно пользовать.

Вопрос в частоте опроса флага (у меня обычно в фоновой задаче) и точности по времени отправки сообщений(обычно задержки в 1-2 мс не критичны). При этом время доставки все равно не гарантируется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...