Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Разное » мега8 и мах7219


мега8 и мах7219

Сообщений 1 страница 21 из 21

1

не пойму где подвох. вроде собрал правильно, а не работает в симуляторе, зараза. и не компилится толком, ошибку выдает (пишет о нехватке If\Then и EndIf в самом конце программы, где им и делать-то нечего).
кому не лень станет, может глянете?
http://dropmefiles.com/aA5mt

0

2

Код:
  Reset Nosave_time                                         ' : End If

%-)

0

3

IDok написал(а):

вроде собрал правильно

А чем не подошли готовые примеры применения этого драйвера?

0

4

Ev3658
шайтанская кегля. и ведь своей рукой закомментил, ибо оно чото по всем местам ругалось *фейспалм.жпг*

0

5

max написал(а):

А чем не подошли готовые примеры применения этого драйвера?

так их и брал собсна. все драйвера и настройки - оттуда. единственно - МК заменил на мегу8 и часовую микросхемку на 1307

0

6

при первом запуске индикаторы выдают значения и гаснут. подвох где-то с обновлением данных на чип. а вот где...

0

7

Ранее давал ссылку на тему: Исследование MAX7219 (SPI драйвер 7seg led индикаторов)
Если дочитаете до постов 11 и 16, то увидите два варианта применения драйвера.

0

8

max
я брал исходники с поста 10. это были плохие, не годные исходники?

0

9

Я не говорю, что они плохие, я сам из них делал. Я к тому, что уже есть готовые устройства которые можно "подогнать" под себя.

0

10

max
я это и пытаюсь. но мега328 и ds3121 меня не устраивают. ну и в числе прочего просто хочется разобраться...
в протеусе в пошаговом режиме метка прыгает сразу на последний return и стоит на нем намертво

0

11

IDok написал(а):

но мега328 и ds3121 меня не устраивают

Здесь

0

12

sasha_1973
да, уже почитал, спасибо. но если не сложно - давайте на пальцах:
стартовые команды инициализации чипа
Init_max7219
On_max7219 1
Bright_max7219 , 1 , 10
надо писать в теле программы или они в драйвере достаточны?
или в программе пишем только те, которые меняем (яркость, вывод строковых переменных)?
в настройке SPI есть строка Cs_max7219 Alias Portb.0 : Config Cs_max7219 = Output
но я не нашел где и чем этот порт управляется. он же открывает чип на запись, так? по идее должен в прерывании быть

0

13

IDok написал(а):

Init_max7219

при старте МК, название говорит само за себя

IDok написал(а):

On_max7219 1
Bright_max7219 , 1 , 10

Здесь

IDok написал(а):

в настройке SPI есть строка Cs_max7219 Alias Portb.0 : Config Cs_max7219 = Output
но я не нашел где и чем этот порт управляется. он же открывает чип на запись, так? по идее должен в прерывании быть


Файл ( Работа MAX7219.bas )
Подпрограмма ( Sub Write_data_reg_max7219(byval Copy_reg_max7219 As Byte , Byval Copy_data_max7219 As Byte , Byval Copy_chip_max7219 As Byte)   )

Отредактировано sasha_1973 (2017-11-17 22:07:49)

0

14

sasha_1973 написал(а):

Здесь

нет  :dontknow:
а параметр Const_skip_max7219 = Const_amount_max7219 * 2 это что и для чего? какие чипы куда пропускаем?

0

15

IDok написал(а):

нет


Уже писали, что есть 2 копии форума

7 сообщение

_http://bascomavr.ru/viewtopic.php?id=1073#p15512

_http://bascomavr.3bb.ru/viewtopic.php?id=1073#p15512

IDok написал(а):

а параметр Const_skip_max7219 = Const_amount_max7219 * 2 это что и для чего? какие чипы куда пропускаем?


1 max7219 = 2 x 4 разрядных индикатора, соответственно, если у вас 2 чипа ( 2 х 2 индикатора = 4 индикатора ), то чтобы вывести данные на 4 индикатор, надо 3 пропустить.

Отредактировано sasha_1973 (2017-11-17 22:24:45)

0

16

код

Ответ_датчика_ds18x20(9) = 1wread(9)       ' Принимаем 8 байт данных + 1 байт контрольной суммы
         'Занимаемся расчётом полученных данных
            Температура_single = Температура_integer       ' Получаем дробное значение температуры (±xxx.xxxx)
            Shift Температура_single , Right , 4 , Signed       ' Получаем готовое значение температуры с знаком
            'Приводим рассчитанные данные к нужному формату
            Готовая_температура_temp_str = Fusing(температура_single , "&.&")       ' Форматируем данные
            Готовая_температура_temp_str = Str(Температура_single)

            'Длина_строки = Len(готовая_температура_temp_str)       ' Узнаём длину строковой переменной

           'Если символов меньше 4, добавляем пустое место (для красоты)
            'If Температура_integer = 0 Or Температура_integer > 0 And Длина_строки < 4 Then
             '   Готовая_температура_temp_str = " " + Готовая_температура_temp_str
            'End If       ' If Температура_integer > 0 And Длина_строки < 4 Then

            Готовая_температура_temp_str = Готовая_температура_temp_str + "°C"       ' Добавляем значёк "°С"

как обрезать данные так, что бы выводились только две цифры и "°C" и что б никаких децимальных точек?

0

17

IDok написал(а):

как обрезать данные так, что бы выводились только две цифры и "°C" и что б никаких децимальных точек?


Т.е., только целые, без десятых ?

можно так

Ответ_датчика_ds18x20(9) = 1wread(9)       ' Принимаем 8 байт данных + 1 байт контрольной суммы

         'Занимаемся расчётом полученных данных
            Температура_single = Температура_integer       ' Получаем дробное значение температуры (±xxx.xxxx)
            Shift Температура_single , Right , 4 , Signed       ' Получаем готовое значение температуры с знаком

            'Приводим рассчитанные данные к нужному формату
            Температура_integer_2 = Температура_single
            Готовая_температура_temp_str = Str(Температура_integer_2)
            Готовая_температура_temp_str = format(Готовая_температура_temp_str ,"-000")
            Готовая_температура_temp_str = Готовая_температура_temp_str  + "°C"

Отредактировано sasha_1973 (2017-11-19 19:46:59)

0

18

sasha_1973
да, два знака и без +\-   как обрезать слева\справа нашел, но никак не могу от точки избавиться

0

19

sasha_1973 написал(а):

Температура_integer_2 = Температура_single

а это для чего? разве нельзя сразу

sasha_1973 написал(а):

Готовая_температура_temp_str = Str(Температура_single)

?

0

20

IDok написал(а):

а это для чего? разве нельзя сразу


можно, но получите дробное значение

0

21

sasha_1973
гацкая точка влезает меж разрядов. получаю 0.0°C
вдогонку: в ваших примерах в подпрограмме Обновить_7seg_led: разделительная точка при выводе времени указывается принудительно, есть она или нет. а при выводе даты она не указывается, но выводится. это как так выходит?

0


Вы здесь » Программирование ATMEL в BASCOM. » Разное » мега8 и мах7219