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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Работа с 24lc64


Работа с 24lc64

Сообщений 31 страница 49 из 49

31

Короче нафиг надо. 2 дня убил ниочем. Уже бы давно все доделал. Редкое говно эта память. Лучше вообще не применять в проектах.

0

32

А представь, ты бросил все это дело за четверть шага до разрешения своей проблемы ? )) Времени не жалко ? ))

0

33

Не бросил а отложил до лучших времен. В проекте еще много чего нужно сделать. Чем и занимаюсь.

0

34

Спасибо! Буду разбираться завтра.

0

35

Практикуюсь. Научился записывать их в память, читать, менять, проводить с ними математические операции. Но вот записывать длинные значения во внешнюю память пока не умею что не есть хорошо. Примеров я пока не нашел в интернете, а жаль. У меня микросхема 24lc64. Места много. Но вот чтоб записывать и читать из неё длинные значения примеров нету. Были вроде примеры для внутренней памяти МК но я не хочу её использовать из за её ресурса. Если она сдохнет, её не поменять, а вот внешнюю без проблем...

0

36

Надеюсь что да. Придется создать проект отдельный. В протеусе. В нем и пробовать.

0

37

Спасибо большое. Буду пробовать. Мож чего и получится)

0

38

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

Спасибо большое. Буду пробовать. Мож чего и получится)

Если вдруг не получится, пишите, поможем всем миром!

Как говорится: - "С мира по нитке, голому Ролс-Ройс"

+1

39

Хорошо. Просто хотел организовать память. Надо в разные строки памяти записывать и читать 30 - 40 значений long как я и писал выше. Например значение 888555. Но просто так его не запишешь. Я читал про оверлэй но он везде применяется для внутренней памяти МК. А я её применять не собираюсь. Вот и не смог разобраться как сделать запись чтение во внешнюю микросхему 24lc64. Примеры то только под 08 и 512, а там структура ячеек совсем другая.

0

40

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

Разрезание и склеивание переменной типа Long

    $map    ' Получаем карту распределения памяти
      $regfile = "m8def.dat"       ' Используемый контроллер
      $crystal = 1000000       ' 1 МГц
      $framesize = 32       'размер области используемой и необходимой для преобразований
      $hwstack = 40       ' Размер аппаратного стека
      $swstack = 16       ' Размер программного стека
      $baud = 4800       '4800     '9600     '19200     '38400

      Dim Цикл As Byte

      Dim Переменная_для_записи_byte(4) As Byte
      Dim Переменная_для_записи_long As Long At Переменная_для_записи_byte Overlay

      Dim Переменная_для_чтения_long As Long
      Dim Переменная_для_чтения_byte(4) As Byte At Переменная_для_чтения_long Overlay

      Do

          Incr Переменная_для_записи_long

          For Цикл = 1 To 4
              Print Переменная_для_записи_byte(цикл) ; " ";
              Переменная_для_чтения_byte(цикл) = Переменная_для_записи_byte(цикл)
          Next Цикл
          Print ""
          Print ""

          Print Переменная_для_чтения_long
          Print ""

          Waitms 10

      Loop
    End

Всё значительно проще, как и было сказано выше, используем оверлей:

Код:
Dim A As Integer
Dim Al As Byte At A + 0 Overlay
Dim Ah As Byte At A + 1 Overlay

Это 2 байта разбираем.
Вход переменная: А
Выход: Al и Ah

Четыре точно так же:

Код:
Dim B As Long  'Dword
Dim B0 As Byte At B + 0 Overlay
Dim B1 As Byte At B + 1 Overlay
Dim B2 As Byte At B + 2 Overlay
Dim B3 As Byte At B + 3 Overlay

Вход переменная: B
Выход: B0, B1, B2, B3.

Достоинства данного способа очевидны:

- не тратиться не капли места на его реализацию (просто манипуляция с адресацией при сборке компилятором);
- (следовательно) не тратиться процессорного времени.

0

41

Вот это круто))) Спасибо всем) Есть чему поучиться у настоящих спецов))))

0

42

Получилось разделять на байты, читать и записывать LONG, получилось склеивать обратно, сделал кнопки, теперь можно выбрать "банк" и записать туда нужное значение предварительно установив его двумя другими кнопками)))

Огромное всем спасибо))) Научили новому для меня)))))

Отредактировано Atmel (2013-10-28 19:05:39)

0

43

Ну вот и сюрпризы начались в железе. Значение 71300 которое было записано в память, после чтения при первом включении устройства отображается не крорректно.  71296 почему то О_О Нифига не понимаю. В протеусе наоборот если я записываю число 1000 то при включении и первом чтении высвечивается 1023. Дурдом. Я ваще запутался в хлам  :insane:
Самое интересное что в память записаны верные числа! При повторном чтении на индикаторе верные значения :dontknow:

Отредактировано Atmel (2013-11-22 15:41:31)

0

44

Возник вопрос который наверняка всем покажется глупым. Но хотелось бы знать. Допустимо ли делать программу в которой основной рабочий цикл оформлен как подпрограмма?
Причем так (Например)

Programma:
Do
--------- Много всего разного
Loop

А все подпрограммы оформлены так (Например)

Podprogramma:
Do
---------------- Какой то код
Loop

Просветите новичка спецы!)

0

45

В принципе можно, только надо определить условия выхода из подпрограмм. чтобы выполнялось все, а не первый кусочек
Или использовать конструкцию Do......Loop Until.
Однако все же лучше идти как все, по камням )

Отредактировано Skull (2013-11-30 14:25:21)

0

46

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

0

47

http://s6.uploads.ru/t/HGe9F.jpg

Вот такая ошибка в протеусе при сбое, это то что я имел в виду когда контроллер в устройстве перезагружается сам.
Кто может подсказать на что это жалуется протеус?
Может тогда удастся разобраться с этими перезагрузками?

0

48

Надеюсь то что я наваял не травмирует твою психику :insane:

0

49

Все скинул.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Работа с 24lc64