roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 20:08

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Пытаюсь при возникновении лог 1 зажечь светодиод
СообщениеДобавлено: 03 ноя 2006, 20:21 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
Мое упражнение №2
Задание такое:
На PA0 мигать светодиодом.
При получении 1 на PB0 зажечь светодиод PA6, иначе потушить PA6
При получении 0 на PB1 зажечь светодиод PA5, иначе потушить PA5
При PB0=1 и PB1=0  зажечь светодиод PA7, иначе потушить PA7

При симуляции в VMlab все ОК.  Прошиваю - все светодиоды горят. Почему?

#include <mega16.h>
#include <delay.h>

void initialization(void){
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=1 State6=1 State5=1 State4=T State3=T State2=T State1=T State0=0
PORTA=0xE0;
DDRA=0xE1;

// Port B 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
//PORTB=0x03;
//DDRB=0x00;

PORTB=0b00000000;
DDRB =0b00000011;    

TCCR0 = 0x4;

}


void LedOff(void)
{
PORTA.0=1;
PORTA.5=1;
PORTA.6=1;
}


void main(void)
{
unsigned int Flag,i;
unsigned int Timer=0;
initialization();

LedOff();

  while (1)
  {
       Flag=0;
       
       if((TIFR&0x01))  
       {
          TIFR = 0x01;  
          Timer=Timer+1;
          if(Timer==10)
          {
            PORTA.0=~PORTA.0;
            Timer=0;
          }
       }

       if(PINB.0)    
       {
          PORTA.6=0;
          Flag=Flag+1;
       }
       else PORTA.6=1;

       if(!PINB.1)    
       {
          Flag=Flag+1;
          PORTA.5=0;
       }
       else PORTA.5=1;

       if(Flag==2)  PORTA.7=0;
       else    PORTA.7=1;  
  };
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 ноя 2006, 00:41 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
Файл для VMLab

.MICRO "ATmega16"
.TOOLCHAIN "GENERIC"
.TARGET "PumpOn.hex"
.COFF "PumpOn.cof"
.SOURCE "PumpOn__.c"

.POWER VDD=5 VSS=0

.CLOCK 1meg

D1 VDD D1_NODE
R1 D1_NODE PA0 560

D2 VDD D2_NODE
R2 D2_NODE PA5 560

D3 VDD D3_NODE
R3 D3_NODE PA6 560

D8 VDD D8_NODE
R8 D8_NODE PA7 560

K0 PB0 VDD LATCHED
K1 PB1 VDD LATCHED

.PLOT V(PA0) V(PB0) V(PB1)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 ноя 2006, 06:52 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
почитай пожалуйста о методе отладки  - avr123.nm.ru/z4.htm

сделай прогу авто мигания 1 светодиодом и без кнопок и посмотри в чем дело. потом усложняй.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 ноя 2006, 20:08 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
VMLab был прав - все работает. В схеме неправиль подключил один из резистор к светодиодам. Но, на макетку добавил MAX232, вытянул LookRS232. Теперь вопрос такой: LookRS232 пишет ошибку A line-status error occurred
Выводит типа что отправлено в порт:
<D„??+§?
Хотя в порт отправляю putsf(" - PINB.0 -");
Инициализация UART (ATMega16 1MHz):

// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous

UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x06;

В LookRS232 ставлю 9600 8N1 Flow Control None


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 ноя 2006, 20:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
частота возможно мала и не стабильна если не кварц. настраивайте как в задаче 5 написано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 ноя 2006, 00:07 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
Поставил кварц 3,6864. Ошибки все равно сыпятся. Текст на экране не видно, т.е. передача идет, но символы выводятся не те, которые посылаю.

// USART Baud rate: 19200 для 3.6864 MHz
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0B;

Фьюзы:
CKOPT  выкл
CKSEL3 выкл
CKSEL2 выкл
CKSEL1 выкл
CKSEL0 выкл
SUT1 выкл
SUT0 выкл


Кстати, после установки CKOPT=0 перестали работать ATMega16 и ATMega8. В мусорку их выбрасывать или можно оживить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 ноя 2006, 10:41 
Не в сети
Аватара пользователя

Зарегистрирован: 27 июл 2005, 14:12
Сообщения: 197
Откуда: Дмитров, Москва
прог. языки: С, asm
Цитата:
Кстати, после установки CKOPT=0 перестали работать ATMega16 и ATMega8. В мусорку их выбрасывать или можно оживить?

Я как-то так прибил несколько 88 мег. Были неправильно выставлены CKSEL в результате кварц не стартовал. Теперь оживляю их по мере недобности подавая CLOCK для программирования с другой платы. Если CKOPT=0 то должно жить (по даташиту если фуз равен нулю, то он запрограммирован и наоборот)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 ноя 2006, 10:55 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
North писал(а):
Цитата:
Кстати, после установки CKOPT=0 перестали работать ATMega16 и ATMega8. В мусорку их выбрасывать или можно оживить?

Я как-то так прибил несколько 88 мег. Были неправильно выставлены CKSEL в результате кварц не стартовал. Теперь оживляю их по мере недобности подавая CLOCK для программирования с другой платы. Если CKOPT=0 то должно жить (по даташиту если фуз равен нулю, то он запрограммирован и наоборот)

Имеется PonyProg с кварцем и USB AVR910. Перепрошить не удается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 ноя 2006, 20:50 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
Поднимаю топик. Можно оживить контроллеры или нет? Думал купить параллельный программатор (схемы его не нашел), посмотрел сколько денег стоит, посчитал сколько на эти деньги смогу купить мег - получилось очень много. Проще их выкинуть. Или есть способ по оживлению?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 ноя 2006, 21:02 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
можно в мастерскую обратится чтоб востановить конфигурацию ISP программирования.

можно сделать параллельный по elm-chen  - смотри  в ссылах на avr123.nm.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 ноя 2006, 21:34 
Не в сети

Зарегистрирован: 02 ноя 2006, 11:05
Сообщения: 30
Откуда: Россия
Поиск google по avr123.nm.ru ничего не дал. Слова Elm и Chen нигде не встречаются.
http://www.google.ru/search?as_q=elm+ch ... afe=images


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 ноя 2006, 21:50 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
на  avr123.nm.ru  вот так написано:

- Проекты очень интересного талантливого человека Элм-Чена


Последний раз редактировалось avr123.nm.ru 02 фев 2007, 14:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Пытаюсь при возникновении лог 1 зажечь светодиод
СообщениеДобавлено: 02 фев 2007, 01:38 
Не в сети

Зарегистрирован: 01 май 2006, 23:00
Сообщения: 71
Откуда: Ukrain
Вы отошл и от темы вопроса, если я вас правильно понял:

dh писал(а):
Мое упражнение №2
Задание такое:
На PA0 мигать светодиодом.
При получении 1 на PB0 зажечь светодиод PA6, иначе потушить PA6
При получении 0 на PB1 зажечь светодиод PA5, иначе потушить PA5
При PB0=1 и PB1=0  зажечь светодиод PA7, иначе потушить PA7

...
}


то возможно реализовать вот так:

Код:
void main(void)
{
   initialization();

   while (1)
   {
       PORTA.6 = PORTB.0;
       PORTA.5 = ~PORTB.1;
       PORTA.7 = PORTB.0 & (~PORTB.1);
   }
}


Этот код будет работать только в CV, это не самый лучший компилятор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 фев 2007, 14:46 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Этот код не правильный !
то что задано словами он выполнять не будет.

Как правильно работать с ножками-выводами МК
в  разных компиляторах написано на  

avr123.nm.ru/z1.htm      

и советую: "Си для МК"   avr123.nm.ru/05.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 фев 2007, 00:52 
Не в сети

Зарегистрирован: 01 май 2006, 23:00
Сообщения: 71
Откуда: Ukrain
Что-то я не могу понять что ты имеешь ввиду. Будь конкрутнее!

Я в своём примере нашел только одну опечатку, надо вместо "~" ставить "!". Больше нет ошибок. В конце концов покажи мои ошибки.

Кстати я зашел на твою страницу, там так всё сделано "хорошо", что найти даже по поику не очень удается. Ты это специально?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: Google [Bot] и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO