Отговори на тема  [ 144 мнения ]  Отиди на страница Предишна  1 ... 6, 7, 8, 9, 10
Нуждая се от помощ, за да науча PIC-овете! 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пон Юли 04, 2005 11:51 pm
Мнения: 651
Местоположение: София
Мнение 
end:
rjmp end

..... :)

_________________
От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?


Пон Авг 08, 2005 3:01 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Юни 01, 2005 10:22 pm
Мнения: 123
Мнение 
Проблемът възникна, когато поставих подпрограма след основната програма. Процесът зацикли в подпрограмата, защото последната инструкция от основната програма беше CALL. Тогава поставих RJMP и етикет в началото на програмата, но се получи безкраен цикъл. Не, че това нещо ми пречи! Въпрос на навик. Благодаря за съветите!


Пон Авг 08, 2005 3:18 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пон Юли 04, 2005 11:51 pm
Мнения: 651
Местоположение: София
Мнение 
Значи .... след извикване на подпрограма ползваи ret в края ... за да се върнеш отново в главната програма .....

за да спреш изпълнението на главната програма .... ползваи безкраен зикъл както написах преди малко:

end:
rjmp end

И не забравяи .... когато симулираш програма в AVR Studio (а и в реалния код) ... и ползваш извиквания към други подпрограми ("rcall") ... задължително инициализираи SP в началото .. иначе постоянно ще се връщаш на адрес 0х00000 (reset vector) при всяко ret ...

Стек поинтера се инициализира по следния начин:

ldi r30,HIGH(RAMEND)
out SPH,r30
ldi r30,LOW(RAMEND)
out SPL,r30

можеш да ползваш и друг регистър (r16-r31) ....

_________________
От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?


Пон Авг 08, 2005 3:29 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Юни 01, 2005 10:22 pm
Мнения: 123
Мнение 
Номерът със стека го усетих и го инициализирам по подобен начин. В края на подпрограмите пиша RET. При връщането от подпрограмата обаче, последната инструкция беше сall, след която следваше първата инструкция от подпрограмата. По този начин, по който предлагаш, стана номера. Все още не съм изяснил обаче каква е разликата между CALL и RCALL, както и между JMP и RJMP. Предполагам, че е разстоянието на разположение на етиката от текущия адрес.
Мисля, че с основното ядро се справих. Сега ще започна да се занимавам с интерфейса, но на можах да си намеря достатъчно примери. Ще разчитам пак на вашата подкрепа.


Пон Авг 08, 2005 3:46 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пон Юли 04, 2005 11:51 pm
Мнения: 651
Местоположение: София
Мнение 
Правилно си се ориентирал за CALL и JMP ... :) .... ползват се за етикети разположени над 2к от извикването ....

Относно периферията ... казваи само кво ти трябва и ще помагаме ... имам примери колкото искаш ;)

_________________
От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?


Пон Авг 08, 2005 4:55 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Юни 01, 2005 10:22 pm
Мнения: 123
Мнение 
Написах си програма, която дискретизира синусоида на 12 подинтервала и изпраща състоянията на всеки от тях на PORTD. Ако там се постави ЦАП, ще се получи синусоидален сигнал, който моще да се чуе в говорител. Има ли контролер AVR с вграден ЦАП, и как би трябвало да се промени програмата, за да бъде използван? Самата програма я прикачам към постинга, но не зная дали ще стане. Правя го за пръв път!


Прикачени файлове:
SinDigital.asm [542 Байта]
297 пъти
Сря Авг 10, 2005 9:25 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пон Юли 04, 2005 11:51 pm
Мнения: 651
Местоположение: София
Мнение 
Със ЦАП'ове AVR няма ... но при ниякои от тях (АТ918415 и нагоре ..)
има ШИМ ... които може да използваш за синтезиране на аналогови сигнали (само трябва да се добави един RC филтър ... )

Горе споменатия сорс които си пуснал, има доста да се модефицира ако искаш да го ползваш за ШИМ'а .. :)

Ето ти няколко полезни линка за начало :

http://www.atmel.com/dyn/resources/prod_documents/doc2542.pdf --- Как да настроиш и ползваш ШИМ'а

http://www.atmel.com/dyn/resources/prod_documents/doc1456.pdf --- Как да си направиш диктофон с AVR

_________________
От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?


Сря Авг 10, 2005 10:39 am
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Юни 01, 2005 10:22 pm
Мнения: 123
Мнение 
Благодаря за линковете! Аз ШИМ мога да си направя с два регистъра. Това не ми е проблем. Не съм работил обаче с таймери, а съм дочул, че с тях се правело много лесно ШИМ. Някакво примерче за това или поне някои насоки можеш ли да предложиш? Благодаря!


Сря Авг 10, 2005 2:55 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пон Юли 04, 2005 11:51 pm
Мнения: 651
Местоположение: София
Мнение 
Ето документация за това как да настроиш и позваш таимера:

http://www.atmel.com/dyn/resources/prod_documents/DOC2505.PDF

Ще се поразровя малко и за нещо от сорта на софтуерна имплиментация на ШИМ ....

Иначе самата ШИМ модулация е функция на таимера (достъпна при AVR чиповете с 16bit таимер) .....

_________________
От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?


Сря Авг 10, 2005 8:52 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 144 мнения ]  Отиди на страница Предишна  1 ... 6, 7, 8, 9, 10

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни