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

Обсуждаем контроллеры компании Atmel.
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

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

Сообщение _Vasilij_ »

осторожно! леоныч!!! писал(а):Эх. Ну чтож все эти даташыты на английском... Попытаюсь разобраться....
картинки гляди главное, адрес задается не одним байтом, а двумя последовательными
т.е. что-то типа

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

I2cwbyte N1 ' причем формат из даташита xxxAAAAA , т.е. первые три бита абсолютно ничего не значат, так для количества
I2cwbyte N2   ' младший байт адреса

и в столбце 32 байта, вместо 16...и блоков нету...
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Спасибо. Понятно. Сейчас попробую. По моему это даже проще. А датишиты можно переводчиком переводить чтоб хотя бы суть уловить...
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

В общем посмотрел я рисунки в даташите. Вот собственно они.
память 64.JPG


Получается что при постраничной записи мне надо отправить байт управления,старший байт - это номер страницы ,младший байт номер ячейки. А после уже отправляем информацию,причем 32 раза. Правильно?

Вот что вычитал - Organized as 8 blocks of 8K bit (64K bit)

Значит там, 8 блоков по 8 килобит. Всего 64 килобита.

Page-write buffer for up to 32 bytes строка из 32 байт,это понятно...

Значит 8 блоков все таки есть. Видимо старший байт как раз указывает номер блока, младший номер строки в блоке.

Вот я накалякал структуру памяти этой микросхемы. Криво косо но при наличии воображения не трудно разобраться
2464.JPG
(Надо было жену попросить нарисовать. Она художница... Я вообще не умею рисовать...)
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Странно. Вроде все правильно но получается ерунда какая то. Если память устроена так как я написал,то все должно работать. Но у меня в микросхеме стираются только 2 первых страницы в первых 8 блоках и всё.... Ничего не понимаю....
Реклама
Эиком - электронные компоненты и радиодетали
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

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

Сообщение _Vasilij_ »

оно скорей всего так выглядит, сверху специально адрес в двух форматах показал, в десятичном и шестнадцетиричном и уже дошли до 255, следущий адресс будет уже состоять из двух байтов, т.е. придется уже использовать старший байт.
Вложения
Безымянный.JPG
(48.52 КБ) 431 скачивание
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Вот это заморочка. :shock:
Совсем запутался. Ладно,сейчас попробую код переделать.

Странно как то. Хочу стереть микросхему, указываю старший и младший байт как нулевые.
Стирается первый блок.
Дальше я старший байт устанавливаю значение 32 чтоб стереть следующий блок. Но нифига не стирается в нем как и в остальных. Загадочная микросхема....
Реклама
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Похоже в микросхеме 8 таких блоков как вы нарисовали. Если это так то ща попробую дополнить код. Должно получиться.
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

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

Сообщение _Vasilij_ »

осторожно! леоныч!!! писал(а):Дальше я старший байт устанавливаю значение 32 чтоб стереть следующий блок.
опять возвращаемся к битам и байтам и берем в руки инженерный калькулятор(можно виндовый), который умеет переводить десятичные в шестнадцетеричные и бинарные.
Address - содержит 8 бит (1 байт), т.е. максимальное значение 1111 1111 (я для удобства пробел поставил - его там нет), в переводе на десятичные это 255...т.е. максимально возможный адрес был бы 255, этого нам мало, т.е. чтобы записать больше ячеек, нам нужно использовать address более чем 8 бит, поэтому и появляется старший байт, набираем на калькуляторе в бинарном виде 1111 1111 1111 1111 и переводим в десятичное - получим уже 65536 возможных адресов, если бы память по объему была бы еще больше, то вполне возможно появился бы и третий адресный байт. Адрес в десятичном виде это одно число, но в реальной жизни посылается именно его двоичное выражение и накладываются связанные с этим ограничения, т.е. чтобы послать число больше 255 нужно использовать 2 байта. (хотя это не всегда так и в некоторых случаях посылается просто 9-10-11 бит, это уже как протокол обмена реализован).
Возвращаемся к нашему случаю, вот допустим пишешь 8 раз по 32 байта, хлоп и все дальше резерв младшего адресного байта кончился(8*32=256) , увеличиваем на единичку старший байт и открываются новые перспективы - еще один полный цикл младшего 8 по 32 (можешь называть это отдельными блоками) , потом еще увеличиваем сташий байт на 1...и опять 8 по 32....старший байт в даташите описан xxxA AAAA, что это значит, что его максимальное число 0001 1111, в десятичном переводе - 31, вот это максимально возможное число для сташего байта, если удобней для представления, то это будет 32 блока(отсчет-то с нуля)
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Спасибо :)) Разобрался уже :idea: Меня сбили числа в таблице указывающие строки. Все оказалось намного проще. Насколько мне известно стертой микросхема памяти считается если во всех разрядах записано FF если я ничего не перепутал :) Всё получилось)
Аватара пользователя
Max_Payne_EN
Родился
Сообщения: 12
Зарегистрирован: Ср фев 06, 2013 14:20:25
Откуда: Астрахань
Контактная информация:

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

Сообщение Max_Payne_EN »

Здравствуйте, решил на досуге поизучать микроконтроллеры.
Пишу в программе bascom, микроконтроллер - attiny13.
Хотел поинтересоваться как сделать несколько функций с помощью одной кнопки, т.е. при нажатии - одно действие, при удержании - другое?
Заранее спасибо.

И еще один вопрос:
Спойлер

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

$regfile = "attiny13.dat"
$crystal = 8000000

$hwstack = 0
$swstack = 0
$framesize = 0

Config Portb.1 = Output : Set Portb.4
Config Portb.3 = Output
Config Portb.0 = Output

Pinb.3 = 0

Do
    Debounce Pinb.4 , 0 , En , Sub
Loop
En:
Toggle Portb.3
Toggle Portb.1
If Pinb.1 = 1 Then
Wait 3
Portb.0 = 1
Wait 2
Portb.0 = 0
  End If

Return

В протеусе работает всё как надо, а вот на микроконтроллере нет. При нажатии на кнопку (Pinb4) светодиоды 1(Pinb3) и 2(Pinb1) загораются, а третий(Pinb0) через 3 секунды нет (если быть точным он совсем не загорается), а вот при повторном нажатии на кнопку - отключаются светодиоды 1 и 2, проходит 3 секунды и загорается 3-й, горит 2 секунды и тухнет. Непонятно :dont_know:
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

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

Сообщение _Vasilij_ »

Max_Payne_EN писал(а):как сделать несколько функций с помощью одной кнопки

при нажатии кнопки включаем какой-то счетчик, который будет расти пока нажата кнопка. Как кнопку отпустили, просто сравниваем как долго была нажата кнопка и делаем то или иное действо.
В протеусе работает всё как надо, а вот на микроконтроллере нет.
хммм, может попробовать подтяжку портов сделать...и диоды проверить, может какие-то не той стороной воткнулись.
Аватара пользователя
Max_Payne_EN
Родился
Сообщения: 12
Зарегистрирован: Ср фев 06, 2013 14:20:25
Откуда: Астрахань
Контактная информация:

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

Сообщение Max_Payne_EN »

_Vasilij_ писал(а):при нажатии кнопки включаем какой-то счетчик, который будет расти пока нажата кнопка. Как кнопку отпустили, просто сравниваем как долго была нажата кнопка и делаем то или иное действо.

Вот до них я еще не дошел. :( Надо будет поискать про счетчики.

_Vasilij_ писал(а):хммм, может попробовать подтяжку портов сделать...и диоды проверить, может какие-то не той стороной воткнулись.

На кнопке сделал подтяжку, светодиоды правильно стоят :dont_know:

Фьюзы оставил по умолчанию. Может надо было что-то изменить?
Последний раз редактировалось Max_Payne_EN Ср фев 06, 2013 17:20:58, всего редактировалось 1 раз.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Я начинал изучение баском отсюда и с этого сайта http://avr.ru/beginer/bascom/article1
На примерах нетрудно разобраться.
Там отличная обучалка.
Аватара пользователя
Max_Payne_EN
Родился
Сообщения: 12
Зарегистрирован: Ср фев 06, 2013 14:20:25
Откуда: Астрахань
Контактная информация:

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

Сообщение Max_Payne_EN »

осторожно! леоныч!!! писал(а):Я начинал изучение баском отсюда и с этого сайта http://avr.ru/beginer/bascom/article1
На примерах нетрудно разобраться.
Там отличная обучалка.

Спасибо, буду изучать.
А то в примерах не нашел как это реализовать, только готовые прошивки (((
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Max_Payne_EN писал(а):Здравствуйте, решил на досуге поизучать микроконтроллеры.

В протеусе работает всё как надо, а вот на микроконтроллере нет. При нажатии на кнопку (Pinb4) светодиоды 1(Pinb3) и 2(Pinb1) загораются, а третий(Pinb0) через 3 секунды нет (если быть точным он совсем не загорается), а вот при повторном нажатии на кнопку - отключаются светодиоды 1 и 2, проходит 3 секунды и загорается 3-й, горит 2 секунды и тухнет. Непонятно :dont_know:

Странно,что в протеусе работает!
Даташит ни кто не отменял. Прежде всего, надо начинать с изучения камня, на котором работаете. А то так дойдёт, что начнут здесь на 2313 АЦП искать.
у Тини13 нет 8 Мгц.
Вы так оперируете Pin и Port ! Похоже на английский текст переведённый гуглом :))
Хоть изначально все порты настроенны на вход, не мешало бы Pinb.4 сконфигурировать на вход в начале программы.
Ну и проще, думаю сделать так-

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

Toggle Portb.3
Toggle Portb.1
Wait 3
Portb.0 = Portb.3
Wait 2
Reset Portb.0
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
константин_KoSS_89
Вымогатель припоя
Сообщения: 602
Зарегистрирован: Пн дек 29, 2008 01:40:28
Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)

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

Сообщение константин_KoSS_89 »

Спойлер$regfile = "attiny13.dat"
$crystal = 8000000

$hwstack = 0
$swstack = 0
$framesize = 0

Config Portb.1 = Output : Set Portb.4 меняем на Set Pind.4 так мы подтягиваем вход мк к плюсу питания внутрениим резистором
Config Portb.3 = Output
Config Portb.0 = Output
Config Portd.4 = Input

Pinb.3 = 0 к чему эта строка? спокойно можно удалить!

Do
Debounce Pinb.4 , 0 , En , Sub
Loop
En:
Toggle Portb.3
Toggle Portb.1
If Pinb.1 = 1 Then нужно заменить на If Portd.1 = 1 Then
Wait 3
Portb.0 = 1
Wait 2
Portb.0 = 0
End If

Return


Пробуй будет тебе счастье
или как предложено выше
Аватара пользователя
Max_Payne_EN
Родился
Сообщения: 12
Зарегистрирован: Ср фев 06, 2013 14:20:25
Откуда: Астрахань
Контактная информация:

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

Сообщение Max_Payne_EN »

kip96 писал(а):Странно,что в протеусе работает!
Даташит ни кто не отменял. Прежде всего, надо начинать с изучения камня, на котором работаете. А то так дойдёт, что начнут здесь на 2313 АЦП искать.
у Тини13 нет 8 Мгц.
[/code]

8MHz я выставил для протеуса, ибо с 4MHz он неадекватно считает времянные промежутки :(
kip96 писал(а):Вы так оперируете Pin и Port ! Похоже на английский текст переведённый гуглом :))
Хоть изначально все порты настроенны на вход, не мешало бы Pinb.4 сконфигурировать на вход в начале программы.
Это был не я )) Начало взял с примера на схем нет и немного подправил


kip96 писал(а):Ну и проще, думаю сделать так-

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

Toggle Portb.3
Toggle Portb.1
Wait 3
Portb.0 = Portb.3
Wait 2
Reset Portb.0


Так работает, спасибо за совет :)
Аватара пользователя
Max_Payne_EN
Родился
Сообщения: 12
Зарегистрирован: Ср фев 06, 2013 14:20:25
Откуда: Астрахань
Контактная информация:

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

Сообщение Max_Payne_EN »

константин_KoSS_89 писал(а):Pinb.3 = 0 к чему эта строка? спокойно можно удалить!

Я когда первый раз без неё пробовал - в протеусе при старте загорался светодиод на pinb.3 :( Вот и дописал, а сейчас удалил - всё отлично :))

константин_KoSS_89 писал(а):Пробуй будет тебе счастье
или как предложено выше

Счастье случилось ))) И так работает, большое спасибо за помощь. :))
Осталось разобраться со счетчиками, тогда буду совсем счастлив ))
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

И всё же, начните с даташита!
У тини 13 нет 4 Мгц! Есть один генератор на 9.6Мгц и делитель на 8 (можно получить 1.2 Мгц),Ещё собака на 128кГц (что-то вроде этого, сам уже не помню)
Как Вы таймеры будете изучать? Надо почитать сначала, какие таймеры есть. А может собаку использовать. У неё собственный не зависимый таймер. В старых версиях Баскома нельзя было выставить большой делитель на собаку, хотя Тини 13 позволяла. Благо Баском позволяет напрямую обращаться к регистрам. Так и выкрутился из положения.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
JeysonRou
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 16, 2013 06:51:09
Откуда: Сам не знаю...

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

Сообщение JeysonRou »

Да только как я заметил Bascom вычурная программа ибо чот сколько я не искал по поводу режимов Powerdown, Poversave. Там нечего нет :dont_know: :dont_know: :dont_know:
И как прикажете работать от батарейки???
Ответить

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