Без описания |
Поиск в теме | Версия для печати |
gravitino |
Отправлено: 31 Декабря, 2012 - 23:05:46
|
Лейтенант
Сообщений всего: 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) |
|
|
killgur |
Отправлено: 01 Января, 2013 - 01:22:31
|
Гуру
Сообщений всего: 1189
Дата рег-ции: Февр. 2010
|
Роботов пишет:killgur пишет:смешной вопрос там же по любому или ноль или единица или одно из двух.
ТС хочет отправить единицу, на самом деле отправляется 00000001. Тоесть восемь бит, младший из которых единица.
ASCII '1' = 00110001
надо его и передавать, для начала через терминал.(Отредактировано автором: 01 Января, 2013 - 01:25:12) |
|
|
gravitino |
Отправлено: 01 Января, 2013 - 10:22:58
|
Лейтенант
Сообщений всего: 23
Дата рег-ции: Дек. 2012
|
killgur пишет:Роботов пишет:killgur пишет:смешной вопрос там же по любому или ноль или единица или одно из двух.
ТС хочет отправить единицу, на самом деле отправляется 00000001. Тоесть восемь бит, младший из которых единица.
ASCII '1' = 00110001
надо его и передавать, для начала через терминал.
В Proteuse все работает, через Virtusl Terminal отпраеляю 1 и на порт D появляется лог 1. Я вот только не уверен. мега8 подключен к компу через программатор Громова, может тут проблема ? |
|
|
|
Поиск в теме | Версия для печати |
Страниц (2): [1] 2 » |
« Микроконтроллеры » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|