Помогите с AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Я студент радио-технического института, были лекции по программированию в среде AVR, но препод рассказывал всё на уровне научного языка, в итоге, надо было сделать лабораторную работу по програмированию интегральной микросхемы на AVR. Никто не смог сделать, все купили, но мне не позволяют средства купить, помогите сделать лабораторную, пожалуйста. Думаю для Вас это не составит большого труда.
Мне надо разработать формирователь ступеньчатого напряжения N=256 (пуск и частота задаётся портом) на микросхеме ATmega103.
Я с другом который шарит в программировании составили вот такой код

#include <mega103>
#include <delay>
int i;
char j, s;
int main (void)
{
DDRA = 0;
DDRC = 0;
DDRB = 0xFF;
while (1)
{
s=PORTC;
if (i == 255) {i=0;} else {i++;}
if ((PORTA&1) == 0) {PORTB = i;}
while (j == s) ;
{
j++;};
}
}

Прошу посмотреть, правильно ли? И объяснить зачем тут нужна переменная j, и что означает "&" (PORTA&1), так же что означает while (1), что такое while знаю, а что в () нет.
Так же пожалуйста помогите разработать структурную схему на неё.
Реклама
nds
Друг Кота
Аватара пользователя
Сообщения: 4772
Зарегистрирован: Вс май 25, 2008 19:47:47
Откуда: РФ

Сообщение nds »

А почему бы не спросить друга программиста? :idea:
код заданию не соответствует, совсем.
2B OR NOT 2B = FF
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Точнее, так- мне написал человек, с прошлой моей работы, а с другом мы её немного поправили, сделали алгоритм на неё. На эти вопросы он ответить не может, так как подзабыл, и не в AVR програмиррует а в C++. Как так не соответствует??? Преподу показывал, он сказал что что то похожее на правильную, консультировать отказывается. Гос.экзамены на носу, надо скорее сдвать лабу. ( Помогите, пожалуйста. и с одногруппниками не поразмышлять, никто не знает... (
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

задание конкретнее дайте...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

MDamir
Мне надо разработать формирователь ступеньчатого напряжения N=256 (пуск и частота задаётся портом) на микросхеме ATmega103
Что значит "ступенчатого"? Можете целиком задание привести и схемку?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Реклама
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Задание целиком звучит так- Разработка формирователя ступенчатого напряжения N=256 (пуск и частота задаётся портом). Ни схем, ни чего нет в задании, только это предложение. Ступенчатое- напряжение растёт в ступенчатом виде с частотой заданной портом. Мне надо сделать- написать программу, нарисовать структурную схему, нарисовать алгоритм программы, разработать принципиальную схему.
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина

Сообщение Krik99 »

Если правельно понял надо изменять напряжение на пине, тогда есть смысл использовать ШИМ.
Изображение
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Понятия не имею :(
Программа которая вложена в 1 пост- не подходит??
Может её просто подправить можно?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Схема во вложении. Кварц и питание сами подключите. Будут вопросы, задавайте. Программа:

Код: Выделить всё

/*****************************************************
CodeWizardAVR V1.25.9 Professional

Chip type           : ATmega103
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 1000
*****************************************************/

#include <mega103>
#include <delay>

#define PUSK_PIN PINB&1 /*ножка порта для пуска*/

unsigned char pwm_value; //переменая для чтения порта

// Обработчик переполнения таймера Т0
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
//обновление числа заполнения
OCR0=pwm_value;
}

void main(void)
{
//--------------------------------ИНИЦИАЛИЗАЦИЯ ПЕРЕФИРИИ--------------------------//

// Port B initialization
// Func7=In Func6=In Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=0 State3=T State2=T State1=T State0=P 
PORTB=0x01;
DDRB=0x10;

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

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 250,000 kHz
// Mode: Phase correct PWM top=FFh
// OC0 output: Non-Inverted PWM
ASSR=0x00;
TCCR0=0x63;
TCNT0=0x00;
OCR0=0x00;

// 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;

// Глобальное разрешение прерываний
#asm("sei")

for (;;) //MAIN_LOOP
      {
      (PUSK_PIN)?(pwm_value=0):(pwm_value=PIND); //читаем порт, задающий коэффициент заполнения ШИМ
      delay_ms(100);  //задержка реакции
      }
}
Вложения
103.jpg
(154.98 КБ) 511 скачиваний
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

это только ШИМ?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

А что еще надо?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

куда его сувать? как связать с программой? программа которая в 1 посте правильная?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

MDamir писал(а):...как связать с программой?...
Все уже связано.
MDamir писал(а):... программа которая в 1 посте правильная?
нет...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Повторюсь, AVR нам преподавали на научном языке, я в нём не "рублю" да, так же как и мои одногруппники которые все купили. программирование вообще не преподавалось, пытался только изучать по книге.
Тут вижу- портВ4 это выход, портD похоже задаёт частоту да?
В задании переменных и задании коэфф. заполнения портов понял, далее содержание программы непонятно, из-за отсутствия знаний по прагроммированию.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Приводите куски кода которые непонятны и спрашивайте...
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Goodefine
Спасибо большое за программу. немогли бы вы ещё нарисовать алгоритм работы программы. Несмогу, опять же по причине не понимания программирования... ((
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Ура, программа заработала, No errors.
Теперь нужен только алгоритм, и структурная схема.
Goodefine, не могли бы сделать? Алгоритм хотябы.
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

мде ... задания вам дают конкретные канешно
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Goodefine писал(а): // Глобальное разрешение прерываний
#asm("sei")

for (;;) //MAIN_LOOP
{
(PUSK_PIN)?(pwm_value=0):(pwm_value=PIND); //читаем порт, задающий коэффициент заполнения ШИМ
delay_ms(100); //задержка реакции
}
}
[/code]
Объясните эти строка пожалуйста. И зачем в моём задании ШИМ? Как я помню, про него нам даже не рассказывали на лекциях.
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пн май 04, 2009 10:41:17

Сообщение MDamir »

Goodefine, смущает меня эта программа, буд-то это не то что надо.
Мне вроде как нужно типа такого-
....____|
....|
....|
............._____|
.............|
......____|
___|
И всё это без точек.
Так сказать длина ступеньки - это частота задающаяся портом.
всего ступенек N=256.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»