Перейти к содержанию
    

как мне в С++ указать определенный пин определенного порта?
смотрите здесь: http://arv.radioliga.com/content/category/6/33/49/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не нашел там ничего. ((
как это?!

 

а если вот так: http://arv.radioliga.com/content/view/187/49/ и вот так: http://arv.radioliga.com/content/view/188/49/ ???? так лучше?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как это?!

 

а если вот так: http://arv.radioliga.com/content/view/187/49/ и вот так: http://arv.radioliga.com/content/view/188/49/ ???? так лучше?

Спасибо вам огромнооое )) но я решил задачу проще )) Оb00000001 + калькулятор бин хекс =

if(data=='A')

{

PORTB=0x1;

Изменено пользователем David_Ali

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Но почему же? Разве это не то? Просто мой компилятор не стал понимать некоторые вещи из тех примеров вот я взял калькулятор. :-)

 

Читаю про Industrial Ethernet про скада прочитал. И не вижу там места для разработчика.. Это все готовые системы для пользования. А вот создать свой плк это уже почетное дело :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребята, ну кто нибудь скажите мне почему на меге8 вместо нормальной работы, он работает в режиме эха?? на меге16 все ОК. а тут что не пошлю все возвращает. вот код --->

#include <avr/io.h>

#include <avr/interrupt.h>

 

 

#define FOSC 8000000L//Тактовая частота

#define BAUD 9600L //Скорость порта

#define MYUBRR FOSC/16/BAUD-1

 

 

void USART_Transmit( unsigned char data );

void USART_Init( unsigned int ubrr);

 

 

 

//Обработка прерывания чтения USART

ISR(USART_RXC_vect)

{

int b;

b = UDR;

USART_Transmit( B ); //Отправляем то, что получили

}

 

 

//Инициализация модуля USART

void USART_Init( unsigned int ubrr)

{

//Задаем скорость работы USART

UBRRH = (unsigned char)(ubrr>>8);

UBRRL = (unsigned char)ubrr;

 

UCSRB=(1<<RXEN)|( 1<<TXEN);

UCSRB |= (1<<RXCIE);

 

 

 

UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

 

 

 

}

 

 

//Функция отправки данных

void USART_Transmit( unsigned char data )

{

while ( !(UCSRA & (1<<UDRE)) ); //Ожидание опустошения буфера приема

UDR = data; //Начало передачи данных

}

 

int main(void)

{

unsigned char data;

PORTB=0x00;

DDRB=0xFF;

 

PORTD=0x00;

DDRD=0x00;

USART_Init (MYUBRR);

sei();

 

while(1)//вечный цикл

{

 

 

if(data=='A')

{

PORTB=0xFF;

}

if(data=='B')

{

PORTB=0x00;

}

 

}

 

 

 

}

P.S. и как пользоваться Codevision? Попробовал на нем писать у меня не получается НЕХ файл, а только асм.

Изменено пользователем David_Ali

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Интересно, а как оно должно работать если у вас в коде

 

//Обработка прерывания чтения USART
ISR(USART_RXC_vect)
{
int b;
b = UDR;
USART_Transmit( B );    //Отправляем то, что получили
}

каждый принятый байт обратно отсылается?

 

 

И кроме того, функция main странная:

int main(void)
{
  unsigned char data;
   PORTB=0x00;
   DDRB=0xFF;

   PORTD=0x00;
   DDRD=0x00;
USART_Init (MYUBRR);
sei();

while(1)//вечный цикл
{ 
  

      if(data=='A')
      {
      PORTB=0xFF;
      }
      if(data=='B')
      {
      PORTB=0x00;
      }

}
}

В цикле while проверяется переменная data, которая есть локальная переменная функции. Её значение не может изменится и наверное оптимизатор все эти проверки выкинет.

 

Сделайте так:

volatile unsigned char data;
//Обработка прерывания чтения USART
ISR(USART_RXC_vect)
{
//int b; // зачем тут int?
data = UDR;
USART_Transmit( data); //Отправляем то, что получили
}

void main ()
{
// инициализация 
while (1) {
if (data=='A') {
// и так далее
}
}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, а как оно должно работать если у вас в коде

Спасибо сейчас проверю, ну просто на меге 16 все работает, просто там пару изменений чисто по датащиту МК

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

он все в режиме эха..

Эхо у вас по программе и должно быть. Если хотите чтобы пропало эхо, то закоментируйте строку с USART_Transmit.

Или не работает остальная программа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эхо у вас по программе и должно быть. Если хотите чтобы пропало эхо, то закоментируйте строку с USART_Transmit.

Или не работает остальная программа?

осталное не работает, на атмеге 16 работает, а когда переделываю для 8ки не работает, от чего может быть? МК тоже разнве брал, все 8ки одно и тоже делают (

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

МК тоже разнве брал, все 8ки одно и тоже делают (

Как у вас сейчас программа выглядит?

Эхо идёт правильно?

В симуляторе не пробовали запускать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...