roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 14:35

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 17:31 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
Вот вплотную занялся дисплеем от Семена - есть проблема. Какойто бок с аппаратным SPI.

вот собственно все что к нему относится (куски из библиотеки Christian Kranz):

Код:
// настройка портов   
    cbi     LCD_PORT, LCD_RESET     ; display reset
    sbi     LCD_DDR,  LCD_RESET     ; set reset as output
    cbi     LCD_DDR,  LCD_MISO      ; MISO is always input in SPI
    sbi     LCD_DDR,  LCD_MOSI      ; MOSI must be set as output for SPI
    sbi     LCD_PORT, LCD_CS        ; deselect display
    sbi     LCD_DDR,  LCD_CS        ; SS must be output for Master mode to work


    cbi     LCD_PORT, LCD_SCK       ; set SCK lo
    sbi     LCD_DDR,  LCD_SCK       ; set SCK as output
    sbi     LCD_PORT, LCD_MISO      ; enable pull up of MISO to avoid floating input

    sbi     LCD_PORT, LCD_RS        ; start with RS=high
    sbi     LCD_DDR, LCD_RS         ; RS signal is output

    ; setup serial data interface
    ; select clock phase positive going in middle of data
    ; master mode
    ; enable SPI
    ; speed is CPUclock/2

    ldi     r24,(1<<MSTR) | (1<<SPE)
    out     LCD_SPCR,r24

    ldi     r24,1              ; double speed bit
    out     LCD_SPSR,r24

// задержка
   
    sbi     LCD_PORT, LCD_RESET ; release reset
    in      r24,LCD_SPSR        ; clear status   

// задержка

    ; ports and SPI are now configured

    ldi     T1,0xFD
    rcall   glcdDispCommand   <<- отсюда МК уже не возвращается
...


Смотрим что там в glcdDispCommand (откуда МК уже не выходит):
Код:
       cbi     LCD_PORT,LCD_CS        ; select Display
       sbi     LCD_PORT,LCD_RS        ; set RS line
       rjmp    SPI_SEND
....
PI_SEND:
    sbi     LCD_SPCR,SPE        ;enable SPI
    out     LCD_SPDR,T1         ;load byte in SPI data register

SPI_SEND_0:
    sbis    LCD_SPSR,SPIF
    rjmp    SPI_SEND_0            <<- вот из этого лупа уже никогда не выходит

ПОЧЕМУ МОЖЕТ НЕ ВЫСТАВЛЯТСЯ SPIF ???
 
.....
    ret


с дисплеем и проводами вроде все в порядке - загружал прогу на БАСКОМ - там программный SPI - картинку показывало. подумал может провода длинные - попробовал снизить скорость SPI - не помогло тоже.
Кто глубоко работал с SPI? Домоможить!! :O:

Добавлено спустя 1 минуту 45 секунд:
с этой библиотекой работал на другой плате - макетке - иногда висло через несколько часов работы, но SPI хотяб работал

Добавлено спустя 1 минуту 27 секунд:
SPI когда передает данные - он вообще слейва видит както? или просто выставляет данные, выдате такт 8 раз и передача окончена? Слейв никак не маякует что все в порядке?

Добавлено спустя 2 минуты 36 секунд:
попробую в другой МК залить :no: . мож этот нехороший...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 17:57 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
LCD_PORT, LCD_CS, LCD_DDR - как определены? Контроллер какой?

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 17:58 
Не в сети

Зарегистрирован: 17 апр 2009, 15:09
Сообщения: 987
Откуда: Rostov-Don
Цитата:
SPI когда передает данные - он вообще слейва видит както? или просто выставляет данные, выдате такт 8 раз и передача окончена? Слейв никак не маякует что все в порядке?

я с этими дисплеями работал, правда без SPI.
Кой-чего маяковать GLСD могут, в сотиках используется, в прочих девайсах - нет.
Просто шлем байтики в сторону LСD. Тактовая не более 4МГц для монохромных и 10..13 для цветных.
Контролем можно считать инициализацию дисплея. Получив набор байтиков с правильными кодами и таймингами, дисплей просыпается и высвечивает мусор. Мусор можно не увидеть, если параметры не так выставлены, но ток увеличивается.


Последний раз редактировалось contr 03 окт 2009, 18:08, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 18:00 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
contr, к чему этот опус? Вопрос прочитай ещё раз

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 18:05 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
Вот так (уже три раза сверился со схемой)

Код:
  #elif defined (__AVR_ATmega32__)
  #define   LCD_PORT                _SFR_IO_ADDR(PORTB)
  #define   LCD_PIN                 _SFR_IO_ADDR(PINB)
  #define   LCD_DDR                 _SFR_IO_ADDR(DDRB)
  #define   LCD_CS      PB2
  #define   LCD_RESET   PB3
  #define   LCD_RS      PB1
  #define   LCD_MOSI    PB5
  #define   LCD_MISO    PB6
  #define   LCD_SCK     PB7


МК в мэйкфайле :

# MCU name
MCU = atmega32

МК виснет на первой же отправке комманды по SPI (место зависания отмечено в первом посте)

Добавлено спустя 4 минуты 49 секунд:
Залил на другой, такойже МК - ничего.


Вложения:
Комментарий к файлу: На всякий пожарный
Software.rar [488.18 КиБ]
Скачиваний: 9
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 18:06 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
PB4 (SS) должен быть настроен как выход. Иначе SPI master не работает, и ждать установки флага можно до второго пришествия :)

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с SPI
СообщениеДобавлено: 03 окт 2009, 18:28 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
сейчас попробую.

Епатий-Коловратий, да ты гуру, blindman!!!! :Bravo: Уже который раз подряд выручаеш! :good:
Спасибо тебе огромное.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO