Например TDA7294

Форум РадиоКот • Просмотр темы - AVR studio в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб авг 23, 2025 00:32:52

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3179 ]     ... , , , 63, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Сб янв 19, 2013 18:09:09 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
как как? двойной клик на ошибке и телепортация курсора к месту ошибки обеспечена, судя по всему кто то забыл нажать шифт при наборе текста и поэтому такая фень вышла.
Обратите внимание на то, что я написал переменную именно так, как у вас в ошибке, а вы написали так, как у вас в функции применяется.
Язык Си чувствителен к регистру символов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Сб янв 19, 2013 19:43:06 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 10:26:43
Сообщений: 141
Откуда: Пинск
Рейтинг сообщения: 0
Именно RDat у меня и применяется сейчас, но ошибка не пропала. А маленькими было написано только для проверки, может я в чём-то ошибся. То что ошибся - факт, но не в регистре ошибка.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Сб янв 19, 2013 21:16:35 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Блин ошибка только в одном месте, не важно в каком регистре запись, главное, чтобы она по всему тексту соответствовала формату
1 объявление (int RDat;)
2 назначение (RDat=122;)
3 использование.(lcd_print(RDat);)

Если второй можно опустить совмещая со первым (int RDat=122;), то первый пропускать никак нельзя.
Когда встречается переменная в другом регистре в любом символе(rdat,Rdat,rDAT,rDat), то она считается новой и ей нужен отдельный первый пункт.
infinity19891 писал(а):
То что ошибся - факт, но не в регистре ошибка.

Ну нам видно только те ошибки, которые вы сами нам показали, если вы их специально делаете, как мы ТУТ вам ТАМ поможем?
vitalik_1984 писал(а):
двойной клик на ошибке и телепортация курсора к месту ошибки обеспечена,

Делайте двойной клик и думайте сами что в коде не так - мы его не видим.
Цитата:
А маленькими было написано только для проверки,
Где было написано? В функции или в объявлении? Или в той строке где ошибка?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Сб янв 19, 2013 23:27:53 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 10:26:43
Сообщений: 141
Откуда: Пинск
Рейтинг сообщения: 0
Так, покопался по коду программы, и не нашел объявления RDat. Эту часть программы выкусил из другого исходника, но и в том исходнике не нашёл объявления. Мне не первый раз попадаются исходники, с подобными ошибками. Как например были ошибки при компиляции исходника, из-за отсутствия void. Т.е. должно было быть так:
Код:
void main(void)
{
//текст программы
}

А было:
Код:
void main()
{
//текст программы
}


Повторюсь, это не первый раз уже так. Так вот изначальный вопрос заключается в том, как правильно объявить RDat?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Вс янв 20, 2013 00:37:30 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Э, батенька, вам похоже совсем вдругую тему нужно.
Есть прекрасная книга от создателей си
Керниган и Ричи

Между прочим я уже приводил пример как нужно правильно делать
vitalik_1984 писал(а):
int RDat=122;
Во многих Работающих примерах тоже можно посмотреть.
Код:
тип_переменной имя_переменной =[ начальное_значение];

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Вс янв 20, 2013 00:57:56 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 10:26:43
Сообщений: 141
Откуда: Пинск
Рейтинг сообщения: 0
Спасибо, всё получилось!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Чт янв 24, 2013 18:55:00 
Родился

Зарегистрирован: Чт янв 24, 2013 18:44:59
Сообщений: 4
Рейтинг сообщения: 0
Все привет! Написал я тут простенькую программу для лабораторного блока питания на ATmega8. Вольтметр+Амперметр, семи сегментная индикация на сдвиговых регистрах, контроль за перегревам на DS18B20. Писал на CVAVR, в общем-то всё работает, только с датчик маленькие проблемы, но вопрос не в этом.
Понадобилось мне перевести в AVR Studio, вот тут и началось. Переправил обработчики прерываний, обращения к регистрам порта, код скомпилировался, без ошибок и варненгов, но конечно же не заработал :)
Я решил его прописывать постепенно, написал в хлам простую программу, которая через регистр HC164 должна зажигать все сегменты, она то же не заработала, раньше в студии кроме мигания диодом нечего не писал, не понимаю в чём дело. Подскажите где что не так, в моём демо проекте. Заранее спасибо.


Вложения:
Foto.JPG [150.82 KiB]
Скачиваний: 467
AVR Studio+Proteus.rar [55.68 KiB]
Скачиваний: 153
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Чт янв 24, 2013 20:13:54 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 11
Зарегистрирован: Вт фев 21, 2012 20:42:26
Сообщений: 135
Откуда: Санкт-Петербург, Россия, Земля
Рейтинг сообщения: 0
В функции demo получается, что все разряды порта D сбрасываются.
Код:
    PORTD = 0<<PD3;         // Ставим в 0                                           
    PORTD = 1<<PD3;         // Ставим в 1

Так наверно немного лучше будет
Код:
    PORTD &= ~(1<<PD3);         // Ставим в 0                                           
    PORTD |= 1<<PD3;         // Ставим в 1

_________________
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 02:48:07 
Родился

Зарегистрирован: Чт янв 24, 2013 18:44:59
Сообщений: 4
Рейтинг сообщения: 0
И в прямь заработало, вот блин :)) Спасибо!
Только не понятно я же конкретно побитово обращаюсь к 3 выводу?
Код:
  PORTD = 0<<PD3;         // Ставим в 0                                           
PORTD = 1<<PD3;         // Ставим в 1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 06:41:19 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7013
Откуда: Ижевск
Рейтинг сообщения: 0
Ой ли? Смотрите откомпилированное:
Код:
                ; 0000 0039 PORTD = 0<<PD3;
0000a6 e0e0         LDI  R30,LOW(0)
0000a7 bbe2         OUT  0x12,R30
                 ; 0000 003A PORTD = 1<<PD3;
0000a8 e0e8         LDI  R30,LOW(8)
0000a9 bbe2         OUT  0x12,R30

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 08:57:25 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 1
ARV.net писал(а):
я же конкретно побитово обращаюсь к 3 выводу?
Код:
PORTD = 0<<PD3;         // Ставим в 0                                           
PORTD = 1<<PD3;         // Ставим в 1
За базар ответишь! :))) :)))
В Вашем выражении Вы присваиваете значение порту, а не работаете с битами.
Выражение "0<<PD3" определяет константу, которая вычисляется по формуле "сдвинуть значение "ноль"(0) влево(<<) PD3 раз." Именно так. PD3 - это число! оно равно 3(трем). получается "сдвинуть значение "ноль" влево 3 раза". Получается константа = 00000000 = 0x00
Аналогично 1<<PD3 = "сдвинуть единицу влево 3 раза" = 00001000 = 0x08
Следовательно PORTD = 0<<PD3 соответствует выражению PORTD = 0x00;
Аналогично PORTD = 1<<PD3 соответствует выражению PORTD = 0x08;

Чтобы работать с битами нужно накладывать маску на текущее состояние порта.
Популярнее: Считываете значение порта, сбрасываете/устанавливаете нужные биты, записываете обратно в порт.
Все это можно записать в одну строчку :
1) PORTD = PORTD | (1<<PD3) - Установка бита PD3
2) PORTD = PORTD & ~(1<<PD3) - Сброс бита PD3

Если Вы заметили, оба эти выражения используют исходное состояние порта, для записи в него же, после некоторых изменений значения. Язык Си в таких случаях имеет сокращение, позволяющее опустить повторное упоминание переменной в выражении справа путем переноса производимой операции влево за знак равенства.
Тогда
PORTD = PORTD | (1<<PD3) соответствует выражению PORTD |= (1<<PD3)
PORTD = PORTD & ~(1<<PD3) соответствует выражению PORTD &= ~(1<<PD3)

Вообще говоря это азы Си и никоим образом не относится к AVRStudio 4. Ай-яй-яй! Матчасть учить надо!

_________________
Ставим плюсы: )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 12:47:15 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19768
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
При том, что на АСМе можно дёргать отдельными ногами командами sbi и cbi. Почему компилятор не применяет их?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 13:12:37 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
применяет еще как:
Код:
  while(1)
  {
    PORTB |= 4;
    PORTB &= ~4;
  }
Код:
  while(1)
  {
    PORTB |= 4;
  26:   c2 9a          sbi   0x18, 2   ; 24
    PORTB &= ~4;
  28:   c2 98          cbi   0x18, 2   ; 24
  2a:   fd cf          rjmp   .-6         ; 0x26 <main+0x4>


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 13:30:09 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19768
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А если 2 бита, он сразу перейдёт на LDI-OUT? :)

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 14:02:33 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 630
Откуда: Жуковский
Рейтинг сообщения: 0
если должны появиться одновременно:
Код:
    PORTB |= 6;
  26:   88 b3          in   r24, 0x18   ; 24
  28:   86 60          ori   r24, 0x06   ; 6
  2a:   88 bb          out   0x18, r24   ; 24
    PORTB &= ~6;
  2c:   88 b3          in   r24, 0x18   ; 24
  2e:   89 7f          andi   r24, 0xF9   ; 249
  30:   88 bb          out   0x18, r24   ; 24
если по очереди, то:
Код:
    PORTB |= 4;
  26:   c2 9a          sbi   0x18, 2   ; 24
    PORTB |= 2;
  28:   c1 9a          sbi   0x18, 1   ; 24
    PORTB &= ~4;
  2a:   c2 98          cbi   0x18, 2   ; 24
    PORTB &= ~2;
  2c:   c1 98          cbi   0x18, 1   ; 24


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 14:04:16 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19768
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В общем, логично.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 15:27:49 
Родился

Зарегистрирован: Чт янв 24, 2013 18:44:59
Сообщений: 4
Рейтинг сообщения: 0
Ну теперь почти всё ясно,
Я в CVAVR использовал такую функцию последовательный вывод на индикацию
Код:
void amper_print(unsigned int data)
{
    unsigned char i;                                                   
    unsigned int  digit;
    if (rank_counter == 0){       //Если разряд 1
      digit = buf[data] | (1<<0); //ставим после него точку
      }
    else{
        digit = buf[data];        //Берём число из массива
        }                                                   
    for( i=0; i<8; i++){          //и последовательно выводим
       PORTD.2 = digit & 1<<i;
       PORTD = (0<<3);            //Выстовлям такт в лог.0                                                                                 
       PORTD = (1<<3);            //затем в 1
       }                                       
}   


догнать не могу как перевести в AVR studio строчку
Код:
 PORTD.2 = digit & 1<<i;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 18:09:50 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 21
Рейтинг сообщений: 143
Зарегистрирован: Сб фев 21, 2009 13:11:40
Сообщений: 1900
Откуда: Москва
Рейтинг сообщения: 0
if (digit & (1<<i))
PORTD |= (1<<PD2);
else
PORTD &=~(1<<PD2);

_________________
Ставим плюсы: )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пт янв 25, 2013 18:17:21 
Родился

Зарегистрирован: Чт янв 24, 2013 18:44:59
Сообщений: 4
Рейтинг сообщения: 0
Блин в CVAVR мне больше нравиться обращение к портам. Спасибо всем за консультацию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio 4 в вопросах и ответах
СообщениеДобавлено: Пн янв 28, 2013 13:49:39 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19768
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Можно ли в Студии на АСМе использовать что-то вроде макроса для работы с портами?
Мне надо ноги переключать в "1" и "0", хочу как-то так: сbi LED1 или LED1=0 вместо cbi PORTX, N.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3179 ]     ... , , , 63, , , ...  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y