Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пересылать байтики из контроллера по Com порту 
:(
    Опции темы
Regbist
Дата 12.7.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.5.2005

Репутация: нет
Всего: нет



Здраствуйте, Народ!

вот тут меня одна проблема мучает уже 4 сутки.
мне для начала надо , чтобы из контроллера (у меня DS80C400 от dallas) "выпихивались" байтики, ну короче чтобы посылать что-то от контроллера к компу по com порту.
посылка оочень простая, без всяких прерываний, готовностей т.д, просто , чтобы "Лупились" байтики из контроллера по com порту, а я на компе их буду просто принимать и видеть, пришли они или нет.
Пишу в среде keil сначала на ассемблере для 51-0го, всё работает, байтки каждую секунду "Выпихиваются". вот код:
Код


$TITLE (Com port_0 используется p3)
$include (reg400.h)

;определение сегментов
myseg segment code
rseg myseg 
;ban equ 20h
;sms2 equ 1ah
;sms1 equ 11111111b
sms2 equ 01111111b
;0delay equ 4fh
;инициализация com порта (Serial port 0)
InitSerial:   ORL      PCON, #80H
              MOV      SCON0,#050H                  
              ORL      TMOD, #021H    
              mov      th1, #0FAh          ; 36.864 MHz, 38400 baud, divisor=4
              ORL      CKCON,#010H
              MOV      TCON,#050H              
             ; ORL      SCON0,#02H     прерывание передатчика

;запихиваем в порт байтик  
mov r0,#37h
mov 37h,#sms2

send: mov sbuf0,@r0

;zadergka 2
 delay1: mov R3,#11111111b
 ciklex1: mov r4,#9fH
 ciklin1: djnz r4,ciklin1
 
         djnz R3,ciklex1
;zadergka 3
 delay2: mov R5,#11111111b
 ciklex2: mov r6,#9fH
 ciklin2: djnz r6,ciklin2

          djnz R5,ciklex2
jmp send
end



но вот потом пищу на Си кейловском, и у меня ничего не передаётся..
вот текст:
Код


#include <reg400.h>
#include <stdio.h>



void init_com0 (void)
{
  PCON  |= 0x80;  
  SCON0  = 0x50;                
  TMOD  |= 0x21;  
  TH1 =0xFA;
  CKCON |= 0x10;
  TCON   = 0x50;             
  TI     = 1;  
}
void main (void)
 {
unsigned int i;
unsigned int j;

init_com0 ();

do{
SBUF0=0x56;      // возможно так нельзя, я не знаю, но 
                      //дизассемблер  выдаёт на это mov sbuf0,#56h 

for (i=0;i<65534;i++)
{};
for (j=0;j<3275;j++)
{};

}while(1);}



так я вот не пойму, почему на СИ прога не работате, может кто знает? или подскажет как сделать такую простенькую прогу?
а может я вообще не так пишу ?

PM MAIL   Вверх
PILOT
Дата 12.7.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: 20
Всего: 54



А в отладочном окне Serial что-то идет?
По шагам отлаживал? что в окне Периферия->UART?

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Regbist
Дата 12.7.2005, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 3.5.2005

Репутация: нет
Всего: нет



в отладчике идёт и на СИ и на Ассемблере, но на когда заливаю hex файл из сишного кода в контроллер , то ничиге не передаётся, а когда hex файл ассемблерного кода, то всё отлично smile))
сам не опйму smile) отладчиком в окошке сериал всё отлично работает, всё показывает smile) я ваще не понимаю в чём дело ?
а вообще так можно в си писать

Код

SBUF0=0x56; // типа просто присвоить значение, или может надо загружать адрес  
                      // ячейки,               где          лежит  0x56

может так нельзя ? я просто не знаю smile
PM MAIL   Вверх
cardinal
Дата 13.7.2005, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Скорости передачи соответсвуют на обоих сторонах?
И еще кстати:
Код

MOV      SCON0,#050H

не равно
Код

SCON0  = 0x50;

как мне кажется (особенно если SCON0 не 8 битный. А вообще посмотри что делает компилятор из твоего сишного кода (листинг).

А если у тебя есть VB6, то можешь в FAQ'e терминал взять, который я для себя делал, чтобы понять что происходит в порте...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Metal_Heart
Дата 13.7.2005, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 1
Всего: 12



Цитата(cardinal @ 13.7.2005, 00:18)
А если у тебя есть VB6, то можешь в FAQ'e терминал взять, который я для себя делал, чтобы понять что происходит в порте...


для мониторинга портов просто предложу попробовать прогу "Portmon"
адрес: www.sysinternals.com

эта прога мониторит (не занимает) порты как COM так и LPT, даже удаленно..
мне лично - нравится



--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Guest
Дата 13.7.2005, 11:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2 cardinal.
Порты настроены на одинаковую скорость, проверял.
а вот насчёт
Код

PCON  |= 0x80;  
  SCON0  = 0x50;  // Так можно , в примерах так написано, поэтому так и пищу            
  TMOD  |= 0x21;  
  TH1 =0xFA;
  CKCON |= 0x10;
  TCON   = 0x50;             
  TI     = 1;  



а вот в бувер так можно писать?
Код

SBUF0=0x56 //  чё то я уже сам сомневаюсь.....:(


а как вообще начинается передача любого символа из микроконтроллера по COM порту на языке СИ?
  Вверх
cardinal
Дата 13.7.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Аааа... Вот в чем ты напахал. Вот тебе мой putchar smile
Код

void putchar(char cData)
{
   if (cData == 0x0a) // это необязательно
   {
      while(!TI);
      TI = 0;
      SBUF = 0x0d;
   }

   while(!TI); // то есть пока TI = 0 он занят, а ты ждешь...
   TI = 0; // опять обнуляешь
   SBUF = cData; // посылаешь
}



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.