реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Начинаю учить AVR, дайте пинка в нужную сторону
pavel-pervomaysk
сообщение Dec 28 2007, 19:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



Всем привет , решил я начать с простого задания , а именно помигать светодиодом на меге8 , исходник на асме прилагаю , поправьте плиз , что не так я думаю что неправильно настроил порты wub.gif от того светится постоянно только один светодиод

.nolist
.include c:\avr "m8def.inc"
.list

.def temp = r16 ;
.def temp2 = r17 ;

.equ LED_1 = PB1 ;
.equ LED_2 = PB2 ;






.cseg

.org 0

rjmp reset ; Reset Vector


reset:
ldi temp,LOW(RAMEND) ; Init Stack Pointer
out spl,temp

ldi temp,$FC
out DDRB,temp
out PortB,temp

ldi temp,$FF
out DDRD,temp
clr temp2

main: clr temp

cbi PortB,1 ;

rcall wait

sbi PortB,1

rcall wait
rjmp main

wait: ldi temp2,255 ;
wait1:
dec temp2
brne wait1
ret
Go to the top of the page
 
+Quote Post
arttab
сообщение Dec 29 2007, 02:29
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Давненько я на асме не кодил...
Цитата
ldi temp,$FC
out DDRB,temp
out PortB,temp

то есть на выводы
Цитата
PB1 ;
и
Цитата
PB2 ;
на вход

а здесь
ldi temp,$FF
out DDRD,temp
порт D на выход

а тут

Цитата
cbi PortB,1 ;

Цитата
sbi PortB,1

в единичку нолик вывод B0 пытаемся дергать что ,собственно, бесполезно поскольку PORT B настроен как вход

наверно, что то тут не так... очепятка где то


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Dec 29 2007, 06:47
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



спасибо за подсказку , порт Д у меня далее будет на индикатор идти , сейчас не вьеду как настроить отдельные выводы на выход побитно sad.gif
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 29 2007, 07:27
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(Павлик @ Dec 28 2007, 22:30) *
ldi temp,LOW(RAMEND) ; Init Stack Pointer
out spl,temp

Если я не ошибаюсь, то в меге 8 1К озу, значит стек 16-ти битный. следовательно:
Код
    
ldi   temp,LOW(RAMEND); Init Stack Pointer
out   spl,temp
ldi   temp,high(RAMEND); Init Stack Pointer
out   sph,temp



Можно вот так:
Код
.nolist
.include  c:\avr "m8def.inc"
.list
.def   temp  = r16;
.def   temp2 = r17;
.equ   LED_1 = 1;
.equ   LED_2 = 2;
.cseg
.org    0
rjmp    reset; Reset Vector
reset:
ldi   temp,LOW(RAMEND); Init Stack Pointer
out   spl,temp
ldi   temp,high(RAMEND); Init Stack Pointer
out   sph,temp

ldi   temp,(1<<LED_1|1<<LED_2|)
out   DDRB,temp
out   PortB,temp//на выходе единица (высок.уров)
main:    clr   temp
cbi   PortB,1;
rcall wait
sbi   PortB,1
rcall wait
rjmp  main
wait:   ldi  temp2,255;
wait1: dec  temp2
brne wait1
ret


Мне почемуто кажется что у Вас не мега 8 (как написанно в .include c:\avr "m8def.inc") а тини2313. И еще.. слижком уж маленькая задержка для мигания.. Какая у вас тактовая частота? кварц? к примеру 8МГц следовательно 8000000 поделить на количество тактов, и посчитать длительность задержки..: 8000000/(255*4)=7.8КГц отсюда задержка 1/7.8КГц=128мкс! это мигание на глаз вы не увидите... biggrin.gif

Сообщение отредактировал adc - Dec 29 2007, 07:29


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Dec 29 2007, 09:41
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



насчет задержки я понял , частота у меня на внутреннем 1мГц , то есть все равно частота будет большой a14.gif , спасибо за подсказку , ато я не знал даже как ее вычислять .
Вечером буду пробовать , о результатах сообщу
Go to the top of the page
 
+Quote Post
sergeeff Jr.
сообщение Dec 29 2007, 13:24
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 568
Регистрация: 8-07-07
Из: Занзибар
Пользователь №: 28 964



Вот тут глянь
http://g24-tec.com/files/G24-ATM8-Examples-RevA.pdf
Как раз про диодики есть и как раз на асме...


--------------------
"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Dec 29 2007, 16:26
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



все получилось 08.gif спасибо за подсказки ребята ! beer.gif нашел правда подпрограмки на задержки и приклеил их

[...skipped...]

Сообщение отредактировал zltigo - Dec 29 2007, 17:31
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016