Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 02.03.2007, 22:49  
ArtUrl1986
Вид на жительство
 
Аватар для ArtUrl1986
 
Регистрация: 29.11.2006
Сообщений: 350
Сказал спасибо: 242
Сказали Спасибо 16 раз(а) в 14 сообщении(ях)
ArtUrl1986 на пути к лучшему
По умолчанию Помогите пожалуйста начинающему микроконроллерщику!!!

Здравствуйте. Меня зовут Артур. Вопрос состоит в том, что я хочу "заставить общаться" микроконтроллер Atmega8L с компьютером по RS-232 интерфейсу на COM1 порту (номер порта, я понимаю, не важен ). Программу пишу на C. Скелет программы мне сгенерировала CodeVisionAvr C. Частоту выбрал 4МГ, стабилизировал кварцем (4МГ), скорость обмена данными 9600 Бод, 8бит, 1 стоп бит, Parity No. Данные на вывод пускаю так, как было описанно на сайте avr123.nm.ru:

..............................
#include‹mega8.h›
#include‹stdio.h›
..............................

// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;

// USART Baud rate: 9600 для 4 MHz
UBRRH=0x00;
UBRRL=0x19;

пробовал так:
putsf("TP 0002");
и так:
while(!(UCSRA & (1‹‹UDRE))); UDR = 'G';
и так:
putchar('\n Hello');
и даже так:
printf("Hello, world");
ничего не помогло.
В качестве преобразователя CMOS/TTL использую китайку MAX232N якобы, по документации Texas Instruments производства. Схема собрана заведомо правильна, сравнивал с несколькими источниками. Данные пытался принимать на ПК 4 прогами LookRSR232, COM Sniffer, COM Port Toolkit, Hyperterminal. Ни одна не может "поймать" сигналы. Данные передаю на входы 2, 3, 5 COM порта. Пожалуйста, посоветуйте, почему на ПК ничего не отображается!!!
Реклама:
ArtUrl1986 вне форума  
Непрочитано 02.03.2007, 23:00  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

этот вопрос постоянно задают.

прочитайте внимательно - avr123.nm.ru/z5.htm

и посмотрите про цвет и величину ошибки скорости передачи в мастере CVAVR !!!

Схемы соединения с ПК на стр. avr123.nm.ru/z4.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 02.03.2007, 23:39  
Zemlyanov
Гражданин KAZUS.RU
 
Регистрация: 17.09.2006
Сообщений: 633
Сказал спасибо: 78
Сказали Спасибо 69 раз(а) в 57 сообщении(ях)
Zemlyanov на пути к лучшему
По умолчанию

Стоит не тот кварц. Посмотри в ДАТАШите на Мега 8 при каком кварце будет (помоему 11.0592 МГц) наименьшее число ошибок при передаче данных. Частота компа и кварца МК не совпадают, поэтому они не могут состыковаться
Zemlyanov вне форума  
Непрочитано 02.03.2007, 23:53  
ArtUrl1986
Вид на жительство
 
Аватар для ArtUrl1986
 
Регистрация: 29.11.2006
Сообщений: 350
Сказал спасибо: 242
Сказали Спасибо 16 раз(а) в 14 сообщении(ях)
ArtUrl1986 на пути к лучшему
По умолчанию Ответ Zemlyanov у

re: --› Стоит не тот кварц. Посмотри в ДАТАШите на Мега 8 при каком кварце будет (помоему 11.0592 МГц) наименьшее число ошибок при передаче данных. Частота компа и кварца МК не совпадают, поэтому они не могут состыковаться
Атмега 8 по даташиту максимальную частоту держит 8 МГЦ. Когда AVRCodeVision C создавал скелет, когда я выбирал скорость в бодах, снизу приписал (под селектом выбора скорости в бодах), что кооффициент ошибок при данной частоте кварца и при 9600 бод не будет превышать 0,7%.
В даташите не смог найти сведения о "лучшей частоте передачи"... - составляет трудность, что даташит на анг. яз. Подскажите, пожалуйста, какая частота Atmega8L лучше подходит для передачи данных по RS-232.
ArtUrl1986 вне форума  
Непрочитано 02.03.2007, 23:58  
ArtUrl1986
Вид на жительство
 
Аватар для ArtUrl1986
 
Регистрация: 29.11.2006
Сообщений: 350
Сказал спасибо: 242
Сказали Спасибо 16 раз(а) в 14 сообщении(ях)
ArtUrl1986 на пути к лучшему
По умолчанию Комментарий

Всё делал на основе сведений с сайта avr123.nm.ru (его полность перерыл, скачал и т.д.) и Книги Евстифеева "Микроконтроллеры семейства Mega и Tiny"


На всякий случай привожу код своей нерабочей проги, может в ней я что-то не правильно "натворил":

/************************************************** ***
This program was produced by the
CodeWizardAVR V1.25.2 Beta1 Standard
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 02.03.2006

Comments:


Chip type : ATmega8L
Program type : Application
Clock frequency : 4,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/

#include ‹mega8.h›
#include ‹delay.h›

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1‹‹FE)
#define PARITY_ERROR (1‹‹UPE)
#define DATA_OVERRUN (1‹‹OVR)
#define DATA_REGISTER_EMPTY (1‹‹UDRE)
#define RX_COMPLETE (1‹‹RXC)

// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE‹256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
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;
};
};
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

// Standard Input/Output functions
#include ‹stdio.h›

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization

// Port C initialization
// Func6=In Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
// State6=T State5=0 State4=0 State3=0 State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x38;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{
// Place your code here
delay_ms(1000);
while(!(UCSRA & (1‹‹UDRE))); UDR = 'G';
PORTC.5=1;
delay_ms(500);
while(!(UCSRA & (1‹‹UDRE)));
putchar('G');
delay_ms(1000);
PORTC.5=1;
delay_ms(500);
PORTC.5=0;
putsf("Hello, world!");

};
}
ArtUrl1986 вне форума  
Непрочитано 03.03.2007, 00:38  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: Ответ Zemlyanov у

Сообщение от ArtUrl1986
В даташите не смог найти сведения о "лучшей частоте передачи"...
в разделе USART таблица БОЛЬШАЯ - трудно не заметить. там цифры. англ не нужен.

Сообщение от ArtUrl1986
Подскажите, пожалуйста, какая частота Atmega8L лучше подходит для передачи данных по RS-232.
Любая при которой мастер CVAVR показывает ошибку не красным цветом.

========

Попробуй в VMLAB пример из - avr123.nm.ru/z5.htm

потом поменяй на mega8 в CVAVR и VMLAB
и проверь что работает.

если работает залей в свой МК и наладь связь с ПК.

=========

со стороны ПК можешь проверить связь так.

те провода от макс232 что идут к RXD и TXD отсоедини от МК и соедини вместе.

теперь при отправке чего нибудь с ПК эта фигня должна возвращаться в ПК.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 03.03.2007, 01:19  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Указанная выше программа на скорости 9600 при частоте кварца 4 МГц выводит нормально последовательность символов.
Проблема аппаратная.
Может перехлест проводов.
Может затактирована от внутреннего генератора на 1 МГц (они с такими установками идут с завода).

-- Прилагается рисунок: --
lsa вне форума  
Непрочитано 03.03.2007, 01:27  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Если и правда затактирована от 1 МГц, то принимать компьютер будет на скорости 2400.
9600/4=2400.
Можно открыть СОМ порт на ПК на скорости 2400 и посмотреть что он принимает.
lsa вне форума  
Непрочитано 03.03.2007, 03:20  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

у встроеного RC-генератора ошибка "лошадиная" может быть.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 03.03.2007, 03:34  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
у встроеного RC-генератора ошибка "лошадиная" может быть.
Даже должна быть.
Но для того чтобы понять в чем косяк точности хватит.
Просто как пример:
Человек не разобрался с фузами(оставил их в заводских установках), повесил кварц для красоты, открыл в компе прием на 9600 и ждет безрезультатно.
lsa вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите начинающему с внешним АЦП VadimL Микроконтроллеры, АЦП, память и т.д 0 09.07.2009 15:03
Помогите советом начинающему eler Делимся опытом 64 11.09.2008 17:28
Помогите начинающему!!!! sma-etu Микроконтроллеры, АЦП, память и т.д 2 13.12.2006 18:31
Помогите начинающему разобраться с Keil C51 Dabrik Делимся опытом 2 05.09.2004 12:32


Часовой пояс GMT +4, время: 14:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot