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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » прошу помощи с записью-чтением еепром атмега8


прошу помощи с записью-чтением еепром атмега8

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

1

привет всем.. нужда заставила сесть за  изучение аврок а поскольку  когда то лет 20 назад учил  бэйсик то выбор стал  очевиден. накатал программку генератора с   изменением и запоминанием частоты. но что то не  могу никак заставить запомнить  частоту. конечно  скажут что  у меня   коряво   написано.. но хоть так. в общем  программа  сделана  что  бы генератор начинал   с  малой  частоты и плавно ее поднимал. если   контрольный пин  на   PORTC.2 в нуле то  программа  дойдя до максимальной частоты   начинается снова. еслив  момент    набора   частоты  пин перевести джампером в 1 то   прога должна  генерить ту  частоту  ,  которая была в момент  когда   пин установили в  1. и   если питание выключить и  снова включить то  сразу должна генерить   запомненную частоту. уфф..

Код:
$regfile = "m8def.dat"
$crystal = 8000000

Config Portb = Output                                       'конфигурируем вывод 2 порта B на выход - подключаем к нему светодиод
'Config Portb.0 = Output
Config Portc.2 = Input
Config Pinc.2 = Input                                       ' конфигурируем вывод 2 порта С на ВХОД
Dim Temp As Byte
Dim Variant As Byte
                                      'задаем переменные
Dim Cikle As Byte
Dim Num As Byte

Jam Alias Pinc.2                                            'назначаем имя  входной ноге
$eeprom                                                     'обозначаем  что придется работать с епромом

Num = 5
Portb.2 = 0
If Jam = 1 Then Readeeprom Temp                             'считываем из епрома переменную
If Jam = 1 Then Goto Pamyat                                 ' идем на цикл где используется переменная  из памяти
If Jam = 0 Then Temp = 50
Variant = 0
Goto Vniz
Vniz:

Variant = Variant + Temp                                    ' здесь идет постепенное уменьшение переменной ТЕМР
Temp = Temp - Num
Cikle = Variant
If Jam = 1 Then Writeeeprom Temp                       ' запись в память еепром переменной ТЕМР при контрольном пине в 1

If Jam = 1 Then Goto Pamyat
If Temp => 10 Then Goto Cikler
Goto Nabor
Nabor:
Temp = 50
Goto Vniz

Cikler:

 Portb.2 = 1
Portb.0 = 0
Waitms Temp
Portb.2 = 0
Portb.0 = 1
Waitms Temp
Cikle = Cikle - Num
If Cikle => 10 Then Goto Cikler
Goto Vniz

 Pamyat:                                                    'цикл  использования переменной из памяти
Portb.2 = 1
Portb.0 = 0
Waitms Temp
Portb.2 = 0
Portb.0 = 1
Waitms Temp
If Jam = 1 Then Goto Pamyat                                 'проверяем состояние контрольной ноги при  1 на ней  идем в начало этого цикла иначе на цикл вычисления
Goto Vniz                                                   'идем на цикл вычисления переменной

народ, кто в  теме, помогите..  седня всю ночь до 6 утра просидел..

Отредактировано druksel (2010-12-05 18:49:33)

0

2

Может не туда смотрел, но я не увидел в коде запись в EEPROM.

Вот пример работы с EEPROM

Код:
' BASCOM-AVR
$regfile = "m8def.dat"  ' ATmega8
$crystal = 4000000      ' Частота тактового тенератора - 4МГц
$hwstack=32
$swstack=48
$framesize=48

Dim Count As Byte
Dim Eeprom_infa As Eram Byte ' Байтовая ячейка в EEPROM

Count = Eeprom_infa     ' Копирование байта из EEPROM в переменную

If Count >= 200 Then    ' Если включили девайс больше 200 раз
  End                   ' то блокируем работу проги.
Else                     
  Count = Count + 1     ' Иначе увеличиваем значение счетчика
  Eeprom_infa = Count   ' и пишем в EEPROM.
End If

Do
   ' Тут основной код проги
Loop
End

Можно так же использовать команды Readeeprom и WRITEEEPROM, их описание есть в справке.

Отредактировано Пётр (2010-12-05 19:10:41)

0

3

я тоже делал так...

Dim Tmax As Byte
Dim Tmin As Byte
                         

Dim Tm As Eram Byte
Dim Tn As Eram Byte

Tmax = Tm
Tmin = Tn

......

Main:
Cls
Do
.......
Loop

......
.....
....

'------- сохранение установок в память ---------
Save:
Cls
Locate 1 , 1
Lcd "***** save *****"
Wait 1

Tm = Tmax
Tn = Tmin                                                  записуем переменные в eeprom

Goto Main

........

End
ъ



но можно и так как ты
при этом программа создаст файл eep который нужно будет тоже зашить ...

Dim Temp As Byte

$eeprom
Prom:
Data 17%                                             данные в EEPROM
$data

If Jam = 1 Then Readeeprom Temp ,  Prom                              'считываем из епрома переменную
If Jam = 0 Then Writeeeprom Temp ,  Prom                             'записываем в епром переменную

думаю разберешься ))

Отредактировано Yuriy.pv (2010-12-05 19:31:43)

0

4

Пётр написал(а):

Можно так же использовать команды Readeeprom и WRITEEEPROM, их описание есть в справке.

угу , есть.. тока  ну ни  фига не пойму  как ими пользоваться. вот у меня в  проге переменная TEMP ее  значение  и надо  запихнуть в епром и    вытащщить оттуда при    включении  процессора и наличии на   PORTC.2 единицы.  вот как это правильно сделать?? понимаю  что  тупой.. но  хочется и заточиться.. :)
о блин!! пока писал - ответили..  спс..  ща попробую

Отредактировано druksel (2010-12-05 19:32:48)

0

5

я тебе написал внизу  читай)))))))

0

6

спасибо.. кажись  помоголо..  заработала  хреновина..   ща еще попроверяю на разных режимах..

0

7

Но нужно учитывать что количество записей в EEPROM ограничено, так что не стоит слишком часто писать туда, иначе, EEPROM быстро выйдет из строя!

0

8

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

как ими пользоваться. вот у меня в  проге переменная TEMP ее  значение  и надо  запихнуть в епром и    вытащщить оттуда при    включении  процессора

Чтение:

Код:
READEEPROM TEMP, 0

Запись:

Код:
WRITEEEPROM TEMP, 0

0 - адрес чтения / записи в EEPROM.

Отредактировано Пётр (2010-12-05 20:02:02)

0

9

спасибо за помошь!!!!!

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » прошу помощи с записью-чтением еепром атмега8