Attiny 2313 плюсы и минусы

Тема в разделе "Микроконтроллеры AVR", создана пользователем DrProg, 9 ноя 2015.

  1. DrProg

    DrProg Вечный нерд

    Для реализации малых и сверхмалых задач недавно обратил внимание на сабж. В плюс от возлюбленной Attiny85 его отличает многоногость (18 функциональных против 6) , наличие 16и разрядного таймера и цена, которая ниже почти вдвое. Из пока что обнаруженных минусов: бОльшие габариты (если это критично), меньшая программная память (2 против 8), вдвое меньший EEPROM и SRAM и отсутствие АЦП (наверное, это главный недостаток).

    [​IMG]

    Большой общий минус всех тинек - неполноценный аппаратный SPI, который не позволяет им работать с некоторыми устройствами, например с всесторонне обсосанным на этом форуме RFID RC522. Поговаривают, что можно сделать программные костыли для этих задач, но пока никто не сделал (или не поделился сделанным).

    В целом, МК заслуживает внимания, в основном благодаря цене (от 30 руб на Али) и количества ножек, при которых не чувствуешь себя менее зажатым как с "осьминожками" 13, 45 и 85.
     
    amironov73, Unixon, ИгорьК и ещё 1-му нравится это.
  2. Airbus

    Airbus Радиохулиган Модератор

    Хороший камень.Мой любимый до недавнего времени.(теперь я Мегу8 люблю).Есть всё в.т.ч. USART.И ног хватает под бОльшую часть задач и даже под Кварц.Недостатки?Большие габариты?Есть версия в MLF корпусе.Память?Есть Тини 4313 (а именно они сейчас и продаются в России 4 кбайт Flash, 256 байт EEPROM, 256 байт SRAM)SPI?Немного не понял что значит неполноценный-поясните.Вот цена стала не хорошая под 100 руб почти соизмеримая с Мегой8 ну а за 30 руб-просто песня!Дайте ссылку куплю себя пяток!
     
    KamAdm и egordorichev нравится это.
  3. DrProg

    DrProg Вечный нерд

    Про 30+ наверное я погорячился, хотя вчера вроде бы находил. А вот по 40+ есть и сейчас. С Atmega8 не сравниваю, потому что это другой класс, ее я тоже люблю. 4313 довольно экзотичен, найти его не просто, да и цена такая, что выгодней купить помянутую Атмегу 8.
     
    ИгорьК нравится это.
  4. Airbus

    Airbus Радиохулиган Модератор

    А понятно...Это в маленьком корпусе они дешевле чем в DIP. А 4313 вполне нормальный у меня несколько работают в разных устройствах (Тини 2313 не нашлось)только программа прошивки ругается (чё за чип типа) я выбираю принудительно 2313 и фсё!Покупал здесь http://chip-nn.ru/70.php рублей за 70 но это год назад.А Мегу8 на Ебае совсем недавно по 50 рублей
     
  5. Максим B

    Максим B Гуру

    Еще 1 минус -в нее не влезет bootloader для Arduino.
     
  6. Airbus

    Airbus Радиохулиган Модератор

    А зачем он там нужен?Там при желании можно залить свой.Всё равно 2313 по выводам не совместима с Ардуино.Хотя есть у меня плата под Ардуино шилды распиновка там конечно другая но Reset RX TX совпадают.Шью через ISP (мне так проще и быстрее)хотя можно через порты.Связь по USB через FT232
    222.JPG
     
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    эм, а зачем такие извращения с урезанной функциональностью и меньшим объемом памяти, энергосбережения в ней нет, АЦП нет, если уже готовая и разведенная (с кварцем, конденсаторами, кнопкой и стабилизатором) ProMini стоит меньше 100 рублей (на Atmega 168, на Atmega 328)? Самодельная в итоге потребует и затрат времени, дороже выйдет и бОльшие габариты.
     
    vvr нравится это.
  8. DrProg

    DrProg Вечный нерд

    В некоторых случаях хватает. Секундомер или часы сделать, например. Или вспомогательную плату, что, как выяснилось, приходится делать чаще чем казалось изначально. Про Мини даже жалко использовать, несмотря на цену.
     
    ИгорьК нравится это.
  9. Tomasina

    Tomasina Сушитель лампочек Модератор

    надо относиться к ним как к расходникам ;)
     
  10. DrProg

    DrProg Вечный нерд

    Так и есть. И та же Про Мини - расходник, такова ее судьба. )
     
    ИгорьК нравится это.
  11. Airbus

    Airbus Радиохулиган Модератор

    Для меня развести и сделать печатку дело 20-30 минут (слава ЛУТу!) Но конечно сделал её не ради великого а прикола для.Чтоб использовать некоторые шилды.Да и основная мысль было тогда GSM контроль и управление-для этого 2313 самое ОНО!Да и для банальной Логики-опрос датчиков кнопок многоканальное управление.Ну а насчёт урезанности позволю не согласиться смотря что с чем сравнивать.На Меге8 а тем более328 любой НУБ сделает мигалку светодиодную.А вот попробуйте сделать 4 х канальное обучаемое IR/RF управление на тини13?А чтение RFID карт и замок на них на тини13?А ведь делают и гениально делают!Конечно эта штучка всё таки больше Тини чем Мега.Но зато какая вещь!))))))) http://tinyurl.com/pdpj2hk
     
    Последнее редактирование: 10 ноя 2015
  12. DrProg

    DrProg Вечный нерд

    Ну ка покажите мне где рфид ридер на Тини работает? Хоть на какой нибудь.
     
    ИгорьК нравится это.
  13. Airbus

    Airbus Радиохулиган Модератор

    Вот http://tinyurl.com/k2junp5 например на РадиоДеде несколько разных устройств
     
    Последнее редактирование: 10 ноя 2015
  14. Airbus

    Airbus Радиохулиган Модератор

  15. DrProg

    DrProg Вечный нерд

    Это самодельные ридеры, я не буду с ними заморачиваться, учитывая что настоящие стоят рублей 150. Но фабричные работают по протоколу SPI, который Tiny не поддерживают, во всяком случае без напильника. Есть еще другие протоколы, по слухам, но найти описание к ним и вовсе нереально. Таким образом, казалось бы самая очевидная простая задача - работа с РФИДом для Тинек пока что задача невыполнимая.

    Но я упорный, я таки их подружу. Потом, когда время будет. Изучу даташит и доломаю.
     
    ИгорьК нравится это.
  16. ИгорьК

    ИгорьК Гуру

    Каг-бэ, Тип энд Трикс на отважное заявление.
    А также шаблон от румынских друзей:
    Код (C++):
    #include <tiny2313.h>

    // USI counter overflow interrupt service routine
    interrupt [USI_OVERFLOW] void usi_ovf_isr(void)
    {
    // Place your code here

    }

    void main(void)
    {
    // Declare your local variables here

    // Crystal Oscillator division factor: 1
    #pragma optsize-
    CLKPR=(1<<CLKPCE);
    CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
    #ifdef _OPTIMIZE_SIZE_
    #pragma optsize+
    #endif

    // Input/Output Ports initialization
    // Port A initialization
    // Function: Bit2=In Bit1=In Bit0=In
    DDRA=(0<<DDA2) | (0<<DDA1) | (0<<DDA0);
    // State: Bit2=T Bit1=T Bit0=T
    PORTA=(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

    // Port B initialization
    // Function: Bit7=In Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRB=(0<<DDB7) | (1<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
    // State: Bit7=T Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

    // Port D initialization
    // Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
    DDRD=(0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
    // State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
    PORTD=(0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0A output: Disconnected
    // OC0B output: Disconnected
    TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
    TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00);
    TCNT0=0x00;
    OCR0A=0x00;
    OCR0B=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (0<<TOIE0) | (0<<OCIE0A);

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // Interrupt on any change on pins PCINT0-7: Off
    GIMSK=(0<<INT1) | (0<<INT0) | (0<<PCIE);
    MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

    // USI initialization
    // Mode: Three Wire (SPI)
    // Clock source: Register & Counter=no clk.
    // USI Counter Overflow Interrupt: On
    USICR=(0<<USISIE) | (1<<USIOIE) | (0<<USIWM1) | (1<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC);


    while (1)
          {
          // Place your code here

          }
    }
    Но лучше воспользоваться проверенными методами :)
     
  17. DrProg

    DrProg Вечный нерд

    Вот это что? Попытка сделать SPI из USI?
     
    ИгорьК нравится это.
  18. Megakoteyka

    Megakoteyka Оракул Модератор

    Как будто в этом есть что-то плохое.
    http://www.atmel.com/images/doc2582.pdf
     
  19. Unixon

    Unixon Оракул Модератор

    Прикольный МК! Особенно в QFN20 - один из самых маленьких и с аппаратным UART на борту. Если не хватает 2K флэша - есть 4313 и даже 1634 (у нас - редкость, на Али - завались).
     
  20. DrProg

    DrProg Вечный нерд

    Плохого нет, это и называется добить, потому что готового решения, такого тобы взять и использовать нет. Или я не смог найти.
     
    ИгорьК нравится это.