roboforum.ru

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

mc-rs232-mc

Re: mc-rs232-mc

avr123.nm.ru » 04 май 2011, 23:27

наверняка да.
chinga писал(а):тада я ниче не буду видеть)
светодиоды уже сгорели чтоль ? Когда 2 МК соедините TxD ведущего и на ПК подайте для прослушки.

Re: mc-rs232-mc

chinga » 04 май 2011, 23:33

avr123.nm.ru писал(а):Как читать начнете так и пойдет. Все теже Print и Input

тогда программа бует примерно так? как бы я отправляю через print какую то цифру(для примера номер кнопки)типа так:
для пульта:
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"                                     ' используем ATmega32
$crystal = 16000000                                         ' частота установленного кварца 16 mHz
$baud = 19200                                               ' скорость порта 19200 бит/с.

Dim Qwe As Integer
Dim Ewq As Integer
Qwe = 8
Ewq = 9
Config Portb.1 = Input                                      'кнопка 1
Config Portb.2 = Input                                      'кнопка 2

Do
If Pinb.1 = 1 Then                                          'ввод текста с клавиатуры
Print Qwe
End If

If Pinb.2 = 1 Then
Print Ewq
End If

Loop
End

для робота:
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"                                     ' используем ATmega32
$crystal = 16000000                                         ' частота установленного кварца 16 mHz
$baud = 19200                                               ' скорость порта 19200 бит/с.

Dim Qwe As Integer
Dim Ewq As Integer
Qwe = 8
Ewq = 9
Config Portc.1 = Output                                       'светодиод 1
Config Portc.2 = Output                                       'светодиод 2

Do
If Input = Qwe Then                                         'ввод текста с клавиатуры
Portc.1 = 1
Else
Portc.0 = 0
End If

If Input = Eqw Then
Portc.2 = 1
Else
Portc.2 = 0
End If

Loop
End

ведь это ж не правильно?

Добавлено спустя 1 минуту 35 секунд:
avr123.nm.ru писал(а):наверняка да.
chinga писал(а):тада я ниче не буду видеть)
светодиоды уже сгорели чтоль ? Когда 2 МК соедините TxD ведущего и на ПК подайте для прослушки.

я про это говорю:
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"       ' используем ATmega32
$crystal = 16000000 ' частота установленного кварца 16 mHz
$baud = 19200       ' скорость порта 19200 бит/с.
Dim A As String * 15       'объявляем переменную – строка не более 15 символов
Do
Input "What is your name? " , A       'ввод текста с клавиатуры
Print "Hello! " ; A ' вывод сообщения вместе с ранее введенным текстом
Print               ' вывод пустой строки
Wait 1              ' задержка 1 секунда
Loop
End

вот именно со светодиодами не могу разобраться...

Re: mc-rs232-mc

avr123.nm.ru » 04 май 2011, 23:49

Советую делать как в школе - вначале выполните упражнения из учебника, а потом уже творите своё.

Наверняка получится быстрей и ПОЛЕЗНЕЙ,

Re: mc-rs232-mc

chinga » 05 май 2011, 00:50

из учебника,если вы имеете в виду пример, я уже сделал)
именно эту строчку подскажите где я сравниваю if потом? вот это затрудняет...

Добавлено спустя 5 минут:
вот так будет прием?
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"                                     ' используем ATmega32
$crystal = 16000000                                         ' частота установленного кварца 16 mHz
$baud = 19200                                               ' скорость порта 19200 бит/с.

Dim Qwe As Integer
Dim Ewq As Integer
Qwe = 8
Ewq = 9
Config Portb.1 = Input                                      'кнопка 1
Config Portb.2 = Input                                      'кнопка 2

Config Portc.1 = Output
Config Portc.2 = Output

Dim Q As Integer
Input Q
Do
If Q = 8 Then                                               
Portc.1 = 1
Else
Portc.1 = 0
End If

If Q = 9 Then
Portc.2 = 1
Else
Portc.2 = 0
End If

Loop
End

а вот для робота:
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"                                     ' используем ATmega32
$crystal = 16000000                                         ' частота установленного кварца 16 mHz
$baud = 19200                                               ' скорость порта 19200 бит/с.
Dim A As String * 15                                        'объявляем переменную – строка не более 15 символов
Dim Qwe As Integer
Dim Ewq As Integer
Qwe = 8
Ewq = 9
Config Pinb.1 = Input
Config Pinb.2 = Input

Do
If Pinb.1 = 1 Then
Print Qwe
End If

If Pinb.2 = 1 Then
Print Ewq
End If

Loop
End



программа компилируется)но правильно ли?)

Добавлено спустя 46 минут 16 секунд:
светодиод гонит( точнее я в протеусе смарел передающую проводку, от первого МК это трансивер через осцилограф, када нажимаю кнопку один раз, там график цифрового сигнала, и потом хоть и отпускай хоть и нажимай другую юкнопку не меняется, и на 2МК тож, по программе загорается светодиод и больше ниче не делает( почему?

Re: mc-rs232-mc

avr123.nm.ru » 05 май 2011, 09:01

в PROTEUS есть терминал, подключите его и смотрите какие данные передаются.

Re: mc-rs232-mc

chinga » 05 май 2011, 12:49

вот через терминал посмарел как работает первая программа,хелло то сё) выводиться ентер ё нейим, потом вводишь и интер и больше ничего нету) ну в смысле дальше не идет программа...

Добавлено спустя 1 час 19 минут 8 секунд:
можете подсказать,почему на кнопках начинает гнать? или цифры отправлять не выгодно?
вот как бы прога
это от пульта
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"                                     ' используем ATmega32
$crystal = 8000000                                          ' частота установленного кварца 16 mHz
$baud = 9600                                                ' скорость порта 19200 бит/с.
Dim A As String * 15                                        'объявляем переменную – строка не более 15 символов
Dim Qwe As Integer
Dim Asd As Integer
Dim Ewq As Integer
Qwe = 8
Ewq = 9
Asd = 7
Config Pinb.1 = Input
Config Pinb.0 = Input
Config Pinb.2 = Input
Pinb.1 = 0
Pinb.2 = 0
Pinb.0 = 0

Do
Select Case 1
  Case Pinb.0 : Print 7
  Case Pinb.1 : Print 8
  Case Pinb.2 : Print 9
  Case Else Print
End Select

Loop
End


вот на робота должен стоять
Код: Выделить всёРазвернуть
$regfile = "m32def.dat"                                     ' используем ATmega32
$crystal = 8000000                                          ' частота установленного кварца 16 mHz
$baud = 9600                                                ' скорость порта 19200 бит/с.

Dim Qwe As Integer
Dim Ewq As Integer
Dim Asd As Integer
Qwe = 8
Ewq = 9
Asd = 7
'Config Portb.1 = Input                                      'кнопка 1
'Config Portb.2 = Input                                      'кнопка 2

Config Portc.1 = Output
Config Portc.2 = Output

Dim Q As Integer

Do

Input Q

Select Case Q
  Case 8 : Portc.1 = 1
  Case 9 : Portc.2 = 1
  Case 7 : Portc.1 = 0
            Portc.2 = 0
End Select



Loop
End

вот када передал данные, для пример 8ку отправил и оно отправляется отправляется,вопрос, как остановить? я пробывал и пустой принт выводить,не выходит...

Re: mc-rs232-mc

galex1981 » 05 май 2011, 12:57

Ну вообще у тебя скорость реальная по порту не 19200 а 9600

Re: mc-rs232-mc

chinga » 05 май 2011, 13:10

так в чем моя ошибка тут?

Re: mc-rs232-mc

boez » 05 май 2011, 13:26

Вообще chinga хочет узнать, как в бейсике обмениваться данными через уарт не в ascii, а в бинарном виде. Но он еще не знает, что он об этом спрашивает :)
chinga, если знаешь C++ - так и делай на C++! А вернее на C. Там все довольно просто - объявляешь свои функции приема и передачи символа и дальше пользуешься стандартными fread/fwrite для бинарных данных и printf/scanf для текста. Это касается avr-libc, которой WinAVR пользуется, про другие среды не знаю.

И вообще дело не в языке, тебе для начала нужно определиться с протоколом обмена - какие данные будут передаваться, как принимающая сторона будет отличать один блок данных от другого - по времени? по специальным кодам-маркерам начала и конца? Ну и все такое, это ж оба твоих устройства, тебе и придумывать протокол.

Re: mc-rs232-mc

chinga » 05 май 2011, 19:17

boez писал(а):Но он еще не знает, что он об этом спрашивает :)

:D
а можете пример программы на С показать,что б понятней было)

Re: mc-rs232-mc

chinga » 07 май 2011, 02:19

хотел вот как тут сделать)http://www.youtube.com/watch?v=yr4VMvDZ_pE
но вместо кнопок один и два,три, у меня w,a,s,d) светодиодами переключает.
вот там можно сразу и с компа и с мк передавать сигналы, а у меня или с компа или с МК,то есть над каждый раз прошивать када бушь думать с какого отправлять,помогите)
на порте А кнопки у меня.
Код: Выделить всёРазвернуть
#include <mega32.h>
#include <delay.h>
#include <stdio.h>


void main(void){

char asd;
   
PORTB=0x00;
DDRB=0xFF;

   
PORTA=0xFF;
DDRA=0;
// 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=0x33;



while (1){
    char buf=PINA;


scanf("%c\0", &asd);

switch(asd){

    case 'w': PORTB = 0b00000001;
              delay_ms(50);   
              printf("%c\r\n\0", asd);
              break;
    case 's': PORTB = 0b00000100;
              delay_ms(50);
              printf("%c\r\n\0", asd);
              break;
    case 'a': PORTB = 0b00010000;
              delay_ms(50);         
              printf("%c\r\n\0", asd);
              break;
    case 'd': PORTB = 0b01000000;
              delay_ms(50);         
              printf("%c\r\n\0", asd);
              break;
    default: PORTB = 0b00000000;
             break;
}



    delay_ms(150);
    if(buf!=PINA) buf=PINA;
    switch(buf){
    case 0b11111110 : printf("0 button\r\n\0"); break;
    case 0b11111101 : printf("1 button\r\n\0"); break;
   case 0b11111011 : printf("2 button\r\n\0"); break;
    default: break;
    }           

    // Place your code here

    }
}
Вложения
proteus.JPG
вот схема

Re: mc-rs232-mc

chinga » 07 май 2011, 15:36

где и что я пропустил7

Re: mc-rs232-mc

chinga » 08 май 2011, 23:27

вот терь все вроде пашет)) но терь не могу сделать так что б када нажимаю кнопку что б к увеличивалась...
делаю в начале
int k;
k = 0;

if(PIND.2 == 0){
k++;
delay_ms(200);
printf("%d\r\n\0", k);
}

и выводит тока 1 и все) 1 за 1 и так далее,почему не увеличивается?)

Re: mc-rs232-mc

chinga » 05 авг 2011, 23:34

я вроде разобрался, и теперь не могу проверить, теперь такой вопрос:
с какого терминала отправлять? я с Баскома отправляю, другие символы выводит, а в Протеусе все пашет, может быть от терминала?
еще, юарт подключен к 1 ком порту, а на баскоме видит как 2.

Re: mc-rs232-mc

chinga » 07 авг 2011, 22:49

почему то какие то иероглифы выводит, почему? везде скорость поставил 9600, и программа от сюда? но я там скорость изменил на 9600 http://robozone.su/2008/07/16/bascom-av ... herez.html ... юзб юарт преобразователь мастеркитовский BA8050. в протеусе все работает, а вот в реале какие то иероглифы и все...


Rambler\'s Top100 Mail.ru counter