roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 13 апр 2009, 17:58

наверно во входы с подтяжкой.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение ALHIMIK » 13 апр 2009, 23:19

я так и думал :Yahoo!:

Добавлено спустя 2 минуты 37 секунд:
PS
не нашёл темы электроника общие вопросы
роботоспособна ли такая схема-
Вложения
aasf.JPG
Схема
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение ALHIMIK » 21 апр 2009, 21:57

Тихо сам с собою...
Разобрался со СПИ и ведущий и ведомый работают как надо :) но есть одно НО - Евстифеев пишет что вовремя предачи от мастера к слейву паралельно идёт передача от слейва к мастеру в протеусе это значение 255(от терминала в режиме слейв) как сделать так чтобы этот байт(ведомый -> ведущий ) задавался в програме ?
Пробовал в програме ведомого ставить SPDR = 0xAA; а в прерывании от спи ведущего перед отправкой следующего байта считывать SPDR но там опять таки 0xFF
Даже авр не ответит ?
Аватара пользователя
ALHIMIK
 
Сообщения: 997
Зарегистрирован: 05 окт 2008, 14:41
Откуда: СПб
прог. языки: C,Python

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение executer » 26 апр 2009, 19:57

опять трабла, не работает ни в протеусе ни в железе АЦП. немогу найти в чем проблема (ацп никогда не пользовал еще)
внешне на проце AVCC и AGND соеденены с питаловом и землей через дроссель с кондером. ползунок переменного резистора идет на ADC7 ногу.
Код: Выделить всёРазвернуть
#include <mega32.h>

#define LED1 PORTC.5
#define LED2 PORTC.6

#define FIRST_ADC_INPUT 7
#define LAST_ADC_INPUT 7
#define ADC_VREF_TYPE 0x00                             

unsigned int adc_data;
void AVR_INIT(void);

short divider = 0;


// External IRQ 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here

}

// TIMER 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x05;
// Place your code here

if((adc_data)&(0x10)) LED1 = 1;
else LED1 = 0;

divider++;
if(divider>adc_data)   // ************** вот тут в зависимости от показаний АЦП должна частота меандра на LED2 менятся
{
    divider = 0;
    LED2 =(!(LED2));
}

}

// ADC interrupt service routine
// with auto input scanning
interrupt [ADC_INT] void adc_isr(void)
{
// Read the AD conversion result
adc_data=ADCH;
// Select next ADC input
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+7;
// Start the AD conversion
ADCSRA|=0x40;
}

// Declare your global variables here

void main(void)
{
AVR_INIT();
LED2 = !!(1==1);
while (1)
      {
      // Place your code here

      };
}       

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

// Input/Output Ports initialization
// Port A 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=T
PORTA=0x00;
DDRA=0x00;

// 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
// Func7=In Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=0 State5=0 State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x60;

// Port D 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=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x05;
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: On
// INT0 Mode: Rising Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

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

// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AVCC pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xCF;

// Global enable interrupts
#asm("sei") 
}
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 26 апр 2009, 20:17

Советую выкинуть весь код не относящийся к АЦП и найти в чем дело. АЦП матером настраивал ? Если нет - то настрой мастером СРАЗУ заработает.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение executer » 26 апр 2009, 21:23

Мастером, только переделал чтобы не сканировал все ноги а только с седьмой цифровал. Переделывал вручную.
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+7;
вот эту строчку неправильно сделал. должно быть
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE);
и все заработало.
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение galex1981 » 26 апр 2009, 22:07

Иногда бывает полезно всопользоваться мастером ;)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение executer » 26 апр 2009, 23:48

1) Как повесить на прерывание вызов функции в WinAVR? Т.е. как в программе указать что эта функция будет вызыватся при какомто прерывании?
(в CVAVR вот так "interrupt [ADC_INT] void adc_isr(void){....}"? а как в WinAVR)
2) Что можно почитать по WinAVR чтобы небыло таких вопросов? И есть ли какойнибудь аналог редактора WinAVR с интерактивной справкой по F1, как в CVAVR?
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение blindman » 27 апр 2009, 01:59

1.
Код: Выделить всёРазвернуть
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(ADC_vect)
{
// ...............
}

2. Google => avr-libc manual
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 27 апр 2009, 09:30

blindman писал(а):2. Google => avr-libc manual
Ну ты послал ! Всеж у него на ПК - C:\WinAVR\doc\avr-libc
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение executer » 27 апр 2009, 09:35

Спасибо. Вечерком почитаю. :good:
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение blindman » 27 апр 2009, 09:36

avr123.nm.ru писал(а):Всеж у него на ПК - C:\WinAVR\doc\avr-libc
Понятия не имею что и где у него на ПК
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение executer » 27 апр 2009, 10:42

executer писал(а):Есть ли какойнибудь аналог редактора WinAVR с интерактивной справкой по F1, как в CVAVR?


Я так понимаю что ВинАВР это просто компилятор отрабатываюший комманды из МАКЕ файла? Т.е. код можно хоть в блокноте писать а потом через коммандную сторку запускать МАКЕ (не удобно конечно)?
Нет ли альтернатив редактору из ВинАВР, чтонибудь более специализированое на микроконтроллерном СИ (но с синтаксисом ВинАВР)?
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение boez » 27 апр 2009, 11:35

Смысл ВинАВР в том, что это просто сборка компилятора gcc, который стремится быть как можно менее "микроконтроллерным" - ведь появился он для "больших" процессоров типа х86, а уже потом был портирован для разных архитектур МК. Да, и смысл С - в том, чтобы "отвязать" программиста от микроконтроллера. А редактор (вообще-то, даже IDE), специализированный для С/С++ - ну например CodeBlocks (Eclipse рекомендовать не стану, он большой и толстый, говорят может все, но никто не говорит как его это все заставить делать :) ).
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение executer » 27 апр 2009, 11:51

О, в соселней теме (viewtopic.php?f=2&t=5106&start=30) тоже ссфлвлись на Эклипс, но не скащали что он большой. Попробую КодеБлокс для начала. Спасибо.
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4