Radiohobby Forum

Интернет конференция журнала "Радиохобби"

Вы не вошли.

Объявление

Подписка на новые материалы от Николая Сухова - ролики, схемы, модели, онлайн конференции, консультации, чат.

Внимание! Почта в доменах Яндекс и Mail.ru не будет работать в профилях форумчан, из-за введённых правительством Украины санкций против этих компаний. Всем, кто ранее использовал подобную почту, для сохранения прежней функциональности форума, рекомендуется её поменять.

Огромная просьба, заливать тематические картинки и файлы в личные файловые каталоги на форуме, чтобы они не потерялись, со временем!

Ссылка "Загрузки" находится справа внизу формы набора сообщения.

Подписка на журнал "Радиохобби" прекращена. Подробности. Форум же - продолжает свою работу.

#11 28.07.2006 07:15:42

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,155

Re: AVR для "чайников"

2 Liv, спасибо за ответ и советы

Отредактировано Vasil (28.07.2006 07:17:17)

Вне форума

#12 28.07.2006 09:26:29

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

2 Liv

Посмотрел шыт на ATmega8. Что ж неплох однако. Но наверно пусть пока подождет свой очереди. Дюже уж крут. Начну все-таки с 2313.
Вы писали " ldi    temp,(1<<RXCIE) | (1<<TXCIE) | (1<<RXEN) | (1<<TXEN)". Не могли бы вы объяснить синтаксис написания для подобных случаев (я что-то не нашел)?? Я понимаю, такая штука позволяет записать в регистр какой-то конкретный бит, не трогая все остальные.


......There is someone in my head, but it's not me.......

Вне форума

#13 28.07.2006 09:29:12

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Liv пишет:

...Например, на макете сигнал Load_Relay был на порту PB0, а при разводке платы оказалось удобнее подключить его к порту PD2. Что делать? По всей программе искать и исправлять? Лучше для обращения к портам использовать макросы. В файле header.asm пишем:

.equ    Load_Relay    = PB0     ;управление реле нагрузки

.macro    Port_Load_Relay_0 ;устанавливает линию Load_Relay в "0"
    cbi    PORTB,Load_Relay
.endm

.macro    Port_Load_Relay_1 ;устанавливает линию Load_Relay в "1"
    sbi    PORTB,Load_Relay
.endm

Везде в программе обращение к этой линии порта делаем так:

Port_Load_Relay_0 ;включение реле
ldi temp,ON_DELAY
rcall Delay_ms       ;задержка ON_DELAY
Port_Load_Relay_1 ;выключение реле

Я (но с  ПИК-ами) пишу так:
Сначала определяю, "кто есть ху":
    #define    LCD_DATA_BIT_4        PORTA,2    ;

А в тексте программы уже просто "дергаю" мнемонику:
    BCF    LCD_DATA_BIT_4
или
    BSF    LCD_DATA_BIT_4

В итоге чтобы пересыпать ноги в программе достаточно просто порулить строку определения, а не шарить по всему тексту wink


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#14 28.07.2006 12:35:42

Liv
Ветеран
Откуда: Минск
Здесь с 08.02.2004
Сообщений: 1,233

Re: AVR для "чайников"

Алексей пишет:

Ну как Вам сказать... Бластер мне подарили бесплатно, а это придется делать за денежку да еще и программатор искать. Так что лучше я пойду своим путем в этом вопросе.

Почему за денежку? Сделайте сами. Или Вы имеете в виду, что для него нужно покупать 2313? Байтбластер Вам тоже пригодится, не отказывайтесь. Хотя бы для того, чтобы зашить 2313 для программатора.

Алексей пишет:

Посмотрел шыт на ATmega8. Что ж неплох однако. Но наверно пусть пока подождет свой очереди. Дюже уж крут. Начну все-таки с 2313.

При стоимости ATmega8 менее 2$ в розницу, по-моему, думать нечего. В 2313 нет BOD, будут проблемы с использованием EEPROM. Нет также некоторых команд (умножения, например). Да и периферия заметно слабее. И ног будет не хватать.

Что касается конструкций вида (1<<BIT1) | (1<<BIT2) | (1<<BIT3), то это типичный сишный синтаксис, который используется препроцессором транслятора. 1<<BIT1 - сдвиг влево BIT1 раз числа "1". Т.е. если BIT1 равно 5, то число "00000001" сдвинется влево 5 раз и получится "00100000". Из номера бита получается маска. А конструкция A | B - это операция OR. Например, 00000001 | 00100000 = 00100001. Так собирается маска из нескольких бит. Все операции, которые умеет делать препроцессор, расписаны в Help-е.

Dmitry пишет:

Я (но с  ПИК-ами) пишу так:
Сначала определяю, "кто есть ху":
    #define    LCD_DATA_BIT_4        PORTA,2    ;

А в тексте программы уже просто "дергаю" мнемонику:

Ваш вариант тоже хорош, даже лучше моего, если бы не одно "но". В старших AVR некоторые порты размещены не в адресном пространстве IO, а в адресном пространстве данных. Для них приходится применять конструкции типа

.macro    Port_LED_F_0            ;LED_F = 0
    lds    temp,PORTG
    clbr    temp,LED_F
    sts    PORTG,temp
.endm

В моем случае внешне обращения к портам выглядят совершенно одинаково. А еще я иногда в макросах "дерганья" портами ставлю nop-ы, когда требуются задержки и не хочется загромождать ими основную программу. Но это дело вкуса. Для младших AVR я даже рекомендовал бы использовать Ваш метод.

Отредактировано Liv (28.07.2006 12:42:01)

Вне форума

#15 28.07.2006 13:26:03

Dmitry
Забанен
Откуда: Запорожье
Здесь с 03.02.2004
Сообщений: 3,105
Сайт

Re: AVR для "чайников"

Liv пишет:

... если бы не одно "но". В старших AVR ...

Я сразу написал - я так вытворяю с ПИК-ами...

Liv пишет:

... А еще я иногда в макросах "дерганья" портами ставлю nop-ы, когда требуются задержки ...

У ПИК-ов, когда сильно быстро, рекомендуют писать не в порт а в его вых. защелку (это два физически разных регистра).


Почему когда мы нарушаем, нас штрафуют, а когда всё делаем правильно, с нас берут налоги?....

Вне форума

#16 28.07.2006 15:01:29

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

2 Liv

Так а в чем проблема-то?? Я так думаю, что писание программ (особенно простых) под мегу8 и под 2313 сильно не различается. Думаю, что в случае необходимости и мегу8 смогу запрограмить.


......There is someone in my head, but it's not me.......

Вне форума

#17 28.07.2006 15:08:37

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,155

Re: AVR для "чайников"

Небольшое уточнение, ATtiny2313  имеет BOD на борту, чего действительно не было в уже снятом с производства AT90S2313, к тому же, последний если еще и есть где то в розн. продаже, то как правило стОит раза в два дороже тини.

Отредактировано Vasil (28.07.2006 15:09:53)

Вне форума

#18 28.07.2006 20:13:29

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

Поход по местный магазинам закончился невесело. AT90S2313 снят с производства и нет в наличии (да и был бы, один фиг 105р. - дороговато)
ATmega8-8PI стоит 90р. тоже но с индексом -16PI стоит всего 58р., но их нет в наличии (кстати, в чем разница между -16PI и -8PI??). Придется наверно взять -8PI т.к. других вариантов нет. Жалко... из пушки по воробьям....


......There is someone in my head, but it's not me.......

Вне форума

#19 28.07.2006 21:02:39

Vasil
Ветеран
Откуда: близ Киева
Здесь с 23.01.2004
Сообщений: 1,155

Re: AVR для "чайников"

Ну дык, наверное и нужно последвать совету Liv, не сошелся же свет клином на этом 2313.  16 или 8 это макс. тактовая частота в МГц,  и соответственно диапазон питающих напряжений 4,5-5,5 В или 2,7-5,5 В , Р - это DIP "упаковка", I - индустриальное исполнение - раб.темп.  -40 - +85 градусов,  вообще то все это есть в даташитах.
ЗЫ, а воробьи и др. пернатые еще поналетят, если охота не пропадет -палить smile

Вне форума

#20 28.07.2006 21:13:06

Матроскин
Ветеран
Откуда: Краснодар
Здесь с 06.02.2006
Сообщений: 2,022

Re: AVR для "чайников"

Тоже верно. Странно тока что 16МГц - МК в полтора раза дешевле 8 мегагерцового.
Кстати, файл описания регистров (*def.inc) на мегу8 есть у кого-нибудь???


......There is someone in my head, but it's not me.......

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] claudebot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.099 сек, 14 запросов выполнено - Использовано памяти: 600.63 Кбайт (Пик: 650.99 Кбайт) ]