Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ещё один ламерский вопрос по портам I/O 
V
    Опции темы
anterior
Дата 26.4.2009, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.4.2009

Репутация: нет
Всего: нет



Есть Atmega168. Там порт PD1 (PORTD) имеет несколько альтернативных функций - (PCINT17/TXD). Я соеденил этот контакт (PD1) со светодиодом, набрал такой код:
Код

.device ATmega168
.include "m168def.inc"
.include "../include/sys.inc"

.equ PIN_LED    = PD1    ; ножка на которую указывает светодиод (13)

.CSEG

.org    0x0000        ; начальный адрес программы
    rjmp _RESET

.include "../include/delay.asm"

;****************************************************************
; начало программы
;****************************************************************
_RESET:    
    ; инициализация стека
    stack_init
    /* настройка светодиода на вывод */
    sbi    DDRD,PIN_LED    ; регистр направления данных (1 - вывод)
    cbi    PORTD,PIN_LED    ; регистр данных - LOW, светодиод выключен

    loop:
        cbi PORTD,PIN_LED    ;  выключить светодиод
        m_delay 500    ; выполнить задержку на 0,5 сек
        sbi PORTD,PIN_LED    ; включить светодиод
        m_delay 500    ; выполнить задержку на 0,5 сек
    rjmp  loop    ; зацикливание программы


По идее при выполнении этой программы светодиод должен мигать, но этого не происходит. Если я переставлю светодиод на другой контакт, например PC5 (PORTC), и соответственно аналогично отредактирую код, то всё работает.

Как сделать чтобы работало и на PD1?
PM MAIL   Вверх
sally555
Дата 26.4.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



На любом выводе порта D такая штука?
Прежде всего я всегда выключаю при программировании JTAG интерфейс программирования,фьюз-битом JTAGEN.потому как он изначально включен и влияет на определенные порты,сейчас не помню какие.И еще PD1 задействован как выход USART,так что при работе с ним как с портом USART должен быть выключен.

Это сообщение отредактировал(а) sally555 - 26.4.2009, 09:01
PM MAIL   Вверх
anterior
Дата 26.4.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.4.2009

Репутация: нет
Всего: нет



Цитата(sally555 @ 26.4.2009,  08:52)
На любом выводе порта D такая штука?
Прежде всего я всегда выключаю при программировании JTAG интерфейс программирования,фьюз-битом JTAGEN.потому как он изначально включен и влияет на определенные порты,сейчас не помню какие.И еще PD1 задействован как выход USART,так что при работе с ним как с портом USART должен быть выключен.

Нет, только на PD0, PD1. А как выключить USART? Я пробовал сделать так, добавить в начало:
Код

ldi temp,(1<<PRUSART0)
sts PRR,temp


Но ничего не помогло.

И ещё, дело в том что я использую плату Arduino. Для него вобще-то идёт своя IDE, где программы пишутся на Processing/Wiring. Там я побробовал написать что-то подобное и оно работало конкретно для PD1. Но я хочу писать программы на асме, поэтому Arduino-IDE вместе с Wiring'ом не использую, использую AVRStudio.

PM MAIL   Вверх
sally555
Дата 27.4.2009, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



Отключение передачи USART,регистр UCSRB,  бит TXEN = 0,
Отключение приема USART,регистр UCSRB,  бит RXEN = 0.
Примерно так:
Код

CBI UCSRB,RXEN
CBI UCSRB,TXEN

На плате Arduino выводы PD0 и PD1 соединены с модулем-преобразователем USB->RS232,скорей всего из- за этого и не работает.

Это сообщение отредактировал(а) sally555 - 27.4.2009, 07:08
PM MAIL   Вверх
anterior
Дата 27.4.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.4.2009

Репутация: нет
Всего: нет



Цитата(sally555 @ 27.4.2009,  06:40)
Отключение передачи USART,регистр UCSRB,  бит TXEN = 0,
Отключение приема USART,регистр UCSRB,  бит RXEN = 0.
Примерно так:
Код

CBI UCSRB,RXEN
CBI UCSRB,TXEN

На плате Arduino выводы PD0 и PD1 соединены с модулем-преобразователем USB->RS232,скорей всего из- за этого и не работает.

Спасиб, понял) Следующий код помещённый в начало RESET'a помог:
Код

clr temp
sts UCSR0B,temp

wait1:
    lds temp,UCSR0A
    sbrs temp,UDRE0
    rjmp wait1



Это сообщение отредактировал(а) anterior - 27.4.2009, 14:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.