Jump to content

    

Нужен учитель

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

Никто не поможет, потому что не реально "научить разговаривать ребенка через интернет" и никто не захочет "учить разговаривать чужого ребенка".

Самое реальное (если есть желание) это учиться самому, начиная с азов электроники, благо на это вся литература есть, не то что раньше.

Спросите любого программиста.

Share this post


Link to post
Share on other sites
Тему перенёс. Попрошу автора не воспитывать и не переубеждать. Высказывать только конкретные предложения.

Share this post


Link to post
Share on other sites
Тему перенёс. Попрошу автора не воспитывать и не переубеждать. Высказывать только конкретные предложения.

А для чего тогда форум? Или electronix стал форумом аля Петрик? Наверное да... :cranky:

 

Share this post


Link to post
Share on other sites

Возьмите программируемое реле для простых задач, для распеределенных систем уже ПЛК. Будет легче завязать на верхний уровень при надобности. Самодельные контроллеры применять не рекомендую, подумайте о тех, кто будет обслуживать систему после Вас. На фото пример, к чему могут привести ошибки на объектах.

post-44875-1362333788_thumb.jpg

Share this post


Link to post
Share on other sites
Уважаемый, я не из кружка юных техников, по проффесии я инженер, работал и рабтаю по профилю уже немало

Я ни в коей мере не имел намерения как-то Вас обидеть. Просто я высказал конкретные вопросы, ответы на которые позволят не объяснять то, что Вы и сами знаете, и наоборот- разжевать то, что пока что Вы не проходили.

Для начала, поставьте конкретную задачу и разделите ее на несколько частей, например для простейших задач:

1. Постановка задачи

2. реализация функционирующего макета

3. Переработка и обновление техзадания по результатам испытаний макета

4. реализация опытного образца

5. испытания опытного образца

6. Документация

7. Внедрение.

 

Если у Вас есть пункт 1- замечательно. в п.2 Вы можете использовать все что угодно, хоть лап-топ с андуриной в качестве исполнительного механизма.

про выбор процессора можно и не думать до третьего пункта плана.

 

 

P.S. А почему Вы так отрицательно к юным техникам относитесь? Лично я из них, и журнал мне родители выписывали, и на станцию ЮТ ходил, и на коллективной радиостанции там же зависал- и ни чуточки не стесняюсь этой страницы своей жизни :)

 

P.P.S. И присоединяюсь к мнению,, что свой контроллер не делайте, берите готовое. Это позволит сэкономить несколько лет. Свое имеет смысл делать только в качестве довесков к покупному: исполнительные устройства, входные преобразователи.... Кстати, чем сам Ардуино не нравится? Судя по количеству и диапазону примеров применения- вполне себе железяка для мелкого самиздата. сейчас что-то в этом формате на STM32 вроде бы кто-то делает(или начинает делать).

Share this post


Link to post
Share on other sites
Здравствуйте, мн по долгу службы надо освоить программирование микроконтролееров(желательно авр и пик, но авр тоже будет достаточно), если есть знающие люди, огромная просьба помочь в етом нелегком деле.

Заранее спасибо всем отписавшимся.

David_Ali, по мере продвижения в своем самообучении, задавайте вопросы в форум. Скорее всего они будут конкретными, поэтому больше вероятности, что Вам ответят на них.

Share this post


Link to post
Share on other sites

Ну, чтобы учить, нужно тратить бесценное время. У мну нету. Раньше, когда работы не было, мог.. И то в основном на атмеловском ассемблере.

Если есть желание и соображение - почему бы и нет? Только если серьезно заниматься - легко это не будет.

Вспомнил кино Куросавы "7 самураев" - "Но у нас нечем платить. Кто согласится работать за еду? - нужно искать голодных самураев" :)

 

У меня есть подозрение, что Вы из моторов, по классификации одного"сам себе профессора". Если оно верное - то будет эффективнее работать с кем-то вроде меня. Лично со мной не получится, но такого народу немало. Шоб Вы знали, разделение труда придумали в основном из-за ограниченной емкости моска по данным/алгоритмам.

Share this post


Link to post
Share on other sites

David_Ali, даю бесплатный совет: посмотрите этот форум, найдите по сообщениям того, кто с вашей точки зрения вам наиболее по душе, и начинайте его осторожно долбить по почте, через личные сообщения и т.п. общедоступные каналы. дескать, я глубоко проникся уважением к вашему авторитету в области программирования микроконтроллеров, и скромно прошу вас ответить на вопрос новичка - и задаете вопрос. потом второй вопрос. потом третий... и т.д. с первым "кандидатом в сенсэи" не получится - обращайтесь ко второму (или ко многим сразу, но через приватный канал общения)...

 

как правило, большинство здесь находящихся

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

б) страдающие частично манией величия или избытком знаний, который необходимо на кого-то излить;

в) сочувствующие начинающим.

 

найдите подход к жертве - и вам будут помогать задаром, главное, не перегните палку :) я сам пару раз попадал на эту удочку :)

Share this post


Link to post
Share on other sites
Я ни в коей мере не имел намерения как-то Вас обидеть. Просто я высказал конкретные вопросы, ответы на которые позволят не объяснять то, что Вы и сами знаете, и наоборот- разжевать то, что пока что Вы не проходили.

Для начала, поставьте конкретную задачу и разделите ее на несколько частей, например для простейших задач:

1. Постановка задачи

2. реализация функционирующего макета

3. Переработка и обновление техзадания по результатам испытаний макета

4. реализация опытного образца

5. испытания опытного образца

6. Документация

7. Внедрение.

 

Если у Вас есть пункт 1- замечательно. в п.2 Вы можете использовать все что угодно, хоть лап-топ с андуриной в качестве исполнительного механизма.

про выбор процессора можно и не думать до третьего пункта плана.

 

 

P.S. А почему Вы так отрицательно к юным техникам относитесь? Лично я из них, и журнал мне родители выписывали, и на станцию ЮТ ходил, и на коллективной радиостанции там же зависал- и ни чуточки не стесняюсь этой страницы своей жизни :)

 

P.P.S. И присоединяюсь к мнению,, что свой контроллер не делайте, берите готовое. Это позволит сэкономить несколько лет. Свое имеет смысл делать только в качестве довесков к покупному: исполнительные устройства, входные преобразователи.... Кстати, чем сам Ардуино не нравится? Судя по количеству и диапазону примеров применения- вполне себе железяка для мелкого самиздата. сейчас что-то в этом формате на STM32 вроде бы кто-то делает(или начинает делать).

Я не отрицательно отношусь к "юным техникам" ) просто хочу сказать что я уже порядком выше юного техника. Кстати уже прочитал книгу Ревича Юрия, написал и скомпилировал программку, весело, атмегу8 в сочетании с релейным модулем, которая попеременно включает три реле, с заданным промежутком времени, как раз пригодилось. теперь вожусь с UART. чего то не получается.

 

 

David_Ali, даю бесплатный совет: посмотрите этот форум, найдите по сообщениям того, кто с вашей точки зрения вам наиболее по душе, и начинайте его осторожно долбить по почте, через личные сообщения и т.п. общедоступные каналы. дескать, я глубоко проникся уважением к вашему авторитету в области программирования микроконтроллеров, и скромно прошу вас ответить на вопрос новичка - и задаете вопрос. потом второй вопрос. потом третий... и т.д. с первым "кандидатом в сенсэи" не получится - обращайтесь ко второму (или ко многим сразу, но через приватный канал общения)...

 

как правило, большинство здесь находящихся

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

б) страдающие частично манией величия или избытком знаний, который необходимо на кого-то излить;

в) сочувствующие начинающим.

 

найдите подход к жертве - и вам будут помогать задаром, главное, не перегните палку :) я сам пару раз попадал на эту удочку :)

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

 

Ну, чтобы учить, нужно тратить бесценное время. У мну нету. Раньше, когда работы не было, мог.. И то в основном на атмеловском ассемблере.

Если есть желание и соображение - почему бы и нет? Только если серьезно заниматься - легко это не будет.

Вспомнил кино Куросавы "7 самураев" - "Но у нас нечем платить. Кто согласится работать за еду? - нужно искать голодных самураев" :)

 

У меня есть подозрение, что Вы из моторов, по классификации одного"сам себе профессора". Если оно верное - то будет эффективнее работать с кем-то вроде меня. Лично со мной не получится, но такого народу немало. Шоб Вы знали, разделение труда придумали в основном из-за ограниченной емкости моска по данным/алгоритмам.

)) а что за классификация? можно ли узнать?

 

Возьмите программируемое реле для простых задач, для распеределенных систем уже ПЛК. Будет легче завязать на верхний уровень при надобности. Самодельные контроллеры применять не рекомендую, подумайте о тех, кто будет обслуживать систему после Вас. На фото пример, к чему могут привести ошибки на объектах.

нк на фото предприятие по крупнее, я пока за такие не буду браться, для таких у нас есть плк митсубишивские

 

Ну, чтобы учить, нужно тратить бесценное время. У мну нету. Раньше, когда работы не было, мог.. И то в основном на атмеловском ассемблере.

Если есть желание и соображение - почему бы и нет? Только если серьезно заниматься - легко это не будет.

Вспомнил кино Куросавы "7 самураев" - "Но у нас нечем платить. Кто согласится работать за еду? - нужно искать голодных самураев" :)

 

У меня есть подозрение, что Вы из моторов, по классификации одного"сам себе профессора". Если оно верное - то будет эффективнее работать с кем-то вроде меня. Лично со мной не получится, но такого народу немало. Шоб Вы знали, разделение труда придумали в основном из-за ограниченной емкости моска по данным/алгоритмам.

а на счет времени, я думаю что много его у вас не заберу если будете помогать, посоветуйте литературу, по мере изученя буду описывать задачи поставленные передо мной, и описывать то что не получилось сделать, это займет думаю столько же времени сколько и отписаться тут ) а для аналогии с Куросавой я бы привел цитату из фильма гений дзюдо "Он не умен. Но он серьезно настроен." ))

 

Ну, чтобы учить, нужно тратить бесценное время. У мну нету. Раньше, когда работы не было, мог.. И то в основном на атмеловском ассемблере.

Если есть желание и соображение - почему бы и нет? Только если серьезно заниматься - легко это не будет.

Вспомнил кино Куросавы "7 самураев" - "Но у нас нечем платить. Кто согласится работать за еду? - нужно искать голодных самураев" :)

 

У меня есть подозрение, что Вы из моторов, по классификации одного"сам себе профессора". Если оно верное - то будет эффективнее работать с кем-то вроде меня. Лично со мной не получится, но такого народу немало. Шоб Вы знали, разделение труда придумали в основном из-за ограниченной емкости моска по данным/алгоритмам.

а на счет времени, я думаю что много его у вас не заберу если будете помогать, посоветуйте литературу, по мере изученя буду описывать задачи поставленные передо мной, и описывать то что не получилось сделать, это займет думаю столько же времени сколько и отписаться тут ) а для аналогии с Куросавой я бы привел цитату из фильма гений дзюдо "Он не умен. Но он серьезно настроен." ))

 

Никто не поможет, потому что не реально "научить разговаривать ребенка через интернет" и никто не захочет "учить разговаривать чужого ребенка".

Самое реальное (если есть желание) это учиться самому, начиная с азов электроники, благо на это вся литература есть, не то что раньше.

Спросите любого программиста.

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

Edited by David_Ali

Share this post


Link to post
Share on other sites
теперь вожусь с UART. чего то не получается.

Установите себе CodeVision, сгенерируйте базовый проект для вашей Меги с UART и посмотрите, как он сделан:

 

/*****************************************************
CodeWizardAVR V1.24.8d Professional
Clock frequency     : 8,000000 MHz
*****************************************************/

#include <mega8.h>

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)

// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

// USART Transmitter buffer
#define TX_BUFFER_SIZE 8
char tx_buffer[TX_BUFFER_SIZE];

#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif

// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
   {
   --tx_counter;
   UDR=tx_buffer[tx_rd_index];
   if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
   };
}

#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
   {
   tx_buffer[tx_wr_index]=c;
   if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
   ++tx_counter;
   }
else
   UDR=c;
#asm("sei")
}
#pragma used-
#endif

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

// Declare your global variables here

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

// Input/Output Ports initialization
// Port B 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 
PORTB=0x00;
DDRB=0xFF;

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

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=1 State0=P 
PORTD=0x03;
DDRD=0xFE;

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

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

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here

      };
}

Share this post


Link to post
Share on other sites

Вот например, есть датчик инфракрасный уровнемер, принцип его работы я знаю, как с него считывать показания как их посчитать и тд. и тп., но как это будет выглядеть на асмб для авр например, без понятия, ну не то чтобы совсем без без понятия, но конкретно что и куда надо писать, как объяснит МК что это анлоговый сигнал, что при падении там вольтажа в определенной пропорциональности надо выполнить ту или иную функцию. как то наверное надо его отцифровывать, там как я понял есть 10 разрядный канал в атмеге8, значит надо посчитать какие показания он даст при "выборке" и как то программно дать ему понять что с ними делать. одним словом я знаю что ему сказать (микроконтроллеру), но не знаю как сказать ему на его языке

 

Установите себе CodeVision, сгенерируйте базовый проект для вашей Меги с UART и посмотрите, как он сделан:

 

 

 

спасибо, сейчас разберу )

Edited by David_Ali

Share this post


Link to post
Share on other sites
Вот например, есть датчик инфракрасный уровнемер, принцип его работы я знаю, как с него считывать показания как их посчитать и тд. и тп., но как это будет выглядеть на асмб для авр например, без понятия, ну не то чтобы совсем без без понятия, но конкретно что и куда надо писать, как объяснит МК что это анлоговый сигнал, что при падении там вольтажа в определенной пропорциональности надо выполнить ту или иную функцию. как то наверное надо его отцифровывать, там как я понял есть 10 разрядный канал в атмеге8, значит надо посчитать какие показания он даст при "выборке" и как то программно дать ему понять что с ними делать. одним словом я знаю что ему сказать (микроконтроллеру), но не знаю как сказать ему на его языке

Выход у этого уровнемера аналоговый ? Если да, то нужно задействовать АЦП. Дальше потребуется цифровая обработка сигнала от АЦП, в той или иной форме. Вот в этой обработке основная сложность и есть. И писать, кстати, наверное лучше будет на Си ...

P.S. Мой исходник из вашего ответа уберите, а то страничку стало трудно читать ...

Share this post


Link to post
Share on other sites
Установите себе CodeVision, сгенерируйте базовый проект для вашей Меги с UART и посмотрите, как он сделан:
или вот для примера мой вариант для не-CodeVision: http://www.simple-devices.ru/articles/7-so...navr-console-io , возможно, это будет даже проще для начала.

 

 

Share this post


Link to post
Share on other sites
или вот для примера мой вариант для не-CodeVision: http://www.simple-devices.ru/articles/7-so...navr-console-io , возможно, это будет даже проще для начала.
не могу редактировать ( пропала эта кнопка

 

Выход у этого уровнемера аналоговый ? Если да, то нужно задействовать АЦП. Дальше потребуется цифровая обработка сигнала от АЦП, в той или иной форме. Вот в этой обработке основная сложность и есть. И писать, кстати, наверное лучше будет на Си ...

P.S. Мой исходник из вашего ответа уберите, а то страничку стало трудно читать ...

Да Аналоговый, модель http://www.sharpsma.com/webfm_send/1487 вот такая, почти что. ту которая у меня найти не смог.

 

Выход у этого уровнемера аналоговый ? Если да, то нужно задействовать АЦП. Дальше потребуется цифровая обработка сигнала от АЦП, в той или иной форме. Вот в этой обработке основная сложность и есть. И писать, кстати, наверное лучше будет на Си ...

P.S. Мой исходник из вашего ответа уберите, а то страничку стало трудно читать ...

Я чего то не разобрал где компилировать в codevsion, я авр студио прользовалься до этого. и то для ассемблера.

Share this post


Link to post
Share on other sites
Я чего то не разобрал где компилировать в codevsion, я авр студио прользовалься до этого. и то для ассемблера.

"CTRL" + "F9", или "Project" -> "Build all"

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this