roboforum.ru

Технический форум по робототехнике.

AVR --> rs232 --> COM порт ПК

Re: AVR --> rs232 --> COM порт ПК

EdGull » 24 фев 2009, 23:39

да, тупо соеденяешь.
не боись, ничего не сгорит.
ну тока если статикой пробьешь...

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 25 фев 2009, 00:02

черт, одна оптопара сдохла. :( проверил тестером как диоды ножки 1 и 2, а я программировать еще пытался :crazy: ха-ха

Re: AVR --> rs232 --> COM порт ПК

realsystem » 25 фев 2009, 15:45

Во-первых делай как я :beer:

Сначала свою программу отладь в протеусе, там нарисуй свою схему, МК, загрузи в него прошиву и погоняй виртуально. Когда будет там работать, прошивай реальное железо. Но перед подключением железа к компу прозвони все цепи, подключил БЕЗ МК и померяй напряжения, почитай про ком порт чо там должно где быть

Я по такому методу с первого раза соединил МК с компом (до этого ниразу не делал, тока лампочками мигал от МК :))

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 03 мар 2009, 22:50

Класс, девайс заработал :Bravo: отправляю данные с МК - комп принимает (COM Port Toolkit 3.9)... а как в CVAVR обработать данные с компа? допустим чтоб при отпралении числа AF в МК появилось высокое напряжение на ножке 1 порта А ?
прерыване на "USART RXC Прием по USART завершен" навесить надо чтоли? если да то вот функция:
Код: Выделить всёРазвернуть
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
}


где тут писать код, что сравнивать с AF? заранее спс за разьяснения
Последний раз редактировалось Myp 04 мар 2009, 10:15, всего редактировалось 1 раз.
Причина: не забываем про тег code

Re: AVR --> rs232 --> COM порт ПК

avr123.nm.ru » 03 мар 2009, 23:19

В прерывании не надо этого делать если нет срочности, это прерывание кладет символы принятые в буфер. По необходимости берете символы из буфера и анализируете.

Скачайте пример к задаче 5 курса - http://avr123.nm.ru/z5.htm - там в конце долджна быть конструкция "пут ча гет ча" которая отправляет символы из буыера обратно в USART для передачи обратно в ПК например.

Если всеж в прерывании, то data это и есть символ из регистра UDR

Код: Выделить всёРазвернуть
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;

// здесь добавляем

if (data == 0xAF) // если получено число 0xAF
{
PORTA.1 = 1; // сделать 1 на PA1
}

// далее попрежнему оставляем как в задаче 5 курса

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}


КСТАТИ ! ИМХО в курсе я подробно расписал куда данные поступают, в задаче-упражнении 5 все строчки приема разобраны ведь !

Изображение

Добавлено спустя 12 минут 18 секунд:
almazkazan писал(а):Класс, девайс заработал :Bravo:


Приятные ощущения :D

Кстати и прием и обработка данных UART AVR USART расписаны в задаче 5 курса

Изображение

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 04 мар 2009, 21:46

КСТАТИ ! ИМХО в курсе я подробно расписал куда данные поступают, в задаче-упражнении 5 все строчки приема разобраны ведь !


извиняюсь :roll:

таак, у меня почему то сигналы не такие какие надо в комп приходят...
отправляю putsf("The LCD is not present.\r");
а приходит ерунда какая то :(
допустим если делаю в основном бескон. цикле putchar(getchar()); то на комп приходитят числа 80 или 00 не зависимо от того, что я отправил(!) :( где может быть ошибка? настроики boudrate:9600,8 Data, 1 Stop, No Parity и в настроиках СОМ порта и в МК

Re: AVR --> rs232 --> COM порт ПК

avr123.nm.ru » 04 мар 2009, 22:09

Дак удали из проекта все кроме того что нужно и выложи тут и в симуляторе проверь. Проверь реальную частоту МК и настройки порта ПК.

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 06 мар 2009, 21:17

симуляторе проверь


спасибо, уже скачиваю ПРОТЕУС ( давно пора уже, вот и повод :) )

Проверь реальную частоту МК ...


Хм, случайно внутренний тактовый генератор (или как там, который секунды мерит вобщем) включать не надо? Я в CVAVR в генераторе начального кода только настройки USART сделал как на курсе, имя поставил atmega8515 и chip 16 Mегагерц и всё. что-то еще надо? внешних кварцев к МК не подсоеденено

Re: AVR --> rs232 --> COM порт ПК

avr123.nm.ru » 06 мар 2009, 21:43

almazkazan писал(а):поставил atmega8515 и chip 16 Mегагерц и всё. что-то еще надо? внешних кварцев к МК не подсоеденено


ОЧЕВИДНО ! самое время почитать "Устройство AVR" - http://avr123.nm.ru/02.htm

и желательно еще раз ВНИМАТЕЛЬНО пройтись по применению UART USART - http://avr123.nm.ru/z5.htm

Ну и чтение стр 39 (примерно) даташита, раздел "Calibrated Internal RC Oscillator" тоже сильно продвинет вас вперед !

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 06 мар 2009, 22:37

спасибо avr123.nm.ru! (и за курс тоже :D )
похоже я начал врубаться :beer: !

Re: AVR --> rs232 --> COM порт ПК

avr123.nm.ru » 06 мар 2009, 22:54

almazkazan писал(а):похоже я начал врубаться :beer: !

здОрово ! не снижай темп.

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 06 мар 2009, 23:35

во вкладке chip clock поставил 8MHz, глянул в даташит - сказано фьюз CKSEL0 надо запрограммировать(для 8мгц) потом сделал вот так, поставил галочки. щелкнул кнопку Program All там чето сделалось... и теперь вот такая ошибка!! я че на те самые грабли со фьюзами наступил?! :shock:
Вложения
untitled.JPG
error

Re: AVR --> rs232 --> COM порт ПК

Сергей » 06 мар 2009, 23:39

Походу - да. Если там чтото прошлось и ты перезапустил МК, то усё.

Re: AVR --> rs232 --> COM порт ПК

EdGull » 06 мар 2009, 23:40

вот для этого бог и создал васик!... :ROFL:

Re: AVR --> rs232 --> COM порт ПК

almazkazan » 06 мар 2009, 23:42

:D а как правильно то надо было на 8мгц настроить?


Rambler\'s Top100 Mail.ru counter