Duhas

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

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

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

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


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

Найдите миллионы труднодоступных

электронных компонентов

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 МК. Что мне делать?

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: Kudich
      Всех приветствую!
      Сам я программирую на стандартной среде ардуинки, и в одном проекте потребовалось увеличить частоту ШИМ на портах 5,6,9,10,11,13 Arduino Micro. На этой ардуино стоит Atmega32u4, есть тут знатоки avr? Как повысить частоту на этих пинах?
    • Автор: Evg69
      добрый день. Вернулся к микроконтроллерам после длительного перерыва. Сижу туплю и даже гугл не помог.
      Два вопроса по Atmel Studio 7. Режим отладки. Симуляция.
      1. Как включить окно в котором можно посмотреть что контроллер выплевывает
      в UART? Не содержимое регистра, а типа терминала.
      2. Как подсунуть студии файлик с содержимым EEPROM?
    • Гость Keil
      Автор: Гость Keil
      Добрый день, ситуация такая - попались мне под руку куча рассыпухи в числе которых достаточное количетво тинек и прочей лабуды - пытась хеловродить, попробовал взять готовый пример работы тиньки и лсдишника здесь также имею ардуинку как  Айсипи и чудесно мигаю светодиодом на мк прошитом ею же  так вот при попытке залить код который по ссылке чуда не произошло.
      курение мануалов лсдишника дало понять лиш одно что старший и младший биты одинаковы с лсдишником со статьи - лсдишник рабочий (игрался контрастом одной строки через V0  и потенциометр ) - как в прочем и мк, было задумано ковырнуть все это в протеусе и атмельстудии, но результатом не увенчалось. Пожалуйста тыкните носом что да где не так.
      fail.zip
    • Автор: В гостях у Михалыча
      Приветики. На днях купил колонку сгоревшую под ремонт. При нажатии на кнопку включения сразу же нагревается микросхема (B6THM1016 1516arz) В интернете вообще нет ничего о ней. Как я понял, это контроллер сенсорных кнопок и питания (даже если включить зарядку, то микруха не греется, пока не нажмешь на кнопку), ибо есть еще две микросхемы, одна из них усилитель, а вторая-блютуз. Может ее получится как-то заменить или выкинуть вообще?