Страница 166 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн фев 04, 2013 19:58:46
_Vasilij_
осторожно! леоныч!!! писал(а):Эх. Ну чтож все эти даташыты на английском... Попытаюсь разобраться....
картинки гляди главное, адрес задается не одним байтом, а двумя последовательными
т.е. что-то типа
Код: Выделить всё
I2cwbyte N1 ' причем формат из даташита xxxAAAAA , т.е. первые три бита абсолютно ничего не значат, так для количества
I2cwbyte N2 ' младший байт адреса
и в столбце 32 байта, вместо 16...и блоков нету...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 12:35:03
осторожно! леоныч!!!
Спасибо. Понятно. Сейчас попробую. По моему это даже проще. А датишиты можно переводчиком переводить чтоб хотя бы суть уловить...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 13:00:10
осторожно! леоныч!!!
В общем посмотрел я рисунки в даташите. Вот собственно они.
память 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
(Надо было жену попросить нарисовать. Она художница... Я вообще не умею рисовать...)
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 15:19:36
осторожно! леоныч!!!
Странно. Вроде все правильно но получается ерунда какая то. Если память устроена так как я написал,то все должно работать. Но у меня в микросхеме стираются только 2 первых страницы в первых 8 блоках и всё.... Ничего не понимаю....
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 15:29:55
_Vasilij_
оно скорей всего так выглядит, сверху специально адрес в двух форматах показал, в десятичном и шестнадцетиричном и уже дошли до 255, следущий адресс будет уже состоять из двух байтов, т.е. придется уже использовать старший байт.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 15:40:27
осторожно! леоныч!!!
Вот это заморочка.
Совсем запутался. Ладно,сейчас попробую код переделать.
Странно как то. Хочу стереть микросхему, указываю старший и младший байт как нулевые.
Стирается первый блок.
Дальше я старший байт устанавливаю значение 32 чтоб стереть следующий блок. Но нифига не стирается в нем как и в остальных. Загадочная микросхема....
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 16:39:51
осторожно! леоныч!!!
Похоже в микросхеме 8 таких блоков как вы нарисовали. Если это так то ща попробую дополнить код. Должно получиться.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 18:48:44
_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 блока(отсчет-то с нуля)
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт фев 05, 2013 20:00:12
осторожно! леоныч!!!
Спасибо

Разобрался уже

Меня сбили числа в таблице указывающие строки. Все оказалось намного проще. Насколько мне известно стертой микросхема памяти считается если во всех разрядах записано FF если я ничего не перепутал

Всё получилось)
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 14:47:34
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 секунды и тухнет. Непонятно

Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 16:00:37
_Vasilij_
Max_Payne_EN писал(а):как сделать несколько функций с помощью одной кнопки
при нажатии кнопки включаем какой-то счетчик, который будет расти пока нажата кнопка. Как кнопку отпустили, просто сравниваем как долго была нажата кнопка и делаем то или иное действо.
В протеусе работает всё как надо, а вот на микроконтроллере нет.
хммм, может попробовать подтяжку портов сделать...и диоды проверить, может какие-то не той стороной воткнулись.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 16:22:10
Max_Payne_EN
_Vasilij_ писал(а):
при нажатии кнопки включаем какой-то счетчик, который будет расти пока нажата кнопка. Как кнопку отпустили, просто сравниваем как долго была нажата кнопка и делаем то или иное действо.
Вот до них я еще не дошел.

Надо будет поискать про счетчики.
_Vasilij_ писал(а):
хммм, может попробовать подтяжку портов сделать...и диоды проверить, может какие-то не той стороной воткнулись.
На кнопке сделал подтяжку, светодиоды правильно стоят
Фьюзы оставил по умолчанию. Может надо было что-то изменить?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 17:07:08
осторожно! леоныч!!!
Я начинал изучение баском отсюда и с этого сайта
http://avr.ru/beginer/bascom/article1
На примерах нетрудно разобраться.
Там отличная обучалка.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 17:18:05
Max_Payne_EN
Спасибо, буду изучать.
А то в примерах не нашел как это реализовать, только готовые прошивки (((
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 21:05:04
kip96
Max_Payne_EN писал(а):Здравствуйте, решил на досуге поизучать микроконтроллеры.
В протеусе работает всё как надо, а вот на микроконтроллере нет. При нажатии на кнопку (Pinb4) светодиоды 1(Pinb3) и 2(Pinb1) загораются, а третий(Pinb0) через 3 секунды нет (если быть точным он совсем не загорается), а вот при повторном нажатии на кнопку - отключаются светодиоды 1 и 2, проходит 3 секунды и загорается 3-й, горит 2 секунды и тухнет. Непонятно

Странно,что в протеусе работает!
Даташит ни кто не отменял. Прежде всего, надо начинать с изучения камня, на котором работаете. А то так дойдёт, что начнут здесь на 2313 АЦП искать.
у Тини13 нет 8 Мгц.
Вы так оперируете Pin и Port ! Похоже на английский текст переведённый гуглом
Хоть изначально все порты настроенны на вход, не мешало бы Pinb.4 сконфигурировать на вход в начале программы.
Ну и проще, думаю сделать так-
Код: Выделить всё
Toggle Portb.3
Toggle Portb.1
Wait 3
Portb.0 = Portb.3
Wait 2
Reset Portb.0
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср фев 06, 2013 21:06:54
константин_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
Пробуй будет тебе счастье
или как предложено выше
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт фев 07, 2013 10:43:25
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
Так работает, спасибо за совет

Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт фев 07, 2013 10:50:02
Max_Payne_EN
константин_KoSS_89 писал(а):
Pinb.3 = 0 к чему эта строка? спокойно можно удалить!
Я когда первый раз без неё пробовал - в протеусе при старте загорался светодиод на pinb.3

Вот и дописал, а сейчас удалил - всё отлично
константин_KoSS_89 писал(а):
Пробуй будет тебе счастье
или как предложено выше
Счастье случилось ))) И так работает, большое спасибо за помощь.
Осталось разобраться со счетчиками, тогда буду совсем счастлив ))
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт фев 07, 2013 13:23:14
kip96
И всё же, начните с даташита!
У тини 13 нет 4 Мгц! Есть один генератор на 9.6Мгц и делитель на 8 (можно получить 1.2 Мгц),Ещё собака на 128кГц (что-то вроде этого, сам уже не помню)
Как Вы таймеры будете изучать? Надо почитать сначала, какие таймеры есть. А может собаку использовать. У неё собственный не зависимый таймер. В старых версиях Баскома нельзя было выставить большой делитель на собаку, хотя Тини 13 позволяла. Благо Баском позволяет напрямую обращаться к регистрам. Так и выкрутился из положения.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт фев 07, 2013 17:27:31
JeysonRou
Да только как я заметил Bascom вычурная программа ибо чот сколько я не искал по поводу режимов Powerdown, Poversave. Там нечего нет
И как прикажете работать от батарейки???