Duhas

Примеры Кода Для Avr

598 сообщений в этой теме

1408    0

Немогу понять, чем в m8def.inc ADCSRА отличаетса от ADCSR?

OUT ADCSR,R16 - значение регистра r16 копируется в регистр ADCSR

а единицы или нули это как Вы в R16 записали.

Я попрробовал прописать так:

OUT ADEN,R16

OUT ADIE,R16

OUT ADSC,R16

и асемблер ето проглотил....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

Немогу понять, чем в m8def.inc ADCSRА отличаетса от ADCSR?

Да ни чем это два псевдонима одного адреса. Зачем не знаю.

Хотя могу предположить, но Вам не стоит пока этим голову забивать.

OUT ADCSR,R16 - значение регистра r16 копируется в регистр ADCSR

а единицы или нули это как Вы в R16 записали.

Я попрробовал прописать так:

OUT ADEN,R16

OUT ADIE,R16

OUT ADSC,R16

и асемблер ето проглотил....

Конечно, проглотит. Ассемблер во время компиляции ошибки находит только на то, что может однозначно проверить типа ошибка синтаксиса, не верные аргументы итд

А вот логику программы извиняйте не может проверить.

А у Вас значение регистра R16 присваивается другим регистрам. Синтаксис правильный, аргументы соответствующие чего бы не откомпилить.

А то, что одно и тоже значение присваивается разным регистрам ему по барабану. Программист написал, значит присвою

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Значит мне нада прикинуть последовательность нулей и единиц, перевести её в десятеричній код, а уж потом заносить ЕТО число в R16?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1
Значит мне нада прикинуть последовательность нулей и единиц, перевести её в десятеричній код, а уж потом заносить ЕТО число в R16?

Вот как Вам надо сделать

Ldi r16, то что нужно в ADEN

OUT ADEN,R16

Ldi r16, то что нужно в ADIE

OUT ADIE,R16

Ldi r16, то что нужно в ADSC

OUT ADSC,R16

Переводить ни чего ни куда не нужно.

Компилятор понимает все представление числа

Пример:

Запишем десятичное число 170 в разных представлениях

В десятичной форме

Ldi r16,170

В шенадцатиричной

Ldi r16,0XAA

В двоичной

Ldi r16,0b10101010

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Вопрос НЕ в тему и собласти фантастики: можно ли имея МК, ЖКИ от мобилы, аудио ЦАП и флешку, гдето на 1гб собрать ВИДЕО плеер? ;):rolleyes:

Вопрос по теме:

С етой частью всё ОК:

.include <m8def.inc>

Ldi r16,1

OUT ADEN,r16

Ldi r16,1

OUT ADSC,r16

Ldi r16,0

OUT ADFR,r16

Ldi r16,1

OUT ADIE,r16

А с етой проблема типа Invalid argument of the instruction:

Ldi r16,0

OUT ADSP2,r16

Ldi r16,0

OUT ADSP1,r16

Ldi r16,0

OUT ADSP0,r16

Проверял по примерам, вродибы все правильно, но на практике не работает.....

P.S.

Да, с моими знаниями токо на рынке, рыбой торговать...... <_<

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

На вашу строчку OUT ADSP2,r16

Компилятор поругался error: Undefined symbol: ADSP2

Другими словами нет константы с именем ADSP2

Вы словами напишите, какой порт или регистр Вы хотели переслать данные и мы найдем как он называется в файле m8def.inc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Если ппавельно понял:

Ldi r16,1

OUT SPH,r16

OUT SPL,r16 ?

Если да то иницыализировал......

ADSP2;ADSP1;ADSP0 - ето три бита вибора частотиы управления

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

Ldi r16,low(RAMEND)

OUT SPL,r16

Ldi r16,high(RAMEND)

OUT SPH,r16

Вот инициализация стека

Изменено пользователем rtfcnf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Тоисть просто присваиваем разряды (висшый и младшый) куда будут вноситса соответствующие биты адреса.

Я правельно всё понимаю?

А што нащёт ADSP2; ADSP1; ADSP0? В ини файле они так и указываются:

.equ ADPS2 =2

.equ ADPS1 =1

.equ ADPS0 =0 ?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

low это макрос который возвращает младший байт(младшие восемь бит) из двухбайтного числа

high это макрос который возвращает старший байт

ADSP2; ADSP1; ADSP0 мнемонические имена битов в регистре. Для битовых операций

http://torrents.ru/forum/viewtopic.php?t=1516662

http://torrents.ru/forum/viewtopic.php?t=1102268

http://torrents.ru/forum/viewtopic.php?t=1019971

http://torrents.ru/forum/viewtopic.php?t=421076

Книги по AVR. Только зарегистрируйтесь на торренсе, что бы скачать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогите плиз!

Я изучаю язык Си. Но я застопорился на одном месте, и буксую уже месяц...

Какие команды есть команды для языка Си?

Знаю там delay_ms - задержка...

А какие еще есть?

main void, не понимаю, что это такое...

Вообще какие есть операторы?

заню есть еще такие:

>>, !, #include, но что это такое и как это работает не знаю. Помогите!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

void применительно к функции. Функция не возвращает значение

void main() точка входа в Вашу программу

Извеняйте, но отвечаю только на конкретные вопросы. Книжек по основам си в инете полно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
tobias    0
Я изучаю язык Си. Но я застопорился на одном месте, и буксую уже месяц...

Какие команды есть команды для языка Си?

Вот для вас как раз написано - с абсолютного нуля растолклвано с примерами "Язык Си для МК"

Там же книги скачать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Наверное вы,rtfcnf, всёже станите учителем. :-))

А по поводу етого:

http://torrents.ru/forum/viewtopic.php?t=1516662

http://torrents.ru/forum/viewtopic.php?t=1102268

http://torrents.ru/forum/viewtopic.php?t=1019971

http://torrents.ru/forum/viewtopic.php?t=421076

Я там был, уже заблокировали........

Ну а если в кратце, что нужно сделать?

Изменено пользователем 1408

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1

Книга Шпака вам поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
tobias    0
Книга Шпака вам поможет.

Она точно есть в библиотеке книг по микроконтроллерам и электронике для скачивания и чтения.

Посмотрите там еще и "Микроконтроллеры AVR для начинающих" и другие книги - более новые.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Она точно есть в библиотеке книг по микроконтроллерам и электронике для скачивания и чтения.

Посмотрите там еще и "Микроконтроллеры AVR для начинающих" и другие книги - более новые.

У меня куча книг, толку никакого. Нет НИ ОДНОГО НОРМАЛЬНОГО ПОЯСНЕНИЯ !

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1
Ну а если в кратце, что нужно сделать?

минимальный шаблон для Mega8

.include <m8def.inc>

.def		tmp			= r16;регистр временного хранения


;C нулевого адреса во всей серии Mega размещаеться таблица прерываний
.org 0
		rjmp	INSTAL
		reti		;INT0
		reti		;INT2
		reti		;дальше по мануалу можете заполнить название других прерываний
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
;конец таблицы прерываний (не есть хороший стиль зато понятно)

INSTAL:
		Ldi 	tmp,low(RAMEND)
		OUT 	SPL,tmp
		Ldi 	tmp,high(RAMEND)
		OUT 	SPH,tmp
;далее инициализируем порты и остальную перефирию

MAIN:
;а здесь Ваша нетленка (код программы)

Ваши вопросы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Большое спасибо и прошу прощения за весь етот бред. Просто у нас в городе люди или тупые по етому поводу или сильно умные чтоб обяснить. Сам, как видите, отношусь к тупым, а розобратса надо, не стоко для дела, стоко для самого себя. Електроника шагает вперёд, а я стою на месте..... :angry::(:unsure::huh:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1
Большое спасибо и прошу прощения за весь етот бред. Просто у нас в городе люди или тупые по етому поводу или сильно умные чтоб обяснить. Сам, как видите, отношусь к тупым, а розобратса надо, не стоко для дела, стоко для самого себя. Електроника шагает вперёд, а я стою на месте..... :angry::(:unsure::huh:

Пока, мне не надоело, спрашивайте.

В наше время и асемблер :lol: удивило.

Сам последний раз на асме года три назад писал если не не больше.

Если есть почтовый ящик и готовы принять мегов 100 книги могу выслать. (не очень быстро так как гдето на cd лежат)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

За кусок программы спасибо, а чтомне делать то с моей проблемой:

Ldi r16,0

OUT ADSP2,r16

Ldi r16,0

OUT ADSP1,r16

Ldi r16,0

OUT ADSP0,r16

Invalid argument of the instruction ?

По поводу книг, можно и спасибо.

rgnatenco@mail.ru

Изменено пользователем 1408

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
rtfcnf    1

Команда OUT первым аргументом принемает АДРЕС РЕГИСТРА, а ADSP0- ADSP2 название битов в регистре.

Посмотрите как я сделал для лучшего понимания и повторите для своего регистра

.include <m8def.inc>

.def		tmp			= r16;регистр временного хранения

;данные для инициализация регистра ADMUX
.equ		ADMUX_INIT1	= 0b00000000;ПОСТАВТЕ ПРАВИЛЬНО БИТЫ мне влом мануал читать
;							  ||||||||____ MUX0 выбор канала
;							  |||||||_____ MUX1 выбор канала
;							  ||||||______ MUX2 выбор канала
;							  |||||_______ MUX4 выбор канала
;							  ||||________ пусто
;							  |||_________ ADLAR выравневание
;							  ||__________ REFS0 источник опорного напряжения
;							  |___________ REFS1 источник опорного напряжения


;C нулевого адреса во всей серии Mega размещаеться таблица прерываний
.org 0
		rjmp	INSTAL
		reti;INT0
		reti;INT2
		reti;дальше по мануалу можете заполнить название других прерываний
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
		reti
;конец таблицы прерываний (не есть хороший стиль зато понятно будет Вам)

INSTAL:
		Ldi 	tmp,low(RAMEND)
		OUT 	SPL,tmp
		Ldi 	tmp,high(RAMEND)
		OUT 	SPH,tmp

;инициализируем регистр ADMUX (канал,выравневание,опорное напряжение)
		ldi		tmp,ADMUX_INIT1
		out		ADMUX,tmp

MAIN:
;а здесь Ваша нетленка (код программы)

Изменено пользователем rtfcnf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1408    0

Вот моя "набранная" часть :

Моя проблема находитса в нозу страницы, чтосетим делать?

А с остальным я вродебы розобрался.

post-66200-1238044337_thumb.png

Изменено пользователем 1408

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Похоже что у вас или странный или не тот инклуд в начале програмы использован... Выпишите содержимое файла m8def.inc если вы его вообще подключаете... И что за компилятор используете???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это снова я. Вот скачал книги, которые Вы мне дали. Но там не МК программируются, а просто программирование на языке Си. Я изучаю С++.

Но простое программирование на этом языке мне вобщем то не нужно. Нужно только уметь писать программы для AVR МК. Что мне делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: GeloMik
       
      Я новичок в программировании AVR контроллеров, хотя знаю +/- C++.
      Проблема заключается в том, что я не могу написать прошивку к своему маленькому проекту. Используемый мною контроллер - ATTiny45. У него на борту имеется 1 АЦП с выходом на 4 ноги. Нужно, чтобы фактически одновременно брался замер с 3, 4 и 5 порта по АЦП, и при появлении 1 на одном из них МК должен подать 5В на 1 или 2 порты. Источник АЦП AREF. 
      Сюда прикреплю схему самого робота, если кого не затруднит помочь написать прошивку, буду очень благодарен 

    • Автор: Stratix
      Здравствуйте, у меня проблема с прошивкой разных устройств из-за программаторов. Дело в том что у меня есть некоторое количество китайских и самодельных программаторов для разных производителей, с ними постоянно какие-то проблемы, некоторые отказываются нормально работать на windows 10(другие версии ПО не устраивают), другие не работают с последними версиями сред разработки и т.д. Так же нужно прошивать схемы памяти. Хочу прошивать устройства без постоянной сборки программаторов и неудобств. Думаю о двух вариантах: взять оригинальные программаторы для всех производителей: altera, xlinx, arm, pic, avr(некоторые найти сложно, например оригинальный usb-blaster и высокая стоимость в сумме), второй вариант: взять универсальный программатор, который бы поддерживал все новые микросхемы, а вот с этим проблема, большинство универсальных программаторов не шьют stm, плис. Есть ли вообще реально универсальные программаторы? Мне было бы намного удобнее если на столе б лежал один программатор, а не куча. Смотрел список микросхем chipprog-48, пока что самый большой, к сожалению не поддерживает новые fpga, например: cyclone IV. Связывался, сказали что поддержки не будет и в будущем. Стоит ли взять chipprog-48 в 2018 году или есть программаторы лучше, с большим списком микросхем?
    • Автор: DimonRX
      Всем доброго времени суток!
      В AVR-ках я новичёк и очень нуждаюсь в вашей помощи.
      Задача у меня следующая. Есть драйвер управления серводвигателем на ATmega88. Помимо основной задачи ATmega88 через 74HC164D выводит на сдвоенный 7-ми сегментный индикатор направление вращения мотора в виде анимации (вращает сегмент по или против часовой стрелки). Рядом есть некая поделка на ATmega8, одной из задач которой является определение направления вращения мотора и, в зависимости от направления, выполнение различных действий. Как мне это сделать? Как подружить две меги? Всем заранее спасибо.
    • Автор: Kirill Lubinets
      Дано: отладочная плата STM32F303VC, индукционный датчик.

      Доброго времени суток, суть моего проекта в  детектировании вибраций(ударов) при помощи аналогового датчика.
      Код отслеживания удара написан, но я не пойму то ли я ошибся с алгоритмом его работы то ли не правильно сконфигурировал отладочную плату.

      Информация по датчику.
      Индукционный датчик удара, шок сенсор, Arduino может использоваться в проектах на микроконтроллерах (в т.ч. Arduino), в которых нужно следить за уровнем вибрации или подобных механических возмущений. Принцип действия датчика основан на электромагнитной индукции. Движущийся стальной, ферритовый или магнитный сердечник относительно катушки создает в катушке ЭДС, подходящую по амплитуде ударного воздействия на систему. Чувствительный элемент датчика установлен в прозрачный пластиковый параллелепипед для защиты от действий внешней среды.
      Для использования датчика нужно подключить его к Arduino контроллеру или другому микропроцессорному управляющему устройству, подать питание, создать программу для работы с датчиком или использовать готовое решение. На корпусе датчика есть два отверстия, с помощью которых можно жестко закрепить датчик на плоской поверхности. В состоянии покоя напряжение на выходе из датчика около 5 В, при возмущении напряжение на датчике падает пропорционально силе возмущения.
      Индукционный датчик удара, шок сенсор, Arduino имеет один 3-контактный разъем для подключения к контроллеру и питания:
      контакт обозначенный «–» – общий контакт;
      средний контакт – напряжение питания;
      контакт S – аналоговый выходной сигнал датчика.
      Датчик может питаться как от Arduino контроллера (другого микропроцессорного управляющего устройства), так и от внешнего источника питания. Напряжение питания 3,3 – 5 вольт постоянного тока.
      Характеристики:
      принцип действия: индукционный;
      выходной сигнал: аналоговый;
      напряжение питания: 3,3 – 5 вольт постоянного тока;
      размеры: 30 х 18 х 11;
      вес: 2 г.
      Shock.7z
    • Автор: Петр Серёгин
      Здравствуйте, у меня проблема.
      Не программируется ATmega2561-8AU. Программатор USBASP. Микроконтроллер 100% рабочий. Питание и контакты программатора припаяны правильно.
      Что можете посоветовать? 
  • Сообщения

    • Выключение модуля осуществляется ровно также, как и его включение. Только обратной операцией.
      Как его включить (или выключить) - подробно описано в документации на камень.
    • Плату от трансформатора немного отодвинуть бы
    • В общем, я подумал и сейчас развожу плату под корпус SO-8 (3 шт), иначе плата большой получится, в каждом корпусе по 2 полевика, по габаритам получается как пара SOT23 в сумме, но зато SOT23 можно раскинуть проводками, если что. Эти полевики обычно стоят в мониторах LCD, у них сопротивление 20-50-100 мОм, но купить можно в магазе, даже по 7-12-25 мОм, по деньгам 15-25-40 руб каждый корпус.  2 полевика (1 корпус) точно надо на 20-50 мОм (1000-10 000мкф), остальные - некритично, ток мало играет роли, можно и по 1 Ом. По напряжению - наверное 30 В и ток 5-10 А, чтобы точно выдержал напругу на щупах. Ну и по затвору 1.5-2.5 В открытия, 3.7 В питания конечно все убивает, приходится буферы ставить. Биполярники по току на базе не смогут прокачать, так что полевики рулят.
    • проходили, мочили, фанерка того, расклеивается...потом клеил лепестки 3мм фанеры в пресе (так же изготавливать пресс форму и тут надо всё равно) изгибал по 5шт вроде или 4 (непомню), и ничего круто. А вот потом как состыковать то и идеальо нарезать торцы под углом точным чтоб сошлось скажем 6 или 8 граней? я пока не смог. Есть вариант на чпу лепескти вырезать из дерва, я рисовал и сдавал, оценили 8 лепестков - 1 рупор под 1.5 евро. Не кисло так. Но зато там только слекиваешь и всё. Есть где то видео где так делают рупор. Но очень дорого это за 2 рупора только за чпу отдать 3 евро. 
    • Собрал фильтр по данной схеме. Подключаю только через высокоуровневый вход, т.е. источник с выхода китайского усилителя 4х10 вт. Проблема вот в чем: Когда подключаю оба канала - все работает нормально только на низкой громкости, а совсем чуть повысив - звук "обрывается" в китайском УМ, как буд то защита какая то срабатывает... Как только отключаю один из каналов и оставляю любой другой - все играет отлично даже на самой максимальной громкости. Кто что думает? В чем может быть проблема? Схему фильтра взял отсюда, но чуток обрезал.
    • Неужели фанерку тяжелее отмочить-изогнуть-склеить, нежели прессом гнуть 20кг железа и варить?
    • Сегодня послушали усилитель с разными источниками (с внешним цапом тоже игрались) и на разной акустике. Кендайлы положил в ящик на хранение. С самвой АМ звук приятней. На мои уши - звук приятней и ВЧ естественней, что ли, на ВЧ с кендайлами каша. Заметно с любой акустикой и любым источником. Вот такие вот дела. В архивчике "бардачок" из разных источников и колонок.   Photos.rar