David_Ali
Участник*-
Постов
63 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о David_Ali
-
Звание
Участник
- День рождения 30.04.1988
-
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
#include <mega8.h> #include <delay.h> int TEMP16; int T; unsigned char temp; void main(void) { DDRB=0x00; PORTB=0xFF; DDRB = 0x00; DDRD=0xFF; PORTD=0x00; DDRC = 0x00; PORTC = 0xFF; ACSR=(1<<ACBG)|(1<<ACIE)|(1<<ACIS1)|(1<<ACIS0)|(1<<ACO);//инициализация компаратора TEMP16 = 0; while(1){ // бесконечный цикл if (PINB.1 == 1 && TEMP16 == 1) { // PORTD.3=1; // включаем 3 пин delay_ms(500); // пауза 0.5 секунды PORTD.3=0; // выключаем 3 пин TEMP16 = 0; } if (PINB.1 == 0 && TEMP16 == 0) { // PORTD.3=1; //включаем 3 пин delay_ms(500); //пауза 0.5 секунды PORTD.3=0; //выключаем 3 пин delay_ms(500); //пауза 0.5 секунды PORTD.3=1; // включаем 3 пин delay_ms(500); //пауза 0.5 секунды PORTD.3=0; //выключаем 3 пин TEMP16 = 1; } if(PINB.2 == 0 && T == 0) { PORTD.2=1; // включаем второй пин delay_ms(3000); // пауза 3 секунды PORTD.2=0; //выключаем втрой пин T = 1; } if(PINB.2==1 && T == 1) { PORTD.2=1; // включаем второй пин delay_ms(3000); //пауза 3 секунды PORTD.2=0; //выключаем втрой пин T = 0; } temp = ACSR; // читаем ACSR temp &= 0x20; // 5 бит компаратора if(temp == 0x20) // если 1 PORTD.1=1; else PORTD.1=0; // если 0 } } Здравствуйте! эта штуковина у меня для получения данных о заряде аккумулятора, нескольких "прибамбасов" в виде мигания фарами и звука сирены. вопрос почему эти фнкции выполняются поочередно, если одновременно подать 0 или 1 на оба пина PB1 и PB0, ничего не просходит, а по отдельности работает. P.S. спасибо за совет с CVavr, им реально удобно пользоватся. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Спасибо большое, я обязательно попрактикую это сегодня же, я сам дописал с горем пополам свой код, все работает нормально, даже добавил туда еще функции. Теперь стоит эта штука на борту ВАЗ2107. Заводит ее, открывает закрывает окна, блокирует двери и прочие мелочи. Хоть и мелочи, но приятно. Даже маленький дисплей от нокиа показывает температуру в салоне(датчик тмпературы dht11), потом думаю встроить ее куда нибудь в более важную часть. Пока работы много время нет, но опыт с ней и приходит. Хочу подключить ко всему этому делу gsm sim900 и пару датчиков и сигнализацию получать в виде смс, просто самоучкой быть тяжеловато немного. В принципе как и всегда. Еще раз спасибо за ответ. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Не доделанное добро это не есть добро.. Пас есть пас.. Спасибо за все. Сам разберусь. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Рабочий!! я его скомпилировал, залил в МК и все работает так как мне надо. как это не рабочий.. ну вы ребята.. мне что видео снять как он компилится?? это раз! во вторых "B" пишу потому что он в смайлик превращается тут, думал профессионалы догадаются, но видимо не догадались что б там маленькое. Спасибо за информацию! -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
#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); ISR(USART_RXC_vect) { int b; b = UDR; USART_Transmit( B ); } void USART_Init( unsigned int ubrr) { UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char)ubrr; UCSRB=(1<<RXEN)|( 1<<TXEN); UCSRB |= (1<<RXCIE); UCSRC=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|(0<<USBS)|(0<<UCSZ2)|(1<<UCSZ1)|(1<<UCSZ0); } void USART_Transmit( unsigned char data ) { while ( !(UCSRA & (1<<UDRE)) ); UDR = data; } int main(void) { char data; PORTB=0x00; DDRB=0xFF; PORTD=0x00; DDRD=0x00; USART_Init (MYUBRR); sei(); while(1) { data=UDR; if(data=='A') { PORTB=0x1; } if(data=='B') { PORTB=0x00; } } } вот это рабочий код на атмега16. на атмега восемь он не работает(естественно я меняю что надо по ДШ на мегу 8). кто знает что там нужно поменять скажите, и объясните почему!!) прошу учить, а не поучать! P.S. GGC AVRом компилирую. потому что код вижн не дает мне хекс файлов, хоть в настройках я и указываю оутпут файлы хексами. и как использовать <util/setbaud.h>?? -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Я не тот код послал. Извините. Приду домой сразу вышлю. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
В таком случае другие МК тоже не работали бы. А они то работают. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
#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); //прерывание при чтении //URSEL,UMSEL=0 асинхронный,UPM01=0 Parity нет, USBS=0 1 стоп бит,UCSZ012 = 3 8бит данных UCSRC=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|(0<<USBS)|(0<<UCSZ2)|(1<<UCSZ1)|(1<<UCSZ0); } //Функция отправки данных void USART_Transmit( unsigned char data ) { while ( !(UCSRA & (1<<UDRE)) ); //Ожидание опустошения буфера приема UDR = data; //Начало передачи данных } int main(void) { USART_Init (MYUBRR); sei();//разрешаем прерывания while(1)//вечный цикл { } } вот это рабочий пример для меги16, тут же меняю порты и регистры для меги8, беру из ДШ, ничего не работает, возвращает все символы. как думаете изза чего? -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
да нет ничего не коротит.. что то с кодом кажет не так.. или с настройками блютуз модуля.. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Да эхо работает правильно. Но дело в том что когда я его отключаю оно все равно работает :-) -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
осталное не работает, на атмеге 16 работает, а когда переделываю для 8ки не работает, от чего может быть? МК тоже разнве брал, все 8ки одно и тоже делают ( -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
не вышло опять ничего.. он все в режиме эха.. -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Спасибо сейчас проверю, ну просто на меге 16 все работает, просто там пару изменений чисто по датащиту МК -
Нужен учитель
David_Ali ответил David_Ali тема в Образование в области электроники
Ребята, ну кто нибудь скажите мне почему на меге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 ответил David_Ali тема в Образование в области электроники
Но почему же? Разве это не то? Просто мой компилятор не стал понимать некоторые вещи из тех примеров вот я взял калькулятор. :-) Читаю про Industrial Ethernet про скада прочитал. И не вижу там места для разработчика.. Это все готовые системы для пользования. А вот создать свой плк это уже почетное дело :-)