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»