Vitat's homepage
29 Mar 2024, 02:47 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: 21.03.08 Произведено обновление сайта/Site was updated
 
  Home   Forum   Help Search Login Register  

Pages: 1 2 [3] 4   Go Down
  Print  
Author Topic: Подскажите про связку эмулятор-комп  (Read 37146 times)
0 Members and 1 Guest are viewing this topic.
Except
Junior
**
Posts: 30


View Profile
« Reply #30 on: 27 Mar 2009, 08:50 »

Последний пост отбой! там пара контактов на максе подогнулась и такая хрень была. Щас все как раньше, при включении два нуля и все.

Quote
И это... у тебя магнитола позволяла переключаться в режим чейнджера?
ДА! С этим без проблемм!

Quote
И прошивка работает.
тоесть если магн в ченйджере сидит значит мега и прога работает 100%?

Quote
Ты на какие ноги разъема COM порта землю кинул?
по рисунку ниже, земля на 5ом..Там даже на вилке стоит цифра 5.    2ой и 3й идет на макс. Щас точно не скажу но на сколько помню 14й от макса на 2ой по рисунку и 13й на 3й.

Я ведь когда у меги замыкаю RXD и TXD по посылки с компа возвращаются в терминал, значит чепочка COM-порт <-> MAX
<-> ATMEGA работает. Проц получает данные и способен их отдавать в порт.. но поему не отдает.

Извиняюсь за всю эту тягомотину, не работает блин. Обидно, где-то косяк.

Я уже думал про плохой, либо сильно длинный (метр) шнурок в ком порт, но ведь при замыкании у меги RXD и TXD обмен идет.

Как быть? мне покупать новую мегу?


* 010.gif (15.7 KB, 468x396 - viewed 960 times.)
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #31 on: 27 Mar 2009, 08:53 »

по даташиту у макса все кондеры электролиты. у тебя нет. Это несущественно?
Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #32 on: 27 Mar 2009, 12:33 »

Да, магнитола переключается на чейнджер только тогда, когда она видит, что он присутствует. Значит обмен идет и идет правильный. Если на ходу отключить эмулятор, то не получив ответа, магнитола должна выйти из режима чейнджера.
Электролиты не нужны. Обычные 0,1мкФ кондеры.
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #33 on: 27 Mar 2009, 12:40 »

Quote
Если на ходу отключить эмулятор, то не получив ответа, магнитола должна выйти из режима чейнджера.
так и происходит. она выключается через пару-тройку секунд после этого
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #34 on: 27 Mar 2009, 12:42 »

значит чето UARTом либо в на линии связи макса и меги
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #35 on: 27 Mar 2009, 20:58 »

сижу копаюсь, включил UART_TX_ASYNC. При отключенном логе приходят по два нуля через равные промежутки времени (примерно 2-3с). При включенном логе приходит пачка данных и те два нуля, пачки приходят через аткие же промежутки времени. Из этого можно сделатьвывод что прога работает, но работает не так как надо, т.е. дело в проге мне кажется... в настройках.. может и в компе моем. Скин прилагаю


* Безымянный.JPG (166.54 KB, 876x633 - viewed 1000 times.)
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #36 on: 27 Mar 2009, 22:57 »

Vitat подскажи что думаешь, а если ничего в голову не приходит то подскажи, от чего зависит правильная работа UARTa? От скорости, от того что кварц не тот, ...

на что влияет UART_TX_ASYNC?
а тут:
#define UART_FLAGS (_BV(RXCIE) | _BV(RXEN) | _BV(TXEN))
?

какие настройки ком порта, в винАВРе терминале ничего настраивать не надо? системный виндовые настройки комп порта?
Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #37 on: 28 Mar 2009, 00:33 »

Асинхронный режим лучше не включать. У меня насколько помню подглюкивало с ним.
Что значит правильная работа? Главное задать правильный битрейт в зависимости от установленного кварца.
А про флаги, вместо вопроса мог бы почитать даташит на мегу.
rxcie - разрешает прерывание по приходу данных
rxen - включает вход
txen - включает выход

Попробуй штатной терминалкой в yapp. У меня там всегда работало. Никаких танцев с бубнами небыло. И никогда не пользовался ВинАВРоским терминалом.
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #38 on: 30 Apr 2009, 09:25 »

Аллилуя!
Спасибо огромное Vitat!
Все заработало, заменил мегу (заказывал+ждал целый месяц) и все закрутилось-завертелось!
Пришел долгожданные START, CD 01 01 и CD Error! Седня буду тестить с мафоном. На радостях напился.. голова болит.

Еще раз спасибо за помощь!
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #39 on: 03 May 2009, 11:44 »

Привет! Вобщем есть проблеммы.. вопросы.

1) Не получается передать в магнитоллу/эмулятор название трека/диска.
Сейчас делаю так: каждую секунду передаю данные последовательно:
- Cdt
- cms
- dname
- tname
- p

В итоге, номера диска/трека, минуты и секунды передаются нормально. Время тикает.
название диска передается, без ошибок. название трека не хочет проглатываться. На каждый символ приходит вопросик. пробовал с 5ой версией прошивки где формат: t xxxxxx..x 0 - не прокатывает не диск не трек.
с 4ой версией прошивки (txxxxx) не прокатывает только диск.

но самое интересное что даже при том, что название диска отсылается без вопросиков то после комманды 'p' это название не отображается. Время тикает, а кнопка DISP не выводит режимы отображения. Она и не пикает при нажатии... т.е. HU не схватывает название. Код, которым делаю:

Code:
procedure Send19(s:string);
const
  str_len = 19;
var
  b_str:array[0..str_len-1] of byte;
  i:integer;
begin
  if length(s)>str_len then s:=copy(s,1,str_len);
  for i:=0 to str_len-1 do b_str[i]:=0;
  for i:=1 to length(s) do b_str[i-1]:=ord(s[i]);
  ComPort1.Write(b_str[0],str_len);
end;

function SendToHU:boolean;
var
  s:string;
  b:array[0..2] of byte;
begin
  if not ComPort1.Connected then Log('com port closed');

  ComPort1.ClearBuffer(true,true);

  b[0]:=ord('C');
  b[1]:=HexToDec(CurrentMCD.Disk_Num);
  b[2]:=HexToDec(CurrentMCD.Track_Num);
  ComPort1.Write(b,3);
sleep(50);

  b[0]:=ord('c');
  b[1]:=HexToDec(CurrentMCD.Minutes);
  b[2]:=HexToDec(CurrentMCD.Seconds);
  ComPort1.Write(b,3);
sleep(50);

  Send19('d'+CurrentMCD.Disk);
sleep(50);
  Send19('t'+CurrentMCD.Track);
sleep(50);

  b[0]:=ord('p');
  ComPort1.Write(b,1);

  result:=true;
end;


2) Обмен тупит. При том что я каждую секунду шлю все обновленные данные, часто магнитолла не получает их, потом если прорвет обмен опять, то сразу HU резко получает все, что не получила и быстро из грузит. Если обменов примерно 10 она не получила подряд то аппарат выключается. Частично проблемму исправил sleep(50); после каждой посылки.

3) САМАЯ БОЛЬШАЯ ПРОБЛЕММА заключается в том, что аппарат неоперативно реагирует на нажатие кнопок. В режиме диска или радио при каждом нажатии на любую кнопку магн пикает. В случае с MCD она пикает через раз или два, в терминал приходят nB через раз, иногда просто n иногда просто B, а иногда нет вообще реакции на нажатие кнопок. Повысил скорость порта до 57 для эксперименту. Что еще можно сделать, чтобы каждое нажатие фиксировалось в терминалке?

Сейчас пользуюсь 4ой версией твоей прошивки. Длина провода от эмулятора до HU примерно см 40.
« Last Edit: 03 May 2009, 11:47 by Except » Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #40 on: 03 May 2009, 19:37 »

По пункту 1 разобрался с отсылкой. Все шлется, но все равно не отображается. DISP так и не работает в режиме MCD.
В остальном как обычно.. магн периодически отваливается(чаще всего это бывает при переходе в режим MCD, например из радио), и кнопки реагируют через раз. Подскажи что попробовать?

По ощущениям: КОМ порт работает на 5+. А вот обмен между HU и эмулятором еле-жив.
« Last Edit: 03 May 2009, 19:52 by Except » Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #41 on: 04 May 2009, 03:11 »

Первое что приходит в голову... провод на магнитолу должен быть дифференциальный, иначе говоря "витапара". Т.е. сигналы ip-bus + и - должны перекручиваться относительно друг-друга. У меня на оригинальном Пионеровском кабеле длиной 5 метров прекрасно работало.
Далее, перестань посылать название трэка и диска постоянно! Его надо послать всего один раз в начале трэка. Каждую секунду надо только время отсылать и все! И верни скорость на 9600 обратно.
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #42 on: 04 May 2009, 07:31 »

Про провод понял. Значит серия комманд такая, в начале:

1) Cdt
2) dname
3) tname
4) p

далее каждую секунду
- cms

так?
Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #43 on: 04 May 2009, 12:48 »

Cdt
cms (c00)
dname
tname
p
1сек
cms (c01)
1сек
cms (c02)
1сек
...
Logged
Except
Junior
**
Posts: 30


View Profile
« Reply #44 on: 06 May 2009, 13:19 »

Ну жесть! Вобщем ситуация прояснилась случайно! Я все время не загонялся  и посылал в качестве номера диска ноль(я просто номер диска использовать и не собирался, вот ноль и слал). Вот видимо у HU нулевого диска не бывает и он текст не писал. Сменил на 1й и все заработало отлично!

Взял витую пару от сетевого кабеля, связал ей эмулятор и HU. Эффекта никакого. Так же тупил. В итоге заменил 100-омные резисторы у 1го и 5го контакта, которые идут на IP-Bus на 10-омные, и О ЧУДО! заработало почти идеально, почти но не совсем, но думаю мне хватит. Если сильно быстро нажимать кнопки, то эмулятор некоторые нажатия теряет. Если с интервалом где-то пол секунды, то все ок.

Впринципе все устраивает. Как думаешь, в чем проблемма может быть с этими сопротивлениями, с 10-омами можно жить?

Второй вопрос, существует ли способ эмулятором узнать текущий режим магнитоллы (находится ли она в режиме MCD или не в нем)? Если я вдруг пропущу 'S' и 's' то не буду знать в каком режиме головное устройство
Logged
Pages: 1 2 [3] 4   Go Up
  Print  
 
Jump to:  

TinyPortal v1.0.5 beta 1© Bloc

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!