|
Нужен учитель, Если кто-то согласен стать он-лайн учителем, прошу помочь. |
|
|
|
Mar 1 2013, 09:42
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Здравствуйте, мн по долгу службы надо освоить программирование микроконтролееров(желательно авр и пик, но авр тоже будет достаточно), если есть знающие люди, огромная просьба помочь в етом нелегком деле. Заранее спасибо всем отписавшимся.
--------------------
Viva la resistance!
|
|
|
|
|
 |
Ответов
(105 - 119)
|
Apr 23 2013, 10:10
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Цитата(ARV @ Apr 23 2013, 14:12)  не нашел там ничего. ((
--------------------
Viva la resistance!
|
|
|
|
|
Apr 23 2013, 10:40
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Цитата(ARV @ Apr 23 2013, 15:26)  Спасибо вам огромнооое )) но я решил задачу проще )) Оb00000001 + калькулятор бин хекс = if(data=='A') { PORTB=0x1;
Сообщение отредактировал David_Ali - Apr 23 2013, 10:53
--------------------
Viva la resistance!
|
|
|
|
|
Apr 23 2013, 11:16
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Цитата(ARV @ Apr 23 2013, 15:57)  если ваше спасибо я получил за то, что вынудил вас воспользоваться калькулятором, - то лучше не надо. если я добился именно этого, то оказал вам медвежью услугу, и вряд ли заслужил благодарности. да нет, что вы ) я бы не додумался до калькулятора если бы не прочитал там все, и вобще там инфа полезная.
--------------------
Viva la resistance!
|
|
|
|
|
Apr 23 2013, 12:35
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Цитата(ARV @ Apr 23 2013, 16:52)  я втайне надеялся, что мысль о калькуляторе у прочитавшего мои заметки вообще не возникнет  Но почему же? Разве это не то? Просто мой компилятор не стал понимать некоторые вещи из тех примеров вот я взял калькулятор. :-) Цитата(iosifk @ Apr 22 2013, 17:16)  Читаю про Industrial Ethernet про скада прочитал. И не вижу там места для разработчика.. Это все готовые системы для пользования. А вот создать свой плк это уже почетное дело :-)
--------------------
Viva la resistance!
|
|
|
|
|
Apr 23 2013, 18:40
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Ребята, ну кто нибудь скажите мне почему на меге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 - Apr 23 2013, 19:42
--------------------
Viva la resistance!
|
|
|
|
|
Apr 23 2013, 19:48
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(David_Ali @ Apr 23 2013, 21:40)  Ребята, ну кто нибудь скажите мне почему на меге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') { // и так далее } } }
|
|
|
|
|
Apr 23 2013, 20:00
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Цитата(_Артём_ @ Apr 24 2013, 00:48)  Интересно, а как оно должно работать если у вас в коде Спасибо сейчас проверю, ну просто на меге 16 все работает, просто там пару изменений чисто по датащиту МК
--------------------
Viva la resistance!
|
|
|
|
|
Apr 24 2013, 11:12
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
не вышло опять ничего.. он все в режиме эха..
--------------------
Viva la resistance!
|
|
|
|
|
Apr 24 2013, 11:43
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 28-02-13
Пользователь №: 75 833

|
Цитата(_Артём_ @ Apr 24 2013, 16:28)  Эхо у вас по программе и должно быть. Если хотите чтобы пропало эхо, то закоментируйте строку с USART_Transmit. Или не работает остальная программа? осталное не работает, на атмеге 16 работает, а когда переделываю для 8ки не работает, от чего может быть? МК тоже разнве брал, все 8ки одно и тоже делают (
--------------------
Viva la resistance!
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|