На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > [ нупский вопрос ] Можно как нибудь использовать встроенный в ATtiny SPI?
      Можно ли как нибудь использовать встроенный в ATtiny SPI для общения с другими контроллерами в схеме? Или этот интерфейс в нем только для заливания программы?
        Только для заливания программы. Но поскольку выводы, которые используются под SPI, ещё и функуию обычных линий ввода/вывода выполняют, то почему бы и не замутить програмный аналог SPI для связи с другими МК.
          А можно программку готовую, сорри конечно за наглость.
          А то гугль молчит на atmel spi

          Добавлено
          То есть меня интересует прога, которая скажем 1 байт в r0 прочитает
            изучаешь
            Serial Peripheral Interface Bus
            изучаешь доку на mcu

            цепляешь sck на int0
            mosi и miso на пару пинов ввода вывода

            конфигаешь int0 на rising edge, то есть срабатывание по нарастанию фронта
            в обработчике смотришь, что у тя на mosi (если slave-ом тинька будет), и складываешь сдвигом в приёмный буфер


            ЗЫ: лучше тинька слэйв, шоб не тактовать

            если делать тиньку мастером, то тактовать по таймеру на тиньке, ИМХО
            Сообщение отредактировано: ElcnU -
              Спасибо, я знаю как работает SPI.
              Просто я не хочу(возмутительно, не правда ли?) писать программу на тему которую столько раз перетирали. Поэтому и спрашиваю готовую.
                Подпрограмма
                uint8_t spi_io(uint8_t b);
                SPI master под один конкретный режим SPI (фиксированные CPOL/CPHA, MSB/LSB first), одновремённо ввод и вівод байта
                = 35 слов, 235 символов.

                Ваши сообщения в этой теме в сумме
                = 77 слов, 487 символов.

                А ещё гугление было, тоже время заняло.

                Так что или неправда, что Вы знаете, как работает SPI (так как тогда было бы быстрее написать, чем спрашивать), или феноменальная лень, поощрять которую я не собираюсь.
                Сообщение отредактировано: avreal -
                  avreal
                  То что вы написали - полная фигня, выдающая ваше чрезмерное самомнение
                  Вы даже пишите "поощрять которую я не собираюсь", хотя я вовсе и не просил лично вас мне помогать. Вопрос обращен к людям, которые могут\хотят помочь. А не ко всем.
                    А я и хочу помочь и могу. У меня просто другое понимание слова "помошь", я считаю, что самое полезное, это такую простую вещь написать самостоятельно.

                    http://electronix.ru/forum/lofiversion/index.php/t45974.html
                    Цитата
                    Просьба о помощи - это когда "прочёл то-то, сделал то-то, выходит такая-то лажа - что это может быть?". А когда "поделитесь исходниками" - это называется "дайте списать".


                    По поводу простоты программного SPI - это просто констатация факта. Я его писал много раз для разных процессоров и языков и каждый раз быстрее написать заново под конкретный случай, чем искать свой же старый исходник и редактировать под нужные параметры.

                    p.s. Для начинающих есть апноты производителя, а не гугл. Atmel application note AVR319, AVR320.
                    Если нужен soft SPI slave на тиньке без USI, то это немного сложнее в плане достижения высоких скоростей, логика простая всё равно.
                    Сообщение отредактировано: avreal -
                      SPI может иметь довольно изощренную реализацию. Например запись бита может происходить по фронту или спаду синхроимпульса. Между посылками шина может устанавливаться в ноль или единицу. Подключение нескольких устройств возможно цепочкой или звездой. В случае нескольких мастеров на шине требуется арбитраж и перевод в третье состояние линий.

                      Только готовые исходники будут заточены либо под одну конкретную реализацию. Либо универсальные огромного размера и сложной настройкой, которые без понимания все равно не настроишь. А с пониманием проще написать самому.
                        Ладно, SPI пока отложим, у меня тут еще маленький вопросик.
                        ATmega8535L может работать без внешнего резонатора? (не смейтесь, я серьезно)
                          Цитата MeG @
                          Только готовые исходники будут заточены либо под одну конкретную реализацию. Либо универсальные огромного размера и сложной настройкой, которые без понимания все равно не настроишь. А с пониманием проще написать самому.

                          Вот и я о том же. Написать под конкретный вариант использования - довольно несложно.
                          Мне они то там, то сям нужны бывают, пробовал сварганить универсальные исходники, конфигурирующиеся при помощи принадлежащего проекту файла через
                          #include "soft_spi_cfg.h"
                          но пришёл к выводу, что игра свеч не стоит. Особенно учитывая то, что в конкретной системе может оказаться пару ведомых устройств с разным порядком следования битов :-)

                          -Added
                          Цитата ANDLL @
                          Ладно, SPI пока отложим, у меня тут еще маленький вопросик.
                          ATmega8535L может работать без внешнего резонатора? (не смейтесь, я серьезно)

                          Да, почти все AVR могут - internal calibrated RC-oscillator, у мег8515/8535 четыре возможных частоты 1, 2, 4, 8 MHz.
                          С завода идёт предустановленная на 1 МГц.
                          Но калиброванность такая себе, легко может вылететь за 3% и уже по RS232 обмен засбоит.
                          Без постоянной подкалибровки в таких местах не пойдёт.
                          Сообщение отредактировано: avreal -
                            Просто у меня странная проблемка - стоит этот контроллер, есть программатор mkII.
                            Программатор правильно читает сигнатуру, программу записывает, и считывает без ошибок.
                            Но почемуто сама программа не выполняется
                            ExpandedWrap disabled
                              .include "8535def.inc"
                               
                              ldi r17,0xff
                              out DDRA,r17
                              out PORTA,r17
                              out DDRB,r17
                              out PORTB,r17
                              out DDRC,r17
                              out PORTC,r17
                              out DDRD,r17
                              out PORTD,r17
                              L:
                              rjmp L

                            Тем не менее, после этой программы на всех выходах стоят нули.
                            Выходы Vcc,gnd разумеется подключены правильно, иначе бы врядли программатор правильно прочитал сигнатуру... В чем же может быть дело?
                              Более того, если бы генератор не работал - тоже ни сигнатура не прочиталась бы, ни программа не зашилась.

                              Ой, ну не знаю я...
                              Даже если SUT на максимальное время стоит и случайно запрограммирован WDTON - всё равно на сбросе грубо 64 мс контроллер стоять будет и работать грубо 16мс до сработки WDT. Так что полного нуля не должно быть на выходах, тестер усреднит и где-то 1/5 питания покажет.
                                Под нулем я имел ввиду что светодиоды не горят на выводах...
                                  Цитата ANDLL @
                                  Но почемуто сама программа не выполняется

                                  Имеется ли "правильный" RESET ?
                                    Да, программатор сам reset выставляет
                                      Цитата ANDLL @
                                      Тем не менее, после этой программы на всех выходах стоят нули.

                                      А если попробовать прогон "зашитой" программы не в программаторе? А в рабочем устройстве?
                                        Цитата medved_68 @
                                        А в рабочем устройстве?
                                        Дык, программа проганяется и так на работающей микросхеме.
                                        Отсоединил программатор, подсоединил reset к +5, но все равно ничего не поменялось
                                          Цитата ANDLL @
                                          Отсоединил программатор, подсоединил reset к +5, но все равно ничего не поменялось

                                          "Правильный" ли программатор - а раньше он проверялся ?
                                          Правильно ли установлены фузы ? Подключены светодиоды ?
                                          Правильный ли файл "8535def.inc" ?

                                          Вероятно, нужен осциллограф. Гадать можно бесконечно. :huh:
                                            ANDLL, светодиоды подключены к контроллеру анодом или катодом, второй вывод куда идет, на землю или на плюс? Если со светодиодом последовательно стоит резистор, то какой его номинал. Попробуй вместо светодиода поставить пьезоизлучатель, если ножками хоть раз дергает, то будет щелчок.

                                            -Added
                                            попробуй добавить сброс Watchdog Timer-а в цикле
                                            ExpandedWrap disabled
                                              .include "8535def.inc"
                                               
                                              ldi r17,0xff
                                              out DDRA,r17
                                              out PORTA,r17
                                              out DDRB,r17
                                              out PORTB,r17
                                              out DDRC,r17
                                              out PORTC,r17
                                              out DDRD,r17
                                              out PORTD,r17
                                              L:
                                              WDR
                                              rjmp L
                                              Цитата ЫукпШ @
                                              Гадать можно бесконечно. :huh:

                                              А как вам такая идея:
                                              Программатору неверно указан формат файла...
                                              В итоге в жук загружается ахинея.
                                                Цитата ЫукпШ @
                                                А как вам такая идея:
                                                Программатору неверно указан формат файла...
                                                В итоге в жук загружается ахинея.

                                                ЫукпШ но тогда эта "ахинея" и читалась бы в буфер программатора. Как то не сообразуется:
                                                Цитата ANDLL @
                                                Программатор правильно читает сигнатуру, программу записывает, и считывает без ошибок.
                                                :huh:
                                                  Цитата medved_68 @
                                                  Цитата ANDLL @
                                                  Программатор правильно читает сигнатуру, программу записывает, и считывает без ошибок.
                                                  :huh:

                                                  Медведь - допустим, программа в формате Intel-hex.
                                                  А программатору указали, что она в формате .bin
                                                  Файл правильно запишется-считается-сравниться.
                                                  Но записана ахинея.

                                                  Пару раз я сам попался на этом. :huh:
                                                    ЫукпШ, какой программатор не проверяет формат файла? просто чтоб им не пользоваться :)
                                                      Цитата MeG @
                                                      ЫукпШ, какой программатор не проверяет формат файла? просто чтоб им не пользоваться :)

                                                      Да любой - если в качестве формата укажешь .bin
                                                        ANDLL мож всё-таки рискнуть... и прицепить внешний кварц?
                                                        Программатор при прошивке всяка тактирует камень сам...
                                                        Добавь в цикл инверсию ног и задержку...ну шоб цэшкой можно было просечь...
                                                        ANDLL надеюсь без обид за нупские советы?
                                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                        0 пользователей:


                                                        Рейтинг@Mail.ru
                                                        [ Script execution time: 0,0648 ]   [ 16 queries used ]   [ Generated: 16.04.24, 07:30 GMT ]