Отговори на тема  [ 4 мнения ] 
Break състояние с хардуерен UART 18F2550 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Мар 12, 2007 10:48 pm
Мнения: 6
Мнение Break състояние с хардуерен UART 18F2550
Здравейте,
Трябва да направя линията на хардуерен UART в състояние на "Break" в произволен момент и за произволно време.
Използвам 18F2550 но не успявам. Опитах с изключване на предавателя но не се получава.
Може ли някой да ми помогне как да стане или ако може да ми помогнете с библиотека за софтуерен UART в която да си направя такава функция ако няма в нея.
Използвам CCS С компилатор.

Благодаря предварително


Нед Юни 20, 2010 5:24 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Ако не ме лъже паметта, имаше някакъв бит в някой от регистрите за целта. Ама няма да е лощо да погледнеш и ератите...


Пон Юни 21, 2010 5:04 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Чет Мар 19, 2009 8:33 pm
Мнения: 804
Мнение 
Аз използвам този начин и ми върши работа :
Код:
Output_high (PIN_C6);
   
  Delay_ms(70);   
     
   //  send 0000001  at 5 baud rate
   Output_low (PIN_C6);
   
   Delay_ms(1800);          //1800 ms
   Output_high (PIN_C6);
   Delay_ms(200);
   


Задаваш ниско ниво за определеното време и после го вдигаш пак високо .
Така предавам числото с ниска скорост.

Намерих и това :
Код:
#include <18F452.h>
#fuses XT,NOWDT,PUT,BROWNOUT,NOLVP
#use delay(clock=4000000)

#define BAUDRATE 9600
#define TX_PIN  PIN_C6
#define RX_PIN  PIN_C7

#use rs232(baud=BAUDRATE, xmit=TX_PIN, rcv=RX_PIN, ERRORS)

void send_break(int8 time_ms)
{
// Disable the UART and send a Break
// for the specified time.
setup_uart(FALSE);
output_low(TX_PIN);
delay_ms(time_ms);

// Re-enable the UART.
setup_uart(TRUE);
set_uart_speed(BAUDRATE);
}

//======================================
void main(void)
{
int8 i;

while(1)
  {
   // Send 10 bytes of 0x55 to show UART activity
   for(i=0; i<10; i++)
       putc(0x55);
   
   send_break(20);
  }

}


Пон Юни 21, 2010 8:00 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Мар 12, 2007 10:48 pm
Мнения: 6
Мнение re
зравейте,
Това вече го открих със спирането на UART и вече BReak.
Благодаря за отговора.

Поздрави


Вто Юни 22, 2010 10:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 4 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни