Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь по AVR, Трабл с прогой связи 2-х контроллеров 
:(
    Опции темы
Deliverance
Дата 29.7.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.12.2007
Где: Украина,Донецк

Репутация: нет
Всего: нет



мне надо связать два контроллера посредством 2-х RS 232 ,как это сделать я понимаю,а как оформить в языке С++ нет((
Кто знает как подскажите. Ну или хотя бы в общих чертах с чего вообще начать программу.

Собственно сложность в том ,что я ни как не въеду как мне обрабатывать сигнал с кнопки и отправить второму контроллеру,а от него получить ответ. (Именно программно)

Заране благадарен



Это сообщение отредактировал(а) Deliverance - 29.7.2008, 11:34
PM MAIL WWW ICQ Skype   Вверх
xvr
Дата 29.7.2008, 12:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Deliverance @ 29.7.2008,  11:33)
мне надо связать два контроллера посредством 2-х RS 232 ,как это сделать я понимаю,а как оформить в языке С++ нет((
Кто знает как подскажите. Ну или хотя бы в общих чертах с чего вообще начать программу.

Программу рекомендуется начать с ее проектирования, в частности, рекомендуется определится что и как должна делать программа и в зависимости от этого выбрать КАК и ГДЕ будет обрабатываться RS232:
  •  Будет ли обмен простым потоком байтов или нужен какой то протокол?
  •  Обмен осуществлять в прерываниях, фоновой задаче или основном цикле программы?
  •  Где и как опрашивать кнопку?
  •  Какова основная логика работы программы?
Цитата

Собственно сложность в том ,что я ни как не въеду как мне обрабатывать сигнал с кнопки и отправить второму контроллеру,а от него получить ответ. (Именно программно)
Сначала определитесь ЧТО вы собираетесь обрабатывать. Собственно обмен по RS232 вещь довольно простая - есть бит готовности (в соотвествующем перефирийном регистре) и буфер для приема/передачи байта. Для приема дожидаетесь установки бита готовности приемника (либо опрашивая его в цикле, либо по прерыванию), затем читаете принятый байт из буфера. Для передачи наоборот - дожидаетесь бита готовности передатчика, затем заприсываете передаваемый байт. Перед этим всем необходимо настроить RS232 (режим работы и скорость)

PM MAIL   Вверх
Deliverance
Дата 30.7.2008, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.12.2007
Где: Украина,Донецк

Репутация: нет
Всего: нет



Собственно,задача проста,один микроконтроллер(Мк1) будет только считывать нажатие кнопки ,потом отправлять другому(Мк2) .Мк2 обрабатывает полученый сигнал,делает выбор в зависимомти какая кнопка была нажата(Кнопок 9-ть) проверяет готовность эл. муфт и если всё ок ,то включает муфту и отправляет сигнал Мк1,тот в свою очередь принимает сигнал и включет соответствующий диод(То же 9-ть) .Вот сопсно упрощённый алгоритм.

так вот.конструктивно это я себе представляю,а как написать программу,не пойму . В каком виде пердаются данные через RS232 ?Что писать в программе?

Думаю использовать функции getchar(); и putchar(); 

Типа :  

      if (Kn_1==0) {Out_Data=0x01};
      if (Kn_2==0) {Out_Data=0x02};

и обрабатывать

       In_Data=getchar(); //Считывание сигнала контроллером
      
      Out_Data=In_Data;  // запоминание сигнала контроллером
      
      putchar(Out_Data); // отправка сигнала контроллером
PM MAIL WWW ICQ Skype   Вверх
UniBomb
Дата 30.7.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Цитата(Deliverance @  30.7.2008,  14:57 Найти цитируемый пост)
Думаю использовать функции getchar(); и putchar(); 

Никогда не использовал этих функций... А почему нельзя сделать так:


Код

//если необходимо, то перести интерфейсную микруху в режим передатчика
UDR = Out_data;

//по прерыванию считывать
In_Data = UDR;


???
PM MAIL ICQ Skype   Вверх
xvr
Дата 31.7.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Deliverance @ 30.7.2008,  14:57)
Собственно,задача проста,один микроконтроллер(Мк1) будет только считывать нажатие кнопки ,потом отправлять другому(Мк2) .Мк2 обрабатывает полученый сигнал,делает выбор в зависимомти какая кнопка была нажата(Кнопок 9-ть) проверяет готовность эл. муфт и если всё ок ,то включает муфту и отправляет сигнал Мк1,тот в свою очередь принимает сигнал и включет соответствующий диод(То же 9-ть) .Вот сопсно упрощённый алгоритм.


Слишком сильно упрощенный, есть масса вопросов:
  •  Насколько помехозащищенный канал RS232, нужно ли контролировать сбои при передаче данных?
  •  Устройство должно действовать строго последовательно (кнопка - передача - прием - светодиод) или должно быть 2 независимых процесса (кнопка - передача) и (прием - светодиод)?
  •  Сколько должен гореть светодиод после приема сигнала с RS232?
  •  При строго последовательной реализации должен ли быть timeout в (передача - прием)?
От ответов на эти вопросы зависит построение программы
Цитата

так вот.конструктивно это я себе представляю,а как написать программу,не пойму . В каком виде пердаются данные через RS232 ?Что писать в программе?
Данные передаются побайтово
Цитата

Думаю использовать функции getchar(); и putchar(); 
Их придется реализовать и подключить к USART

PM MAIL   Вверх
Deliverance
Дата 31.7.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.12.2007
Где: Украина,Донецк

Репутация: нет
Всего: нет



Хм .алгоритм такой . Нажатие кнопки>>обработка>>Отправка>>Ожидание ответа>>Если ответ положительный>>Зажечь и держать зажженным свето диод,пока не будет нажата другая кнопка. (Это для МК1)

МК2 получение от МК1 >>Обработка>>(Блок операций и проверок>>отправка данных МК1>>Ожидание данных от МК1

Вот наброски программы для МК1 

Код

/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.6 Professional
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:[email protected]

Project : Ft-11-Mk1
Version : 0.1
Date    : 28.03.2008
Author  : F4CG                            
Company : F4CG                            
Comments: 


Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 16,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8535.h>

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


#define Kn_1       PINB.0   //Кнопка №1
#define Kn_2       PINB.1   //Кнопка №2
#define Kn_3       PINB.2   //Кнопка №3
#define Kn_4       PINB.3   //Кнопка №4
#define Kn_5       PINB.4   //Кнопка №5
#define Kn_6       PIND.2   //Кнопка №6
#define Kn_7       PIND.3   //Кнопка №7
#define Kn_8       PIND.4   //Кнопка №8
#define Kn_9       PIND.5   //Кнопка №1
#define Led_1      PINA.0   //Лампочка №1
#define Led_2      PINA.1   //Лампочка №2
#define Led_3      PINA.2   //Лампочка №3
#define Led_4      PINA.3   //Лампочка №4
#define Led_5      PINA.4   //Лампочка №5
#define Led_6      PINA.5   //Лампочка №6
#define Led_7      PINA.6   //Лампочка №7
#define Led_8      PINA.7   //Лампочка №8
#define Led_9      PIND.7   //Лампочка №9

// Declare your global variables here

void main(void)
{
// Declare your local variables here
unsigned char Out_Data=0x00;
unsigned char In_Data=0x00;

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P 
PORTA=0xFF;
DDRA=0x00;

// 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=P 
PORTB=0x01;
DDRB=0x00;

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

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

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=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
// INT2: Off
MCUCR=0x00;
MCUCSR=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=0x67;

// 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 
    
      if (Kn_1==0) {Out_Data=0x01;}; //отправка сигнала с кнопки МК1
      if (Kn_2==0) {Out_Data=0x02;};
      if (Kn_3==0) {Out_Data=0x03;};
      if (Kn_4==0) {Out_Data=0x04;};
      if (Kn_5==0) {Out_Data=0x05;};
      if (Kn_6==0) {Out_Data=0x06;};
      if (Kn_7==0) {Out_Data=0x07;};
      if (Kn_8==0) {Out_Data=0x08;};
      if (Kn_9==0) {Out_Data=0x09;};
      
      putchar(Out_Data); // отправка сигнала с МК1
      
      In_Data=getchar(); //Приём сигнала с МК2 
      
      if (In_Data == 0x11) {Led_1=0;} ;   // Включение Лампочки
      if (In_Data == 0x12) {Led_2=0;} ;   //
      if (In_Data == 0x13) {Led_3=0;} ;   //
      if (In_Data == 0x14) {Led_4=0;} ;   //
      if (In_Data == 0x15) {Led_5=0;} ;   // 
      if (In_Data == 0x16) {Led_6=0;} ;   //
      if (In_Data == 0x17) {Led_7=0;} ;   //  
      if (In_Data == 0x18) {Led_8=0;} ;   //
      if (In_Data == 0x19) {Led_9=0;} ;   //
      
      
      };
}
           


Добавлено через 5 минут и 40 секунд
UniBomb, 

Беда в том .что я вообще не вкурсе как передовать)) Ну никогда не передавал данные от одного к другому МК.
PM MAIL WWW ICQ Skype   Вверх
UniBomb
Дата 31.7.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



xvr, ну зачем же так всё усложнять - автор же спросил только о том, как ему осуществить обмен))


Deliverance, ты про прерывания чего-нибудь слышал? Вот они тебе очень сильно понадобятся. Пускай у тебя переменная Out_Data всегда равна нулю, тогда после опроса если эта переменная не равна нулю, то тогда имеет смысл передавать данные. А так как у тебя сделано - нерациональное использование сети (если придётся наращивать систему то это может выйти боком), поэтому сделай проверку типа:

Код

if(Out_Data) //и только в случае неравности нулю отправляй эти данные
 {
   /*если надо, то переключи свою интерфейсную микросхему в режим передачи*/
   UDR = Out_Data;
 }



Затем в коде принимающего устройства:

Код

SIGNAL(SIG_UART_RECV)
{
 In_Data = UDR;
 switch(In_Data)
  {
   case 0: Led_1 = 1;
   case 0: Led_2 = 1;
   case 0: Led_3 = 1;
   case 0: Led_4 = 1;
   case 0: Led_5 = 1;
   case 0: Led_6 = 1;
   case 0: Led_7 = 1;
   case 0: Led_8 = 1;
   case 0: Led_9 = 1;
  }
}


Где SIGNAL(SIG_UART_RECV) - функция обработки прерывания по приёму данных в avr-gcc. Если ты ипользуеш другой компилятор, то эта функция будет отличаться от приведённой - смотри доки к компилятору.



Это сообщение отредактировал(а) UniBomb - 31.7.2008, 14:41
PM MAIL ICQ Skype   Вверх
xvr
Дата 1.8.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(Deliverance @ 31.7.2008,  12:45)
Хм .алгоритм такой . Нажатие кнопки>>обработка>>Отправка>>Ожидание ответа>>Если ответ положительный>>Зажечь и держать зажженным свето диод,пока не будет нажата другая кнопка. (Это для МК1)

МК2 получение от МК1 >>Обработка>>(Блок операций и проверок>>отправка данных МК1>>Ожидание данных от МК1

Вот наброски программы для МК1 

Код

/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.6 Professional
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:[email protected]

Project : Ft-11-Mk1
Version : 0.1
Date    : 28.03.2008
Author  : F4CG                            
Company : F4CG                            
Comments: 


Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 16,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/

#include <mega8535.h>

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


#define Kn_1       PINB.0   //Кнопка №1
#define Kn_2       PINB.1   //Кнопка №2
#define Kn_3       PINB.2   //Кнопка №3
#define Kn_4       PINB.3   //Кнопка №4
#define Kn_5       PINB.4   //Кнопка №5
#define Kn_6       PIND.2   //Кнопка №6
#define Kn_7       PIND.3   //Кнопка №7
#define Kn_8       PIND.4   //Кнопка №8
#define Kn_9       PIND.5   //Кнопка №1
#define Led_1      PINA.0   //Лампочка №1
#define Led_2      PINA.1   //Лампочка №2
#define Led_3      PINA.2   //Лампочка №3
#define Led_4      PINA.3   //Лампочка №4
#define Led_5      PINA.4   //Лампочка №5
#define Led_6      PINA.5   //Лампочка №6
#define Led_7      PINA.6   //Лампочка №7
#define Led_8      PINA.7   //Лампочка №8
#define Led_9      PIND.7   //Лампочка №9

// Declare your global variables here

void main(void)
{
// Declare your local variables here
unsigned char Out_Data=0x00;
unsigned char In_Data=0x00;

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P 
PORTA=0xFF;
DDRA=0x00;

// 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=P 
PORTB=0x01;
DDRB=0x00;

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

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

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=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
// INT2: Off
MCUCR=0x00;
MCUCSR=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=0x67;

// 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 
    
      if (Kn_1==0) {Out_Data=0x01;}; //отправка сигнала с кнопки МК1
      if (Kn_2==0) {Out_Data=0x02;};
      if (Kn_3==0) {Out_Data=0x03;};
      if (Kn_4==0) {Out_Data=0x04;};
      if (Kn_5==0) {Out_Data=0x05;};
      if (Kn_6==0) {Out_Data=0x06;};
      if (Kn_7==0) {Out_Data=0x07;};
      if (Kn_8==0) {Out_Data=0x08;};
      if (Kn_9==0) {Out_Data=0x09;};
      
      putchar(Out_Data); // отправка сигнала с МК1
      
      In_Data=getchar(); //Приём сигнала с МК2 
      
      if (In_Data == 0x11) {Led_1=0;} ;   // Включение Лампочки
      if (In_Data == 0x12) {Led_2=0;} ;   //
      if (In_Data == 0x13) {Led_3=0;} ;   //
      if (In_Data == 0x14) {Led_4=0;} ;   //
      if (In_Data == 0x15) {Led_5=0;} ;   // 
      if (In_Data == 0x16) {Led_6=0;} ;   //
      if (In_Data == 0x17) {Led_7=0;} ;   //  
      if (In_Data == 0x18) {Led_8=0;} ;   //
      if (In_Data == 0x19) {Led_9=0;} ;   //
      
      
      };
}
           


Во первых - нет подавления дребезга кнопок, равно как и ожидания их отпускания
Во вторых - если по каким либо причинам МК пропустит ответ от 2го МК, то вся система наглухо зависнет, так как нет никакого timeout'а ожидания ответа

Цитата

Добавлено @ 12:50
UniBomb, 

Беда в том .что я вообще не вкурсе как передовать)) Ну никогда не передавал данные от одного к другому МК.
Он же тебе написал
Код

   UDR = Out_Data;
Это все!
Ну почти все - надо удостоверится что USART готов к передаче данных (не помню, как называется соотвествующий бит)



Это сообщение отредактировал(а) xvr - 1.8.2008, 11:33
PM MAIL   Вверх
cardinal
Дата 1.8.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 8
Всего: 99



Цитата(xvr @  1.8.2008,  10:31 Найти цитируемый пост)
Во первых - нет подавления дребезга кнопок

Может антидребезг на стороне железа есть... smile 

Deliverance, делай отступы в коде. Разбей его на функции и не пихай все в main.

Посмотри тут пример с USART
http://www.pcports.ru/articles/avr6.php


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.