Страница 303 из 304

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс мар 09, 2025 21:21:22
shonty
vem566 писал(а):Минимальный делитель = 4
а SPI2X в SPSR ?
Тогда 10мгц будет

Добавлено after 1 minute 28 seconds:
Данные напрямую через регистры в SPDR отправляйте. Возможно библиотеки ОЗУ используют, от этого медленно.

Добавлено after 16 minutes 53 seconds:
shonty писал(а):    out SPDR, color_back_H
      in TEMP,SPSR         ; ожидание конца передачи
      sbrs TEMP,SPIF
      rjmp PC-2
   out SPDR,color_back_L
      in TEMP,SPSR         ; ожидание конца передачи
      sbrs TEMP,SPIF
      rjmp PC-2
Дошли руки ещё немного ускорить :roll:

Код: Выделить всё

   out SPDR, color_back_H
		lpm  				; ожидание конца передачи
		lpm
		lpm
		lpm
		lpm
		rjmp pc+1
		in TEMP,SPSR		; считывание SPSR для очистки SPIF
   out SPDR,color_back_L
      in TEMP,SPSR         ; ожидание конца передачи
      sbrs TEMP,SPIF
      rjmp PC-2
Первое ожидание конца передачи лучше так переписать. А вот второе.. лучше пока оставить, тем более если в цикл оформлять, то там немного по другому нужно сделать.

Добавлено after 41 minute 24 seconds:
PS: последний код будет работать только при установленном бите SPI2X в SPSR. То есть скорость SPI=Fosc/2

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн мар 10, 2025 14:04:31
vem566
Да... Китайцы намудрили с дисплеем. Этому ушлёпку нужно обязательно 3 байта на цвет. Не понимает он 5+6+5. Или 6+6+6 или 8+8+8. Козёл! :kill:
Конструкции на ассемблере работают заметно быстрее. Получается заливка экрана чуть меньше 1 сек при полноцветном режиме. Буду пихать в SPI не стандартные комманды баскома типа SpiOut, а напихаю ассемблерных вставок.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн мар 10, 2025 14:15:52
shonty
Нормальный дисплей.. один раз разобраться..
У меня первый тфт 128*160 3 секунды грузился, потом я разгоном увлёкся))

При первой загрузке можно ещё такой фокус использовать: подавать сигнал на вывод LED дисплея когда экран уже залит и информация выведена, ну или лого..
Тогда создаётся иллюзия моментального включения.
:beer:

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн мар 10, 2025 17:07:34
vem566
Да оно и так уже нормально. Ассемблер помогает. Пришлось все же букварь по нему открывать. Выяснять какие регистры чем заняты по умолчанию. Плюнул в конце концов. Программно можно всяко исхитриться.
А не нашел - где лежат переменные, переданные в процедуру. В примерах ссылок на них нет. Просто переменная в заголовке, как параметр и все. Обошелся и без них, но просто интересно. :beer:

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн мар 10, 2025 18:12:55
Novice user
Я делал так очистку экрана для 9341,может поможет-

Код: Выделить всё

Sub Lcd_clear(byval Color As Word)
   Lcd_set_window 0 , 0 , X_size , Y_size
   Lcd_cs = 0
   Lcd_dc = 1
   !LD     XL,     Y+0
   !LD     XH,     Y+1
   !LD     R31,    X+
   !LD     R30,    X
      !ldi  R16, $c8          '76800   200
   Wgloop0:
      !ldi  R17, $C0          '192
   Wloop1:
      !OUT    spdr, R30
   Spi_ready1:
      !sbis spsr, spif
      !rjmp spi_ready1
      !OUT    spdr, R31
   Spi_ready:
      !sbis spsr, spif
      !rjmp spi_ready
      !OUT    spdr, R30
   Spi_ready2:
      !sbis spsr, spif
      !rjmp spi_ready2
      !OUT    spdr, R31
   Spi_ready3:
      !sbis spsr, spif
      !rjmp spi_ready3
      !subi R17, 1
      !brne wloop1
      !subi R16, 1
      !brne wgloop0
     'Lcd_cs = 1
End Sub

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн мар 10, 2025 18:36:51
vem566
Novice user, спасибо. Во время работы чистить экран надобности нет, а при включении он заливается цветом в режиме 8 цветов. Меньше секунды. Быстрее все равно не будет.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Сб мар 29, 2025 21:24:29
vem566
Ну чо, коты. Опять я с вопросами. Китайцы задолбали конкретно. Приехал очередной дисплей. ОЛЕД. 128 х 64. Фамилия на обороте GME64128-02. Описания в сети крайне скудное и маловразумительное. На каком контроллере не понятно. То ли SSD1306, то ли SH110 так и не понял. Адрес I2C определяется как 3С, но с не меньшим успехом работает и с 78. Правда тут может быть причастен аппаратный I2C. Инициализация по "родному" букварю не проходит. Зато проходит от SSD1306. Картинку разворачивает строго по вертикали. Никакими ухищрениями положить картинку на бок, что бы 128 было по горизонтали, не получается. Кроме того, работает только половина экрана. То есть из 64 оображаются 32. При этом при выводе текста происходит смещение за границу экрана примерно на 28 пикселей. То есть чтобы получить начало текста(фонт 6х8) к нему надо прикрутить в начало 3-4 пробела. Всякие примеры ничего не меняют. Хоть с библиотекой glcd1306-i2c, хоть без нее. В последней версии этой библиотеки она вроде как может работать с обоими чипами, но волевое решение переключения на SH110 работать не хочет вовсе. Только с SSD1306. Впечатление, что или битый пришел, или китайцы перемудрили. Кто сталкивался с таким чудом?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс мар 30, 2025 20:34:05
vem566
Разобрался я с этич "чудом". Чип в нем SH1107, который изначально заточен под 128х128. Получается вообще хрен поймешь что. Мутота конкретная, короче. Будет попадаться такой - не советую. Что бы получить линию длиной 64 пикселя, нужно отправить 128. То ли съедает половину, то ли "черезстрочная развертка". Поворот на 90 градусов отсутствуе по причине не ведомой. Только на 180. Хотя в приличных дисплеях крутится с шагом 90. Прямой адресации пикселей нет. Почему он "графический"! Похоже один вариант приемлемой работы - через буфер всего экрана. Не нашел автоматического перехода на следующую строку при достижении конца текущей. Куда то в прорву уходят байты. Явная адресация строки. Иначе никак. И при строке 64 пикселя нужно отправлять 128, иначе половина. В то же время, если фонт 8х8, то для прорисовки символа хватает 8. Не нужно повторять. Может, конечно, у меня ума не хватает, но это далеко не первый дисплей у меня в руках.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пт май 23, 2025 21:01:39
michael_1976
vem566, приветствую!
Тоже угораздило купить это чудо. Удалось вам повернуть экран на 90 градусов? там где покупал, есть отзывы с фото где текст повернут и идет вдоль длинной стороны экрана.

Решено:
Библиотека #include <U8g2lib.h>
Пример FlipMode
U8G2_SH1107_64X128_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

А если использовать конструктор вот так, то можно сразу повернуть экран и дале выводить как на экран 128х64
U8G2_SH1107_64X128_1_HW_I2C Display(U8G2_R1, /* reset=*/ U8X8_PIN_NONE);

Re: BASCOM AVR в вопросах и ответах

Добавлено: Сб май 24, 2025 09:04:02
vem566
michael_1976, повернул. Все работает как нужно. У этого дисплея есть текстовый режим, при котором на символ нужно 2 байта - для китайских иероглифов. Отсюда все непонятки.
Разработка на баскоме, но у него есть аналог U8g2lib.h. Хотя работает и без неё.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт май 27, 2025 15:34:10
michael_1976
А что значит текстовый режим? Как его использовать?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср май 28, 2025 07:13:49
vem566
Ну это не совсем встроенный текстовый режим со встроенным знакогенератором. При передаче байта по конкретному адресу для автоматического перехода на следующий адрес нужно два байта послать. Или явно сменить адрес. У китайцев для одного иероглифа на знакоместо нужно 2 байта. Поэтому и родилась аналогия с текстовым режимом.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср июн 18, 2025 17:55:01
Александр Д.
[uquote="vem566",url="/forum/viewtopic.php?p=4718067#p4718067"]У этого дисплея есть текстовый режим, при котором на символ нужно 2 байта - для китайских иероглифов. Отсюда все непонятки.[/uquote]
О! Прямо как в ST7920
тоже долго мучился, пока научился с ним работать.
Но в общем и целом нравится: 2 провода всего надо и на больших длинах проводов не капризничает.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср ноя 19, 2025 22:08:12
sathv
Добрый вечер. Только знакомлюсь с BASCOM-AVR, все было понятно пока не дошел до ADC. Не работает согласно командам из Help. Есть пример для АTtiny13, но он не интересен. Делаю в Proteus модель для Atmega8. После команды Getadc переменная принимает значения 20, 40,..,200 в диапазоне от 0 до 0,5В измеряемого напряжения. При напряжении больше 0,5В показания остаются равными 200. Подозреваю, что два байта, выдаваемые ADC не правильно пересчитываются. Но отсутствие знаний не позволяет разобраться. BASCOM у меня 2.0.8.6. Помогите, пожалуйста, устранить мою ошибку.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт ноя 20, 2025 07:03:02
Microtech
Как настроено опорное напряжение? Переменная объявлена как word?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт ноя 20, 2025 17:09:07
sathv
Это, правда, как-то связано с опорным напряжением. ADC не работал с внутренним и Vcc. Вернее, я не умею программно устанавливать внутреннее опорное напряжение. А после выбора опорным напряжением Aref измерения получаются. Этого мне достаточно. Спасибо за совет.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн дек 08, 2025 14:14:45
sathv
Добрый день. Неудобно спрашивать ерунду, наверное это всем известно. Подскажите, пожалуйста, как преобразовать строковую переменную "123" в число123 в BASCOM? С командой INT не получается. Спасибо.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн дек 08, 2025 14:31:01
dibor
Val()

Dim A As Byte , S As String * 10

S = "123"

A = Val(s) 'convert string

Print A ' 123

Re: BASCOM AVR в вопросах и ответах

Добавлено: Пн дек 08, 2025 18:11:30
sathv
Спасибо ! Знакомлюсь с BASCOM в основном по HELP'у. Прочитать то могу, а вот найти что требуется- никак. Премного благодарен.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Сб дек 27, 2025 18:39:08
Александр Д.
а скачать учебники и примеры? их много ))