| www.kn34pc.com https://www.kn34pc.com/forums/ |
|
| ATtiny85 https://www.kn34pc.com/forums/viewtopic.php?f=77&t=1070 |
Страница 1 от 2 |
| Автор: | LZ2WSG [ 10 Фев 2021, 12:50 ] |
| Заглавие: | ATtiny85 |
ATtiny85 като Arduino. – 8K bytes of In-System Programmable Program Memory Flash – 512 bytes In-System Programmable EEPROM – 512 bytes Internal SRAM начало: Programming ATtiny85 with Arduino Uno https://create.arduino.cc/projecthub/ar ... uno-afb829 Programming an ATtiny w/ Arduino 1.6 (or 1.0) http://highlowtech.org/?p=1695 The following Arduino commands should be supported: pinMode() digitalWrite() digitalRead() analogRead() analogWrite() shiftOut() pulseIn() millis() micros() delay() delayMicroseconds() SoftwareSerial() ATtiny85 pins: Прикачени файлове: https://engineerzero.blog/2013/05/07/at ... e-sketches Прикачени файлове: Код за потвърждение: // ATMEL ATTINY45/85 / ARDUINO // // +-\/-+ // Ain0 (D5) PB5 1| |8 Vcc // Ain3 (D3) PB3 2| |7 PB2 (D2) Ain1 // Ain2 (D4) PB4 3| |6 PB1 (D1) pwm1 // GND 4| |5 PB0 (D0) pwm0 // +----+ -------------------------------------------------- Прикачени файлове: При мен: Arduino Nano като Arduino ISP. ATtiny85 с 8 MHz вътрешен клок. Светодиод на извод 3, през 1k към GND. Код за потвърждение: void setup() { pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); delay(1000); digitalWrite(4, LOW); delay(1000); } Прикачени файлове: blink работи. LED прави: миг-миг-миг- ... . --- Много яко липсват изводи на микроконтролерчето. Или за прости проекти ще е, или трябва "здрава" заигравка с експандери, шифратори, дешифратори, преместващи регистри ... Ако I2C тръгне без затруднения, горното ще е лесно. |
|
| Автор: | LZ2WSG [ 10 Фев 2021, 13:05 ] |
| Заглавие: | Re: ATtiny85 |
Цитат: The ATtiny85 (and it's cousins) does not have I2C (or SPI) "built in". Instead it has a Universal Serial Interface (USI) that can be used to facilitate I2C and SPI. Добре започваме с I2C .Хубавото е, че някой вече го е направил. Да видим как да го използваме. |
|
| Автор: | LZ2WSG [ 10 Фев 2021, 14:29 ] |
| Заглавие: | Re: ATtiny85 |
Библиотека TinyWire https://playground.arduino.cc/Code/USIi2c ATtiny85 изводи: SDA - 5 SCL - 7 Свързах програмиращото Arduino Nano (с ArduinoISP) през резистори 100 Ohm към MISO, MOSI, RESET, SCK на ATtiny85. Така състоянията на изходите-товари почти не си влияят и не превключвам нищо при програмиране и запускането на програмата към изпълнителите схеми - работата е както нормална Arduino-платка .--- За тест свързах PCF8574, blink на P0 (4 извод) - резистор 1k, LED към +5V. LED си мига .Прикачени файлове: Прикачени файлове: --- Наред за тест е Si5351 с TinyWire .
|
|
| Автор: | LZ2WSG [ 10 Фев 2021, 20:54 ] |
| Заглавие: | Re: ATtiny85 |
С общата библиотека за TWI Master/Slave (TinyWire) не можах да пусна засега по лесния начин управлението към Si5351 (по QRP-labs), но с TWI Master (TinyWireM) е ОК - ATtiny85 зарежда една честота в Si5351: 722 bytes of flash written ![]() Прикачени файлове: Прикачени файлове:
|
|
| Автор: | LZ2WSG [ 10 Фев 2021, 22:16 ] |
| Заглавие: | Re: ATtiny85 |
Извадих Wire.h от пакета на Digispark. I2C си работи като Ардуиновското .https://github.com/digistump/DigistumpArduino По-долу: Si5351 на една честота с управление по QRP-labs. Прикачени файлове: Вероятно ще ми са полезни експерименти за SoftI2C: бързината на зареждане в случая не ми е важна, a универсалността за свързване към изводите. --- При сбит, оптимизиран код кодът за цяло VFO би трябвало да се събере. Следваща задача: свързане на енкодер. А единият извод за хардуерно прекъсване вече е зает от SDA ... все интересни неща. - първа идея: енкодер към два нормални извода - втора идея: SoftI2C към други, свободни изводи - трета ...
|
|
| Автор: | LZ2WSG [ 11 Фев 2021, 19:30 ] |
| Заглавие: | Re: ATtiny85 |
Заработиха: 1. I2C based on "I2C_without_ACK", работещо на всеки достъпен извод. Без внесено забавяне (до достигане на стандартните за I2C 100 kHz/400 kHz). Поне ИС Si5351 зарежда нормално. Получих (засега) и най-малкия размер памет при зареждане на една честота в Si5351: Код за потвърждение: Скицата използва 480 байта (5%) от пространството за програми. Максимумът е 8192 байта. Глобалните променливи ползват 9 байта (1%) от динамичната памет, оставяйки 503 байта за локални променливи. Максимумът е 512 байта. 2. Ben Buxton Rotary encoder handler for Аrduino v1.1, свързан в loop (Polling). --- Наред за тест е дисплей по I2C: напр. LCD 1602 през I2C-модул на PCF8574. |
|
| Автор: | LZ2WSG [ 12 Фев 2021, 11:20 ] |
| Заглавие: | Re: ATtiny85 |
LCD 1602, управляван от библиотека LiquidCrystal_I2C и Wire.h от пакета на Digispark: Прикачени файлове: Прикачени файлове: --- Свързани са: ATtiny85, Si5351A, encoder, LCD1602 с I2C-модул на PCF8574 и VFO-то е принципно готово за развитие .По-долу: 80m/20m с превключване с дълго натискане на ключа на енкодера. (Няма свободен хардуерен извод за изход за превклюване на напр. реле за BPF на 80m/20m!) Прикачени файлове: Редовете в loop са малко, с флагове задействам компонентите по събитие. Не виждам засега забавяне в реакцията заради encoder в loop (polling) .Без оптимизация повече от половината Flash е свободна. |
|
| Автор: | LZ2WSG [ 12 Фев 2021, 21:24 ] |
| Заглавие: | Re: ATtiny85 |
И изводите свършиха ... Входът от ключа на енкодера напр. може да се клонира многократно като бутони през делители към АЦП, но с изход за релета при повече обхвати, освен с еспандер по I2C ... Други идеи? Чипът е хем с ограничени възможности (напр. малък брой вх/изх изводи), хем е и интересен ... развива мисленето .
|
|
| Автор: | LZ2WSG [ 12 Фев 2021, 21:24 ] |
| Заглавие: | Re: ATtiny85 |
В схеми срещам pin RESET да се използва за вход. Напр. тук: Single Band si5351 Digital VFO https://www.zl2pd.com/tiny85_si5351_VFO.html Презаписват се фюзовете. Ако е необходима корекция и препрограмиране след време, е необходим HV-програматор ... Иначе чипът не е видим за програматора. Обаче реално след всяка малка стъпка в кода го тествам. Да местя непрекъснато чипа от програматор на работещо (или тестово) устройство си е мъка, дори на цокъл. И без вариант за грешка с фюзовете (нямам HV-програматор). Засега изоставям идеята. За крайно устройство - да, става: даваш кода и схемата на някой, той го повтаря и конструкцията заработва. Друга възможност: извод RESЕТ да е ADC, към напрежение 5V...2,5V (клавиатура с бутони и делители, друго?), а напрежението като стане по-ниско (до 0V), ще си изпълнява RESET-функцията. Изпълнимо, ще се пробва, ако не за непрекъснато използване, то поне като възможност. |
|
| Автор: | LZ2WSG [ 14 Фев 2021, 11:36 ] |
| Заглавие: | Re: ATtiny85 |
Реших да тествам скоростта на ATtiny в зависимост от честотата на вътрешния clock. 1 MHz, 8 MHz, 16 MHz Промяната на вътрешния clock е свързана с промяна на fuses, които се записват през запис на bootloader. Т.е. на всяка промяна на честотата в менюто трябва да се извърши "Записване на зареждаща програма". Прикачени файлове: ------------------- Кратка програма за броене на цикли в loop за 5 000 000 us (или 5 s): Прикачени файлове: Понеже не съм намерил подходящия начин (засега) за използване на Serial в ATinny85, резултатите извеждам в LCD1602 чрез LiquidCrystal_I2C. ------------------- Прикачени файлове: ATtiny85, Internal Clock = 1 MHz, за 5 сек - 42116 цикъла ------------------- Прикачени файлове: ATtiny85, Internal Clock = 8 MHz, за 5 сек - 409938 цикъла ------------------- Прикачени файлове: ATtiny85, Internal Clock = 16 MHz, за 5 сек - 883665 цикъла ------------------- Оставям си Internal Clock за използване и тестове на 16 MHz
|
|
| Автор: | LZ2WSG [ 14 Фев 2021, 14:44 ] |
| Заглавие: | Re: ATtiny85 |
И изводите на ATiny85 свършиха . А как ми се иска да има поне един свободен, за да може и S-метър да се задейства ... ![]() --- тестове с RESET pin: Reset се задейства, когато напрежението на извод RESET е по-малко от 2,2V. Следва, че през АЦП-то състоянието на извода може да се използва от напр. 5V до напр. 2,5V. постановка по-долу: Прикачени файлове: Прикачени файлове: Към програмиращото Arduino добавих диодче - да не си вляят напреженията, а при програмиране: RESET да си работи. --- Освободи се 1 (pin 6), но няма АЦП. Трябва да се преконфигурират изводи към енкодера примерно на друг пин, или soft_I2C?. Към първото отива работата ... --- Още варианти: Напрежението за S-метъра да е от 2,5V нагоре (до 5V) - детекторa му да е свързан към средна точка на делител (GND-R-R-+5V). Тогава и клавиатура с бутони с делители може да се свърже, или изход за реле за два обхвата ... |
|
| Автор: | LZ2WSG [ 17 Фев 2021, 00:31 ] | ||
| Заглавие: | Re: ATtiny85 | ||
Х-ъ-х-х-х-х, "голяма борба падна" с OLED 0,91" 128x32 докато "тръгне" към ATtiny85 (с библиотека SSD1306Ascii). Много версии има за I2C драйвер. Успях да приспособя използвания досега. Но дисплеят засега е с "точки" ... . Инфо от линка по-долу: това са случайни данни в RAM. Потвърждавам: на всяко включване точките са на различно място ... OLED Display Driven by ATtiny10 https://www.hackster.io/bitbanging/oled ... y10-986571 Цитат: When the display is first turned ON, the content of the RAM is completely random. So it will show pixels randomly turned on. Clear от библиотеката не помага. С доп. външна процедурка за чистене - също, засега ... . Код за потвърждение: #include "src/Wire.h" Wire.begin(); Wire.beginTransmission(0x3C); Wire.write(0x40); for (uint8_t i = 0; i < 128; i++) { Wire.write(0x00); Wire.write(0x00); Wire.write(0x00); Wire.write(0x00); } Wire.endTransmission(); Приемам идеи ...
|
|||
| Автор: | LZ2WSG [ 20 Фев 2021, 17:05 ] | ||
| Заглавие: | Re: ATtiny85 | ||
В RAM на ATtiny85 няма място за буфер за един кадър. Подозренята ми бяха към процедурата clear по-долу: В Код за потвърждение: void SSD1306Ascii::clear(uint8_t c0, uint8_t c1, uint8_t r0, uint8_t r1) замених Код за потвърждение: ssd1306WriteRamBuf(0); на Код за потвърждение: ssd1306WriteRam(0); ... и точиците след старт са премахнати При бързо изменяне на честотата има известно забавяне, сравнено с работата с Arduino. В SSD1306Ascii към Arduino, I2C е във fast_mode. При емулация USI -> TWI за ATtiny85 се съмнявам дори, че покрива и 100 kHz. А и има разлика в обработката на енкодера по прекъсване и в loop. Но забавянията и с OLED не са сериозни за използване като VFO . Дотук съм доволен от резултата.
|
|||
| Автор: | LZ2WSG [ 20 Фев 2021, 18:02 ] |
| Заглавие: | Re: ATtiny85 |
Good USI I2C master / slave ATTiny85 library (optionally master arbitration) Код за потвърждение: //I2C Bus Specification v2.1 FAST mode timing limits #ifdef I2C_FAST_MODE #define I2C_TLOW 1.3 #define I2C_THIGH 0.6 //I2C Bus Specification v2.1 STANDARD mode timing limits #else #define I2C_TLOW 4.7 #define I2C_THIGH 4.0 #endif При мен - в USI_TWI_Master_Wire.h: Код за потвърждение: // For use with _delay_us() #define T2_TWI 5 // >4,7us #define T4_TWI 4 // >4,0us на Код за потвърждение: [code]// For use with _delay_us() #define T2_TWI 1 // >4,7us #define T4_TWI 1 // >4,0us[/code] и ефектът е добър .---------------------------------------- Сравняване с Arduino: определен код за зареждане на една честота в Si5351: I2C 100 000 kHz -> 3300 uS I2C 400 000 kHz -> 1508 uS Същя код с ATtiny85: с 5 us, 4 us: 5256 us с 1 us, 1 us: 2396 us |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|