ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

3 реостата куда будешь подключать?
Ставим плюсы: )
allergen
Родился
Сообщения: 2
Зарегистрирован: Пн сен 21, 2009 19:47:33

Сообщение allergen »

девайс этот мой - 3-х координатный станочек с ЧПУ для перемещения карандаша. Хочется наверняка знать текущие координаты острия карандаша. Собираюсь сделать скользящие контакты вдоль каждой оси, и в МК анализировать эту изменяющуюся нагрузку. Как это сделать и можно ли это сделать - я пока не знаю :)))
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

нет, я имел в виду, что реостаты обычно подключаются к АЦП, которого в тини2313 нет. думаю такое решение врядли подойдет для станка с ЧПУ
Ставим плюсы: )
Аватара пользователя
vovo4ka
Родился
Сообщения: 11
Зарегистрирован: Ср июл 29, 2009 14:40:19
Откуда: Краснодар
Контактная информация:

Сообщение vovo4ka »

осмелюсь порекомендовать книжечку "Программируемые роботы" Дж. Вильямс там описывается сборка с нуля станка с чпу!
опыт прямо пропорционален выведенному из строя оборудованию!

нерешаемых задач не бывает, бывает мало времени!
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

Господа, нужна помощь. собираю схему из обучалки бегущего огня
http://radiokot.ru/start/mcu_fpga/avr/13/ вот. но 8 каналов мне мало и я решил задействовать порт D
добавил строки

Код: Выделить всё

 inc ResCnt            ;инкремент счетчика сбросов

          ldi Temp,0b11111111   ;настройка портa
          out DDRB,Temp
         
          ldi Temp,0b11111111   ;настройка портa
          out DDRD,Temp

          ldi Temp,0b01000000   ;разрешить прерывание компаратора
          out TIMSK,Temp

типа включил порт D
и на вывод

Код: Выделить всё

Init:    ldi Temp1,0           ;загрузить нач. значение
         rjmp SelectArray

Output:  out PortB,Temp        ;вывод в порт
         out PortD,Temp

         reti     

получилось что порты работают одинаково, что D что B один в один. но я хотел вовсе не это. я хочу чтобы огонек не повторялся а бежал циклически. мне нужно наверное что то с массивом сделать...что думаете?
не, ну между коллектором и эмиттером ток ох*енный
Аватара пользователя
Димитар
Родился
Сообщения: 6
Зарегистрирован: Ср авг 12, 2009 18:35:46
Откуда: Великий Новгород

Сообщение Димитар »

Тоесть имеещь в виду чтобы "огонек" проходил порт В - переходил на D и снова возвращался на B - думаю надо использовать признак переноса С при достижении старшего пина порта B скажем PB.7 - b автоматически при установке PB.7 в 1 включать порт D и так по кругу....думаю так.
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

да я именно это и имел в виду
но там массив и прерывания....
не, ну между коллектором и эмиттером ток ох*енный
Аватара пользователя
Димитар
Родился
Сообщения: 6
Зарегистрирован: Ср авг 12, 2009 18:35:46
Откуда: Великий Новгород

Сообщение Димитар »

Кинь всю прогу, полный листинг!
Слава России!
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

вот
Вложения
2 порта.asm
(4.12 КБ) 350 скачиваний
не, ну между коллектором и эмиттером ток ох*енный
Аватара пользователя
Димитар
Родился
Сообщения: 6
Зарегистрирован: Ср авг 12, 2009 18:35:46
Откуда: Великий Новгород

Сообщение Димитар »

честно говоря - сразу думается что косяк в этом -
Output: out PortB,Temp ;вывод в порт
out PortD,Temp
- сходу сказать сложно, но думаю надо поработать с битами портов и признаком переноса не смотря на прерывания.
Слава России!
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

Код: Выделить всё

Init:    ldi Temp1,0           ;загрузить нач. значение 
         rjmp SelectArray

Output:  out PortB,Temp        ;вывод в порт
         out PortD,Temp

         reti     

получаем вот что:

Код: Выделить всё


Init:    ldi Temp1,0           ;загрузить нач. значение
         rjmp SelectArray

Output:  out PortB,Temp        ;вывод в порт В регистр Temp
         out PortD,Temp            ;вывод в порт D регистр Temp

         reti     

Вам надо чтото вроде:

Код: Выделить всё


Output:  out PortB,Temp        ;вывод в порт В регистр Temp
         out PortD,Temp1            ;вывод в порт D регистр Temp1

         reti     

Самое простое - загружать из массива два значения т.е. Temp и Temp1

Код: Выделить всё

 ldi ZL, Low(Array*2)
 ldi ZH, HIGH(Array*2)
 add ZL, "сдвиг"
lpm temp, Z+
lpm temp1, Z
ret

ARRAY:
.db 0b10000000, 0
.db 0b01000000, 0
;.............................
;.............................
;.............................
;.............................
.db 0b00000001, 0
.db 0, 0b10000000
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

спасибо, сейчас попробую...мысль понял
не, ну между коллектором и эмиттером ток ох*енный
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

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

Код: Выделить всё

 add ZL, "сдвиг" 


Pooher, скажите, почему в массиве 8 чисел, а не 15? мы же используем 15 портов...
не, ну между коллектором и эмиттером ток ох*енный
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

:)) "сдвиг" - это регистр(РОН), в котором хранится число, на которое надо сдвинуть.

В массиве не 8 чисел, просто строками ;....
показано, что между указанными, есть числа. Ну не писать же мне их все, я пояснил смысл.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

хорошо, вместо слова сдвиг надо писать число? я недавно начал программировать, не смейтесь
про восемь чисел я имел ввиду что .db 0b10000000, 0 это восемь
а к примеру .db 0b100000000000000, 0 это пятнадцать. или неверно? у нас же будет задействовано все 15 портов?
не, ну между коллектором и эмиттером ток ох*енный
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

0b10000000, 0 - это 0b10000000, 0b00000000, т. е. 2 байта. 1-й байт пишется в один порт, второй-во второй.
вместо слова сдвиг надо писать число?

надо писать так

Код: Выделить всё

ldi tmp, 2 ; ваше число(здесь 2) заисать в РОН tmp

затем вызываем подпрограмму чтения массива, затем подпрограмму вывода в проты, после чего идёт задержка (если не заморачиваться с прерываниями) и запись другово числа в tmp.
А вообще, срочно в обучалку, и методично, по пунктам...
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

короче не получается, задача стоит заставить два порта D и B работать одновременно, причем информацию о работе брать из разных массивов
не, ну между коллектором и эмиттером ток ох*енный
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

товарищ Pooher уже все объяснил, что непонятного в его коде или словах? довольно простой алгоритм. как вариант, без массивов, завести два регистра, которые будут постоянно выводиться в порты, а через определенные промежутки времени в этих двух регистрах циклично сдвигается логическая единичка. как вам?
Ставим плюсы: )
Михаил
Открыл глаза
Сообщения: 78
Зарегистрирован: Вс апр 02, 2006 16:50:15
Откуда: Omsk

Сообщение Михаил »

без массивов понятно, но я хочу еще кнопкой переключать программы
надо попробовать так наверное
выполняется программа 1 выводится на порт б и порт д...при нажатии кнопки выполняется программа 2....
не, ну между коллектором и эмиттером ток ох*енный
ewgen.88
Родился
Сообщения: 16
Зарегистрирован: Ср июл 29, 2009 23:09:41

плохая сигнатура

Сообщение ewgen.88 »

Найдена плохая сигнатура ! (Unknown FF-FF-FF),подскажите что делать,куда глядеть!
Ответить

Вернуться в «AVR»