roboforum.ru

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

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

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

osc » 20 дек 2009, 23:22

к561ЛА7, аврки как и все статики боятся, так что осторожнее, макетку с работающим контроллером лучше не лапать ))

Вопрос к знатокам CVAVR, как перевести переменную типа char в int ?
Требуется получить байт по uart, перевести в int и записать в массив...

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

avr123.nm.ru » 21 дек 2009, 00:12

вот так:
Код: Выделить всёРазвернуть
((int) переменная другого типа)


Рекомендую почитаь - Язык Си для микроконтроллеров - http://avr123.nm.ru/05.htm

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

blindman » 21 дек 2009, 09:02

((int) переменная другого типа)

не все так просто. Попробуйте запустить вот такую простую программу.
Код: Выделить всёРазвернуть
#include <stdint.h>
#include <stdio.h>

signed char b1 = 0xFF;
unsigned char b2 = 0xFF;
int main(void)
{
   printf("%d\n", (int)b1);
   printf("%d\n", (int)b2);
   return 0;
}


к561ЛА7, что из себя представляет "байт"? Со знаком? Без знака?

Добавлено спустя 8 минут 8 секунд:
Рекомендую почитать книгу "Язык программирования C", авторы Брайан Керниган и Деннис Ритчи

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

avr123.nm.ru » 21 дек 2009, 11:23

:lol: :lol: я эту книгу и имел ввиду :D
Вложения
Си для AVR.png

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

к561ЛА7 » 21 дек 2009, 12:46

Я теперь боюсь вообще эти фьюзы менять.

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

avr123.nm.ru » 22 дек 2009, 01:08

Просто сделай скриншот как ты хочешь поставить фьюзы и напиши какие настройки хочешь получить и выложи сюда картинку, спроси совета.

Есть даже топик такой с такими картинками fuse AVR.

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

к561ЛА7 » 23 дек 2009, 23:36

Уважаемые трудяги!

Как вызвать обработчик внешненго прерывания ,
например по низкому уровню сигнала на INT0 ?

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

yak-40 » 23 дек 2009, 23:46

к561ЛА7 писал(а):Как вызвать обработчик внешненго прерывания ,
например по низкому уровню сигнала на INT0 ?

А что, А. В. Евстифеева почитать религия не позволяет :D

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

avr123.nm.ru » 24 дек 2009, 00:19

к561ЛА7 писал(а): Как вызвать обработчик внешненго прерывания , например по низкому уровню сигнала на INT0 ?


Прерывания в AVR - принцип работы, примеры объявления прерываний в разных компиляторах, пример для симуляции прерываний от кнопочек - http://avr123.nm.ru/03.htm

Прерывания в AVR удобно настраивать мастером кода CodeVisionAVR :D

Добавлено спустя 1 минуту 41 секунду:
yak-40 писал(а): почитать религия не позволяет :D


Хотябы ПЕРВУЮ страничку топика в котором задается вопрос.

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

к561ЛА7 » 24 дек 2009, 00:24

Религия Ефстивеева читать конечно позволяет. Целыми днями сижу и читаю Евстифеева, датащиты, курс АВР123. Но при усвоении ного материала, как обнаружили ученые , в головном мозге образуются глиелиновые волокна. И пока этот процесс не закончен новому материалу укладываться некуда.
Посему прошу помощи.

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

yak-40 » 24 дек 2009, 00:39

к561ЛА7 писал(а):Как вызвать обработчик внешненго прерывания ,
например по низкому уровню сигнала на INT0 ?

Ну где то так :)
Код: Выделить всёРазвернуть
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here

}
void main(void)
{
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0x40;
// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here

      };
}

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

statistic » 24 дек 2009, 00:49

в кодВиженАВР есть генератор первоначального кода,там вкладка "external IRQ".По ней настроить быстрей всего.А ,конкретно что не понятно?
Если сама функция ,то так это выглядит в выше упомянутом "кодВиженАВР":
Код: Выделить всёРазвернуть
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here

}

если настройка то примерно так:
Код: Выделить всёРазвернуть
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: Off
GICR|=0x40;
MCUCR=0x00;
GIFR=0x40;
// Global enable interrupts
#asm("sei")


Добавлено спустя 35 секунд:
Опередили.

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

avr123.nm.ru » 24 дек 2009, 00:54

:ROFL: CodevisionAVR - популярен !

Кодом народ так и сыпит, так и сыпит ... прям как дед морозы подарками ! :ROFL:

Действительно, несколько щелчков мышкой и копипасти готовый И ГЛАВНОЕ РАБОЧИЙ код.

ПРОЧИТАЙТЕ ПОЖАЛУЙСТА в даташите ( аль еще где ) - что означает каждая строчка кода созданого мастером !
ЭТО НУЖНО ВАМ !
Тем кто хочет научится и понять.

Перевод на корявый русский - http://translate.ru

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

statistic » 24 дек 2009, 01:07

на корявый то зачем?у Евстифеева на нормальный переведено.

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

к561ЛА7 » 25 дек 2009, 14:04

Спасибо, Товариши!
Да будет Ваи м детям вашим полное благосостояние!
И да не будет сие в в веках растрачено!
Вот уже 2й или 3й день бьюсь, программа отрабатыват внешнее прерываниеи и зацикливается в нем.
Задаю первое прерывание по низкому уровню
пишу, например, в обработчике прерывания
PORTD.7 ^= 1;
дак она дергает ногой пока висит низкий уровень, как выслкий - не дергает, а как низкий дергает опять и больше никуда не идет

а хотелось бы чтобы программа дергула один раз и ушла в обратно в основной цикл

или хотябы выполнила один раз и ждала пока новый импульс придет.
Все перечитал ничего не пойму.
Помогите плиз.


cron
Rambler\'s Top100 Mail.ru counter