роботы робототехника микроконтроллеры


 Страниц (2): [1] 2 »   

> Без описания
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



Привет всем, с наступающим всех Голливудская улыбка
Как установиль 1 или 0 на выводе TxD com порта, что бы передать эти 1 или 0 USART-ом atmega 8 ?
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



Надо всего лишь сконфигурировать USART согласно даташит, и выводы автоматически настроятся как надо. Тх-на выход Rx-на вход.
С наступающим!!!
 
 Top
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



Вот этим способом не получается ставить 1 в txd com-a pc
CODE:
int main(int argc, char *argv[])
{
HANDLE handle = 0;
handle = CreateFile("\\\\.\\COM2", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle == INVALID_HANDLE_VALUE) {
MessageBox(NULL, "Невозможно открыть последовательный порт", "Error", MB_OK);
ExitProcess(1);
}
std::cout << " com port succsesfuly opened :)" << std::endl;
DCB dcbSerialParams = {0};

if (!GetCommState(handle, &dcbSerialParams))
{
printf("failed to get current serial parameters!");
}
else
{
dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;

if(!SetCommState(handle, &dcbSerialParams))
{
printf("ALERT: Could not set Serial Port parameters");
}
else {
Sleep(2000);
}
}
DWORD feedback;
char buff = 1;
std::cout << " handle " << handle << std::endl;
if(!WriteFile(handle, &buff, 10, &feedback, 0))
{
CloseHandle(handle);
handle = 0;
throw exception();
}

CloseHandle(handle);

(Добавление)
Вот мой код. CodeVisionAvr.
CODE:

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

Project :
Version :
Date : 12/31/2012
Author : F4CG
Company : F4CG
Comments:


Chip type : ATmega8
Program type : Application
Clock frequency : 1.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega8.h>

// Standard Input/Output functions
#include <stdio.h>

// Declare your global variables here
int r;

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

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

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

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0xFF;

// 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=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x06;

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

while (1)
{
// Place your code here
while(UCSRA.7==1)
{
r = UDR;
if(r=='1')
PORTD=0xFF;
else
PORTD = 0x00;
}

};

(Отредактировано автором: 31 Декабря, 2012 - 23:07:53)

 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



gravitino пишет:
Вот этим способом не получается ставить

https://www.youtube.com/watch?v=e-qDHM0slB0
 
 Top
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



Надо просто программно с компа ставить 1 на TxD com порта
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



gravitino пишет:
Надо просто программно с компа ставить 1 на TxD com порта

Ничего не надо ставить, я же ссылку дал, про то кто на ком стоит Голливудская улыбка
А если серьезно, то надо не единицу ставить, а байт в порт отправлять. Но это после НГ, щас во мне уже много спиртного Подшучивать, дразнить
 
 Top
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



Роботов пишет:
gravitino пишет:
Надо просто программно с компа ставить 1 на TxD com порта

Ничего не надо ставить, я же ссылку дал, про то кто на ком стоит Голливудская улыбка
А если серьезно, то надо не единицу ставить, а байт в порт отправлять. Но это после НГ, щас во мне уже много спиртного Подшучивать, дразнить

Ну да спасибо что вообще ответил, честно говоряне дал никакого ответа Улыбка
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



gravitino пишет:
честно говоряне дал никакого ответа

Ну извините, отвечаю между подходами к столу.
А это вам действительно прям щас надо? может быть до завтра подождем?
С наступающим Голливудская улыбка
 
 Top
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



Голливудская улыбка щас иду пить но потом обязательно вернусь к этой проблеме Ухмылка
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



смешной вопрос там же по любому или ноль или единица или одно из двух.
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



killgur пишет:
смешной вопрос там же по любому или ноль или единица или одно из двух.

ТС хочет отправить единицу, на самом деле отправляется 00000001. Тоесть восемь бит, младший из которых единица.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Роботов пишет:
killgur пишет:
смешной вопрос там же по любому или ноль или единица или одно из двух.

ТС хочет отправить единицу, на самом деле отправляется 00000001. Тоесть восемь бит, младший из которых единица.


CODE:
if(r=='1')


ASCII '1' = 00110001

надо его и передавать, для начала через терминал.

(Отредактировано автором: 01 Января, 2013 - 01:25:12)

 
 Top
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



killgur пишет:
Роботов пишет:
killgur пишет:
смешной вопрос там же по любому или ноль или единица или одно из двух.

ТС хочет отправить единицу, на самом деле отправляется 00000001. Тоесть восемь бит, младший из которых единица.


CODE:
if(r=='1')


ASCII '1' = 00110001

надо его и передавать, для начала через терминал.

В Proteuse все работает, через Virtusl Terminal отпраеляю 1 и на порт D появляется лог 1. Я вот только не уверен. мега8 подключен к компу через программатор Громова, может тут проблема ?
 
 Top
gravitino Post Id


Лейтенант


Сообщений всего: 23
Дата рег-ции: Дек. 2012  



Извините за тупость, но я как то не заметил что программатор Громова не подает сигнал на вход МК Rxd. То есть мне надо собрать uart переходник использую max232. Так вот собрал простую схему в proteus -e, симуляция норм проходит. Но вопросы есть
1. Можно ли вместо электролитических кондеров ставить керамитические ?
2. так как выход R1 Out схемы max 232 инвертирован сиганл до входа мк RxD доходит инвертированным, что делать я вот в proteuse поставил элемент not и все стало норм но как то не подуше, что делать ?
Прикреплено изображение
783020.jpg

(Отредактировано автором: 01 Января, 2013 - 16:17:14)

 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



1. Можно.
2. Использовал МАХ232 без каких либо инверторов. Всё работало.
 
 Top
Страниц (2): [1] 2 »
« Микроконтроллеры »


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





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru