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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение 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
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Да... Китайцы намудрили с дисплеем. Этому ушлёпку нужно обязательно 3 байта на цвет. Не понимает он 5+6+5. Или 6+6+6 или 8+8+8. Козёл! :kill:
Конструкции на ассемблере работают заметно быстрее. Получается заливка экрана чуть меньше 1 сек при полноцветном режиме. Буду пихать в SPI не стандартные комманды баскома типа SpiOut, а напихаю ассемблерных вставок.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Нормальный дисплей.. один раз разобраться..
У меня первый тфт 128*160 3 секунды грузился, потом я разгоном увлёкся))

При первой загрузке можно ещё такой фокус использовать: подавать сигнал на вывод LED дисплея когда экран уже залит и информация выведена, ну или лого..
Тогда создаётся иллюзия моментального включения.
:beer:
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Да оно и так уже нормально. Ассемблер помогает. Пришлось все же букварь по нему открывать. Выяснять какие регистры чем заняты по умолчанию. Плюнул в конце концов. Программно можно всяко исхитриться.
А не нашел - где лежат переменные, переданные в процедуру. В примерах ссылок на них нет. Просто переменная в заголовке, как параметр и все. Обошелся и без них, но просто интересно. :beer:
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

Сообщение 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
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Novice user, спасибо. Во время работы чистить экран надобности нет, а при включении он заливается цветом в режиме 8 цветов. Меньше секунды. Быстрее все равно не будет.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

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

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

Сообщение vem566 »

Разобрался я с этич "чудом". Чип в нем SH1107, который изначально заточен под 128х128. Получается вообще хрен поймешь что. Мутота конкретная, короче. Будет попадаться такой - не советую. Что бы получить линию длиной 64 пикселя, нужно отправить 128. То ли съедает половину, то ли "черезстрочная развертка". Поворот на 90 градусов отсутствуе по причине не ведомой. Только на 180. Хотя в приличных дисплеях крутится с шагом 90. Прямой адресации пикселей нет. Почему он "графический"! Похоже один вариант приемлемой работы - через буфер всего экрана. Не нашел автоматического перехода на следующую строку при достижении конца текущей. Куда то в прорву уходят байты. Явная адресация строки. Иначе никак. И при строке 64 пикселя нужно отправлять 128, иначе половина. В то же время, если фонт 8х8, то для прорисовки символа хватает 8. Не нужно повторять. Может, конечно, у меня ума не хватает, но это далеко не первый дисплей у меня в руках.
michael_1976
Родился
Сообщения: 3
Зарегистрирован: Чт ноя 14, 2024 00:51:11

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

Сообщение 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);
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

michael_1976, повернул. Все работает как нужно. У этого дисплея есть текстовый режим, при котором на символ нужно 2 байта - для китайских иероглифов. Отсюда все непонятки.
Разработка на баскоме, но у него есть аналог U8g2lib.h. Хотя работает и без неё.
michael_1976
Родился
Сообщения: 3
Зарегистрирован: Чт ноя 14, 2024 00:51:11

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

Сообщение michael_1976 »

А что значит текстовый режим? Как его использовать?
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Ну это не совсем встроенный текстовый режим со встроенным знакогенератором. При передаче байта по конкретному адресу для автоматического перехода на следующий адрес нужно два байта послать. Или явно сменить адрес. У китайцев для одного иероглифа на знакоместо нужно 2 байта. Поэтому и родилась аналогия с текстовым режимом.
Аватара пользователя
Александр Д.
Встал на лапы
Сообщения: 111
Зарегистрирован: Вс май 12, 2024 12:41:38
Откуда: Подмосковье

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

Сообщение Александр Д. »

[uquote="vem566",url="/forum/viewtopic.php?p=4718067#p4718067"]У этого дисплея есть текстовый режим, при котором на символ нужно 2 байта - для китайских иероглифов. Отсюда все непонятки.[/uquote]
О! Прямо как в ST7920
тоже долго мучился, пока научился с ним работать.
Но в общем и целом нравится: 2 провода всего надо и на больших длинах проводов не капризничает.
Верните прошлое! там было такое прекрасное будущее...
sathv
Открыл глаза
Сообщения: 50
Зарегистрирован: Сб янв 10, 2015 12:05:52

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

Сообщение sathv »

Добрый вечер. Только знакомлюсь с BASCOM-AVR, все было понятно пока не дошел до ADC. Не работает согласно командам из Help. Есть пример для АTtiny13, но он не интересен. Делаю в Proteus модель для Atmega8. После команды Getadc переменная принимает значения 20, 40,..,200 в диапазоне от 0 до 0,5В измеряемого напряжения. При напряжении больше 0,5В показания остаются равными 200. Подозреваю, что два байта, выдаваемые ADC не правильно пересчитываются. Но отсутствие знаний не позволяет разобраться. BASCOM у меня 2.0.8.6. Помогите, пожалуйста, устранить мою ошибку.
Аватара пользователя
Microtech
Поставщик валерьянки для Кота
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва
Контактная информация:

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

Сообщение Microtech »

Как настроено опорное напряжение? Переменная объявлена как word?
sathv
Открыл глаза
Сообщения: 50
Зарегистрирован: Сб янв 10, 2015 12:05:52

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

Сообщение sathv »

Это, правда, как-то связано с опорным напряжением. ADC не работал с внутренним и Vcc. Вернее, я не умею программно устанавливать внутреннее опорное напряжение. А после выбора опорным напряжением Aref измерения получаются. Этого мне достаточно. Спасибо за совет.
sathv
Открыл глаза
Сообщения: 50
Зарегистрирован: Сб янв 10, 2015 12:05:52

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

Сообщение sathv »

Добрый день. Неудобно спрашивать ерунду, наверное это всем известно. Подскажите, пожалуйста, как преобразовать строковую переменную "123" в число123 в BASCOM? С командой INT не получается. Спасибо.
Аватара пользователя
dibor
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Чт авг 27, 2020 13:15:49

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

Сообщение dibor »

Val()

Dim A As Byte , S As String * 10

S = "123"

A = Val(s) 'convert string

Print A ' 123
sathv
Открыл глаза
Сообщения: 50
Зарегистрирован: Сб янв 10, 2015 12:05:52

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

Сообщение sathv »

Спасибо ! Знакомлюсь с BASCOM в основном по HELP'у. Прочитать то могу, а вот найти что требуется- никак. Премного благодарен.
Аватара пользователя
Александр Д.
Встал на лапы
Сообщения: 111
Зарегистрирован: Вс май 12, 2024 12:41:38
Откуда: Подмосковье

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

Сообщение Александр Д. »

а скачать учебники и примеры? их много ))
Верните прошлое! там было такое прекрасное будущее...
Ответить

Вернуться в «AVR»