реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ВОПРОС
male
сообщение Oct 28 2009, 11:50
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



День добрый вот решил попробовать поработать с avr передача информации по rs-232 ( adm323 микросхема)
написал простую программу чтоб на каждое N нажатие кнопки по rs был сигнал
вод код проги
CODE
#include <mega8.h>
#include <delay.h>
#include <io.h>
#include <stdio.h>

void main()
{
PORTB=0x00;
DDRB=0x1F;
PORTC=0x03;
DDRC=0x01;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCSRA=0x00; //
UCSRB=0x08; //
UCSRC=0x86; //инициализация передатчика 8 1 нет
UBRRH=0x00; // асинхронный 192000
UBRRL=0x19; //
ACSR=0x80;
SFIOR=0x00;

while (1)

{
int c;
int l;
c=0;
l=7;


m1: // передача данных
PORTC.0=0;

delay_ms(500);
printf("нажатие клавиши ");
c=-1;
PORTC.0=1; // гасим индикатор
PORTB=c; // ОТЛАДКА
m2: // сканируем первый импульс

if (PINC.1==1)
{delay_us(10);
if (PINC.1==1)
{c=c+1;
PORTB=c; //ОТЛАДКА
goto m3;
}
else
{goto m2;
};

}
else
{goto m2;
};

m3:
if (c==l)
{goto m1;
}
else
{goto m4;
};

m4:
if (PINC.1==0)
{delay_us(10);
if (PINC.1==0)
{goto m2;
}
else
{goto m4;
};

}
else
{goto m4;
};


};
}



работает счет нажатия клавиши и индикаторы на порт B0-4
но передача не идет по rs (смотрел осциллографом)

подскажите что я не так делаю ?
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 28 2009, 12:10
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Извините конечно, но у вас не программа а бред полный....
Особенно переходы по goto.

Хотите потренероваться в передаче данных по uart?
Так откройте документацию на мегу, найдите раздел посвященный uart, оформите функции инициализации и передачи байта - в доке на м8 приведён 100% работоспособный код!!!.
В основном цикле программы вставте функцию передачи символа и смотрите хоть осцилографом хоть в терминале что у вас там творится.

Кроме того тема uarta довольно часто подымалась на форуме - можно найти много тем с готовыми кодами.
Go to the top of the page
 
+Quote Post
GDI
сообщение Oct 28 2009, 12:18
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



А в УАРТ вы принтэфом посылаете? А с чего вы взяли что стандартный принтэф так будет работать, да еще и в основном цикле?
Смотрите даташит, как вам выше советовали.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Oct 28 2009, 13:24
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Для ускорения размышлений возьмите avrlib. Посмотрите код (IMHO сильно избыточный и универсальный) модуля для USART и переделайте для себя.
Пересмотрите критически свой код программы на С.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
male
сообщение Oct 29 2009, 06:17
Сообщение #5





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



ну вот сразу накинулось )) в данном направлени это у меня первый проект
понятно сто это тока сырец программы все потом будет переведено на ассемблер
а функцию взял из описание программы CodeVisionAVR V2.03.9
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 29 2009, 06:46
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(male @ Oct 29 2009, 10:17) *
ну вот сразу накинулось )) в данном направлени это у меня первый проект
понятно сто это тока сырец программы все потом будет переведено на ассемблер


Никто не накинулся - просто оформление никакое и сама программа абсолютно непонятная.

Оформите программу как приведено ниже. Откройте документацию, дополните функциями инициализации и отправки символа.
Скачайте терминал (например v1.9b bray) и смотрите на компе что там получаете из вашего uarta.

Код
void uart_init(unsigned long int baud)
{
     //тут код инициализации из документации на м8
}

void send(unsigned char symbol)
{
     //тут код отправки символа из документации на м8
}

void main(void)
{
    uart_init(115200);
    
     for(;;)
     {
           uart_send('A');
           delay_ms(500);
     }
}


И какой смысл потом переводить на ассемблер если подобная программа на С будет довольно неплохо оптимизирована компилятором.
Go to the top of the page
 
+Quote Post
V_G
сообщение Oct 29 2009, 08:31
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Программу не просматривал, но антидребезг кнопки сделали? А то каша по компорту пойдет!
Go to the top of the page
 
+Quote Post
male
сообщение Oct 29 2009, 08:57
Сообщение #8





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



да антидребезг есть и он работает
Go to the top of the page
 
+Quote Post
male
сообщение Nov 13 2009, 16:10
Сообщение #9





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



всем спасибо первая версия работает
проблемма была в винде ..
Go to the top of the page
 
+Quote Post
male
сообщение Nov 13 2009, 16:16
Сообщение #10





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



день добрый сваял схемку на atmega8 через max232 подключик к com порту ..
начал передовать данные ... вреде по терминальной програмке все идет красиво ...
подключаю к устройству на которое надо передовать данные .. не работает ..
Вопрос можно ли как то вклиниться в линию rs 232 между avr и устройством и посмотреть
что на самом деле твориться между ними ??
Go to the top of the page
 
+Quote Post
Duhas
сообщение Nov 13 2009, 16:19
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018



ну берете еще один макс и и на его RX подаете сигнал с 1 или другого провода мк... хотя по идее иона прям портом смотреть после макса.. который в устройстве... главное только входом смотреть и не пытаться выход туда же прилепить...
Go to the top of the page
 
+Quote Post
male
сообщение Nov 13 2009, 16:43
Сообщение #12





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



вы предлогаете праспаралелить выход с мк на 2 max ( у него на самом деле 2 канала )
и послать один канал на устройство а другой на комп
я правильно понял ??

или в линию связи включить max и после него на вход компа ...?
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 13 2009, 16:45
Сообщение #13


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(male @ Nov 13 2009, 19:16) *
можно ли как то вклиниться в линию rs 232 между avr и устройством и посмотреть
что на самом деле твориться между ними ??

можно... осциллографом
Go to the top of the page
 
+Quote Post
male
сообщение Nov 13 2009, 16:54
Сообщение #14





Группа: Участник
Сообщений: 10
Регистрация: 29-07-09
Пользователь №: 51 646



Цитата(stells @ Nov 13 2009, 21:45) *
можно... осциллографом

нету осциллографа с памятью под рукой ..
Go to the top of the page
 
+Quote Post
stells
сообщение Nov 13 2009, 18:09
Сообщение #15


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(male @ Nov 13 2009, 19:54) *
нету осциллографа с памятью под рукой ..

зачем с памятью? обычным... зациклить обмен одним байтом и посмотреть
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 17:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01485 секунд с 7
ELECTRONIX ©2004-2016