Курс: программирование AVR

 
1 4 5 6 7 8 12
+
-
edit
 

karlos

втянувшийся
Если ты имеешь в виду перевод числа из бинарной формы в десятичную, то вот мой код, который этим занимается. Вызываешь output_decimal с числом в регистрах r20/r21 и процедура вызывает output_decimal для каждой цифры (начиная с более значительных; ведущие ноли не подавляются). У меня output_decimal посылает цифру прямо на RS232.
Прикреплённые файлы:
convert.asm (скачать) [1,5 кбайт, 71 загрузка] [attach=29384]
 
 
 
+
-
edit
 

coolnik

новичок
Продолжаю великую битву "Я vs ATTiny26L". Заказал нового зверя, кстати старого я не спалил, а просто круто защитил фьюзами. (кстати, может кому на будущее пригодится такое предостережение: Не стоит устанавливать фьюзами внешнюю синхру, если нет внешнего генератора. Чипы обижаются и просто перестают работать. И совсем не стоит запрещать внешний ресет, пользуясь ISP программатором – он без ресета работать не умеет и тоже пошлет чип куда подальше. (к слову, ISP программатор и две меги 169 вчера получил – Молодцы-Атмеловцы! Во блин!!! Ну не фига себе, только дописал эти слова, звонок – еще один комплект принесли с какого-то перепугу! Бывает же!!!)
 
+
-
edit
 

coolnik

новичок
Да, совсем забыл спросить. Помогите, кто чем может. АЦП ATTiny26L никак не хочет отдавать результаты преобразования. В обработчик прерывания от АЦП МК прыгает, (я там поставил вывод нуля в порт B – чтобы наблюдать факт перехода).
И очень интересные вещи с портами творятся: если на ADC5 подавать 0 то ноли в коде и есть, а вот если хотя бы 1 вольт, то во всех портах вне зависимости от того было преобразование или нет, появляются единицы.
Прикреплённые файлы:
11.c (скачать) [2,73 кбайт, 95 загрузок] [attach=29386]
 
 
 
RU termostat #24.04.2004 08:52
+
-
edit
 

termostat

аксакал

coolnik, 23.04.2004 17:06:11 :
программатор и две меги 169 вчера получил
 


У тебя теперь 4 атмеги 169 - маленьких многоногих и бесплатных, че ты мучаешся с тини26 ??? забудь про нее.
+
-
edit
 

coolnik

новичок
termostat, 24.04.2004 07:52:47 :
coolnik, 23.04.2004 17:06:11 :
программатор и две меги 169 вчера получил
 


У тебя теперь 4 атмеги 169 - маленьких многоногих и бесплатных, че ты мучаешся с тини26 ??? забудь про нее.
 


Tiny26 - дело принципа. Столько времени уже ухлопал, что бросать было жалко. ;)

Да! И ведь заработала зараза!!! :P :D Все как надо, компик уже начал графики вычерчивать и красивые цифири показывать. Вся многоканальность, восьмибитность, паралельность да еще и экономия линий LPT налицо. Да еще за 2$!!! МК рулит! Где бы я такой АЦП-шник достал? :rolleyes:
Еще и еще раз СПАСИБО тебе, termostat и всем, кто мне здесь помог. То, что я сотворил своим существованием обязано вам на 90%. Может это конечно и примитив, но лиха беда начало. :)
http://avr123.by.ru - рулез!!!, я бы без этого ресурса никогда не решился МК изучать.
 
Это сообщение редактировалось 24.04.2004 в 13:08
+
-
edit
 

karlos

втянувшийся
coolnik, 24.04.2004 09:13:58 :
да еще и экономия линий LPT налицо
 


Что ты под этим имел в виду?
 
+
-
edit
 

coolnik

новичок
karlos, 24.04.2004 11:15:31 :
Что ты под этим имел в виду?
 


Для получения запроса на преобразование и получения от компа сигнала подтверждения приема результатов используется один вывод LPT. А контроллер уже решает в зависимости от PINB и значения флага GIFR, запрос это или подтверждение. (См.конечный вариант проги.) Получается сплошная экономия в целый бит! И кстати, настолько нужная экономия, что без неё бы ничего не получилось – все остальные линии LPT задействованы для других целей (девайс с МК не самодостаточное устройство, а блок для другого девайса).

И если опять же это кого-нить интересует, почему не работало - дело было в DDR. Когда выводы прерывания и АЦП были настроены как выходы (DDR=1) МК не хотел ни прерывания обрабатывать, ни АЦП воспринимать. Странно… помнится, где-то читал, что для прерываний без разницы вход вывод или выход.
Прикреплённые файлы:
1.c (скачать) [4,79 кбайт, 246 загрузок] [attach=29397]
 
 
 
Это сообщение редактировалось 24.04.2004 в 12:55
+
-
edit
 

karlos

втянувшийся
1) INT0 и PB6 - одна и та же нога
2) INT0: "Activity on the pin will cause an interrupt request even if INT0 is configured as an output."

Из этого и следует, что необходимо запретить INT0, если хочешь использовать PB6 для других целей. Поэтому и прыгала твоя программа - при выводе результатов на PORTB возникло прерывание INT0, и MK послушно начал новое измерение, незакончив вывод результатов предыдущей...

Да, и комментарий в коде "// Interrupt on any change on pins PB0-3: On" смущает, так как с PCI (pin change interrupt) тут дело вообще не имеется.
 
RU termostat #25.04.2004 02:44
+
-
edit
 

termostat

аксакал

coolnik, 24.04.2004 11:13:58 :
avr123.by.ru - рулез!!!, я бы без этого ресурса никогда не решился МК изучать.
 


Спасибо! вот это подстегнет меня доделать обещаные задачи в курс.
RU termostat #25.04.2004 03:03
+
-
edit
 

termostat

аксакал

Позволю себе повторится. Програматор что прислали в наборе - это готовая отладочная плата! там впаян AVR8535 и еще AVR1200 (его можно "отключить" змкнув на землю его "ресет" вывод 1) - там уже и rs232 спаян и под ISP програмирование 6 дырочек сделано, кварц с частотой для правильного обмена с КОМ портом впаян.

Вобщем припаивай проводки на ноги МК и вперед.
+
-
edit
 

kodian

новичок
Светодиодами мигать дело конечно нужное... для начала ...
А вот может кто-нибудь присоветует где поискать про реализацию ТСP/IP на базе AVR? В перспективе надобно разработать устройство, отвечающее на ping в локалке, с возможностью удаленного управления (мониторинг домашней сети).
 
RU termostat #28.04.2004 08:38
+
-
edit
 
+
-
edit
 

karlos

втянувшийся
TCP не нужен, чтобы ответить на ping - для этого нужны IP и ICMP протоколы, и возможно, ARP. Они документированы в RFC, а в AppNote можно узнать о железе.
 

Yuran

опытный

kodian, 28.04.2004 01:43:12 :
Светодиодами мигать дело конечно нужное... для начала ...
А вот может кто-нибудь присоветует где поискать про реализацию ТСP/IP на базе AVR? В перспективе надобно разработать устройство, отвечающее на ping в локалке, с возможностью удаленного управления (мониторинг домашней сети).
 


(AVR HTTP Server)
http://myavr.narod.ru/wiznet.htm

Смотря что ты хочешь, полностью стек тебе не нужен для пинга имплиментируй
ИСМП протокол, как Карлос написал, структуру пакета и назначение полей можно в rfc соответсвующем почитать.

Ну а уж если захочешь полностью стек TCP/IP реализовывать то придётся помучиться %) ещё тебе потребуется АВРка достаточным количеством памяти чтобы вместить зачитанный фрейм если те го на лету не хочешь парсить...

Короче даташит и rfc, думаю тебе должны помочь :P


 
+
-
edit
 

kodian

новичок
Эх, говорила мне мама: "Учи, сынок, английский" :)

Всем большое спасибо! Пошел разбираться ...
 
RU [Андрей] #29.04.2004 08:55
+
-
edit
 
Объясните пожалуйста как заставить ATtiny26 общаться с PC через ком порт? Там вроде бы есть какой-то USI, как это всё организовать. Можно со схемкой
Спасибо
 
?? Tosha_443 #29.04.2004 09:40
+
-
edit
 

Tosha_443

втянувшийся
[Андрей:],29.04.2004 07:55:57
Объясните пожалуйста как заставить ATtiny26 общаться с PC через ком порт? Там вроде бы есть какой-то USI, как это всё организовать. Можно со схемкой
Спасибо
 


USI --это I2C --не ком-порт.
Если хочется сом-порт, то надо программно организовывать и развязку на max232 (или аналогичную) творить.
app. notes AVR305
Не ошибается тот, кто ничего не делает  

andre

новичок
Наконец-то зарегился ;)
app. notes AVR305
 


Похоже это то что нужно, сенкс
 

andre

новичок
Заказал у питерского дилера ЭФО две tiny26 и две mega169, выписал на имя нашего университета, придумал классный проект, а они высылать не хотят, говорят покупайте у нас со склада...
 
?? Tosha_443 #29.04.2004 11:17
+
-
edit
 

Tosha_443

втянувшийся
andre, 29.04.2004 09:10:33 :
Заказал у питерского дилера ЭФО две tiny26 и две mega169, выписал на имя нашего университета, придумал классный проект, а они высылать не хотят, говорят покупайте у нас со склада...
 


я пару лет назад пробовал заказать — отправили к дилерам.
попробовал возмутиться - не шлют и т.п. — письмо пришло снова от дилеров.
как у Райкина — "Жильцам от начальника ЖЭКа..."
такая же ситуация и с софтом. Заказывал КД с атмеловскими даташитами — от дилеров пришло письмо типа купите у нас чего-нибудь, а мы пришлем и диск тоже. редиски.
Не ошибается тот, кто ничего не делает  
+
-
edit
 

karlos

втянувшийся
Tosha_443, 29.04.2004 06:40:19 :
USI --это I2C --не ком-порт.
Если хочется сом-порт, то надо программно организовывать и развязку на max232 (или аналогичную) творить.
app. notes AVR305
 


Схема для согласовывания TTL и RS232 уровней тут: Форумы Авиабазы
А в софте UART я бы не стал делать. Так возьми AT90S2313, там в железе.
 
"А в софте UART я бы не стал делать. "
А чо его делать-то? В стандартном комплекте ассемблера имеется пример с готовым программным UART. Конечно, там всё довольно примитивно сделано, но сама основа уже имеется.
 
+
-
edit
 

karlos

втянувшийся
Хорошо, если так, но всё-таки религия не позволяет :)
 
Люди добрые помогите нифига не понимающему в си ;(

Допустим надо циклически побитово сдвигать 1 байт.В СИ есть операции « и >>
это обычный сдвиг т.е выталкиваемый бит пропадает.
На место освободившегося попадает 0. А какой оператор в СИ выполняет
циклический сдвиг, при котором выталкиваемый бит попадает на место освободившегося?
Есть ли такой в природе?
Если нет ,то допустим мне надо сделать вставку на асме.
Тоды другой вопрос как из асмовой вставки работать с переменными обьявленными в СИ.

Например.

unsigned int x=0; его надо сдвигать

.........

далее в VERT надо передать значение x

asm ("mov TMP,VERT");
asm ("rol TMP ");
asm ("rol VERT ");

Тут из VERT надо переписать в переменную си x

ps. пользуюсь ICC AVR
Зарание спасибо.
 
AD Реклама Google — средство выживания форумов :)
RU termostat #30.04.2004 23:34
+
-
edit
 

termostat

аксакал

Ну дык узнать чему равен вытолкиваемый бит, и если он "1" то прибавить к результату 1 после сдвига.

пример для сдвига влево регистра - primer_register

/////////////////////////////////////

if (primer_register > 127)
primer_register = (primer_register « 1 ) + 1 ;

else
primer_register = « 1;

/////////////////////////////////////


если сдержимое регистра 128 и больше, то при сдвиге влево выталкивается бит № 7 равный "1"

значит после сдвига нужно прибавить к полученому числу 1.

если регистр содержит число до 127, то выталкивается "0" и после сдвига ноль и будет поставлен в позицию bit_0 - ничего прибавлять не нужно после сдвига.



Кстати интересно как компилятор откомпилирует такой код? возможно использует инструкции
1 4 5 6 7 8 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru