Пытаюсь при возникновении лог 1 зажечь светодиод

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

Пытаюсь при возникновении лог 1 зажечь светодиод

Сообщение dh » 03 ноя 2006, 20:21

Мое упражнение №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;  
  };
}
dh
 
Сообщения: 30
Зарегистрирован: 02 ноя 2006, 11:05
Откуда: Россия

Сообщение dh » 04 ноя 2006, 00:41

Файл для 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)
dh
 
Сообщения: 30
Зарегистрирован: 02 ноя 2006, 11:05
Откуда: Россия

Сообщение avr123.nm.ru » 04 ноя 2006, 06:52

почитай пожалуйста о методе отладки  - avr123.nm.ru/z4.htm

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

Сообщение dh » 04 ноя 2006, 20:08

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
dh
 
Сообщения: 30
Зарегистрирован: 02 ноя 2006, 11:05
Откуда: Россия

Сообщение avr123.nm.ru » 04 ноя 2006, 20:59

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

Сообщение dh » 10 ноя 2006, 00:07

Поставил кварц 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. В мусорку их выбрасывать или можно оживить?
dh
 
Сообщения: 30
Зарегистрирован: 02 ноя 2006, 11:05
Откуда: Россия

Сообщение North » 10 ноя 2006, 10:41

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

Я как-то так прибил несколько 88 мег. Были неправильно выставлены CKSEL в результате кварц не стартовал. Теперь оживляю их по мере недобности подавая CLOCK для программирования с другой платы. Если CKOPT=0 то должно жить (по даташиту если фуз равен нулю, то он запрограммирован и наоборот)
Аватара пользователя
North
 
Сообщения: 197
Зарегистрирован: 27 июл 2005, 14:12
Откуда: Дмитров, Москва
прог. языки: С, asm

Сообщение dh » 10 ноя 2006, 10:55

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

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

Имеется PonyProg с кварцем и USB AVR910. Перепрошить не удается.
dh
 
Сообщения: 30
Зарегистрирован: 02 ноя 2006, 11:05
Откуда: Россия

Сообщение dh » 23 ноя 2006, 20:50

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

Сообщение avr123.nm.ru » 23 ноя 2006, 21:02

можно в мастерскую обратится чтоб востановить конфигурацию ISP программирования.

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

Сообщение dh » 23 ноя 2006, 21:34

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

Сообщение avr123.nm.ru » 23 ноя 2006, 21:50

на  avr123.nm.ru  вот так написано:

- Проекты очень интересного талантливого человека Элм-Чена
Последний раз редактировалось avr123.nm.ru 02 фев 2007, 14:48, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Пытаюсь при возникновении лог 1 зажечь светодиод

Сообщение SS » 02 фев 2007, 01:38

Вы отошл и от темы вопроса, если я вас правильно понял:

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, это не самый лучший компилятор.
SS
 
Сообщения: 71
Зарегистрирован: 01 май 2006, 23:00
Откуда: Ukrain

Сообщение avr123.nm.ru » 02 фев 2007, 14:46

Этот код не правильный !
то что задано словами он выполнять не будет.

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

avr123.nm.ru/z1.htm      

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

Сообщение SS » 22 фев 2007, 00:52

Что-то я не могу понять что ты имеешь ввиду. Будь конкрутнее!

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

Кстати я зашел на твою страницу, там так всё сделано "хорошо", что найти даже по поику не очень удается. Ты это специально?
SS
 
Сообщения: 71
Зарегистрирован: 01 май 2006, 23:00
Откуда: Ukrain

След.

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

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

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