реклама на сайте
подробности

 
 
> Мигание диода, Возникли непонятки с алгоритмом работы программы Atmega128
N_A
сообщение Feb 23 2007, 12:09
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 23-02-07
Пользователь №: 25 610



HELP ME?!
Есть Atmega 128 и программатор (без внешнего резонатора). Среда разработки CVAVR.
Не могу ни как заставить диод мигнуть два раза с интервалом в 2сек. Перебрал уже кучу решений, все-равно толку 0. Есть два варианта кода, которые должны ЯВНО работать корректно, но нет.
Вариант 1.
#include <mega128.h>
#include <delay.h>
void main(void)
{

PORTA=0x00;
DDRA=0xF0;
PORTA.2 = 1;
PORTA.7 = 1;
PORTA.6 = 1;
while (1)
{
//PORTA.2 = 0;
if(PINA.2 == 0)
{
PORTA.7 = 0;
delay_ms(2000);
if(PINA.7 == 1)
{
PORTA.6 = 0;
delay_ms(2000);
if(PINA.6 == 1)
{
PORTA.7 = 0;
delay_ms(2000);
}
}

}

}
}
Вариант 2.

#include <mega128.h>
#include <io.h>
#include <m8_128.h>
void main(void)
{
unsigned int pause = 0;
PORTA=0xFF;
DDRA |= PA6;
DDRA |= PA7;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
PORTA |= PA6;
PORTA &=~PA7;
while(++pause < 1500);
PORTA &=~PA6;
PORTA |= PA7;
while(--pause >0);
}
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Abakt
сообщение Feb 23 2007, 14:35
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 10-01-07
Пользователь №: 24 292



Цитата(N_A @ Feb 23 2007, 12:09) *
Не могу ни как заставить диод мигнуть два раза с интервалом в 2сек.


Наверно кроме мигания у вас там еще что-то делается раз опрашиваются PIN.

Начните с описания нужного алгоритма псевдокодом - т.е. просто русским языком.

А потом запишите алгоритм на Си.

например:

0. Бесконечный цикл

1. Ждать на PA2 появления "0"

2. При появлении на PA2 появления "0" включить светодиод на на PA3 (сделать "0" на PA3)

и так далее ...

Код
// настройка МК

while(1){  // бесконечный цикл программы

while(PINA.2); //  тут пока на PA2 есть "1"  - т.е. ждем появления "0"  на PA2

//  тут будем при появлении "0"  на PA2

//  включить светодиод на на PA3 (сделать "0" на PA3)

PORTA.3 = 0;

/* далее напишите

паузу - сколько будет гореть диод,

выключите диод,

опять паузу - не горит диод,

включите второй раз диод,

пауза,

выключите диод */


while(! (PINA.2)); //  если на PA2 до сих пор "0"  подождем пока он исчезнет.

}


возможно код ошибочный, так как написан наскоро.

Простейшее тех задание, алгоритм и мигание светодиодами
на [BANNED] проверить работу программы удобно
в симуляторе VMLAB.

Сообщение отредактировал IgorKossak - Feb 28 2007, 18:26
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- N_A   Мигание диода   Feb 23 2007, 12:09
- - defunct   Если нет внешнего кристала, видать работает он у в...   Feb 23 2007, 13:43
- - kada   Для начала покажите Вашу схему подключения.   Feb 23 2007, 14:32
- - Algol   ЦитатаВ общем. Определите на какой частоте у вас з...   Feb 23 2007, 14:37
- - Abakt   для определения частоты тактовой удобно вывести на...   Feb 23 2007, 15:23
- - =GM=   Цитата(N_A @ Feb 23 2007, 09:09) HELP ME?...   Feb 23 2007, 15:37
- - Marian   У меня была похожая проблема. Оказалось, что небы...   Feb 23 2007, 21:18
- - Abakt   ИМХО сторожевик выключен по дефолту.   Feb 24 2007, 00:32
|- - bloodden   Цитата(Abakt @ Feb 24 2007, 03:32) ИМХО ...   May 5 2007, 19:16
|- - defunct   Цитата(bloodden @ May 5 2007, 21:16) А во...   May 6 2007, 02:30
|- - Marian   Цитата(defunct @ May 6 2007, 04:30) в нек...   May 7 2007, 11:21
- - Artur Nikitin   Цитата(N_A @ Feb 23 2007, 12:09) ... ...   Feb 28 2007, 10:30
- - Igor26   Цитатаа в m128 его даже нет Здрасьте! Если по...   May 7 2007, 05:22
|- - defunct   Цитата(Igor26 @ May 7 2007, 07:22) Здрась...   May 7 2007, 12:12
- - GDI   А может надо посмотреть не включен ли бит М103С? п...   May 7 2007, 12:32


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016