Страница 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
осторожно! леоныч!!!
Вот это заморочка. :shock:
Совсем запутался. Ладно,сейчас попробую код переделать.

Странно как то. Хочу стереть микросхему, указываю старший и младший байт как нулевые.
Стирается первый блок.
Дальше я старший байт устанавливаю значение 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
осторожно! леоныч!!!
Спасибо :)) Разобрался уже :idea: Меня сбили числа в таблице указывающие строки. Все оказалось намного проще. Насколько мне известно стертой микросхема памяти считается если во всех разрядах записано 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 секунды и тухнет. Непонятно :dont_know:

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_ писал(а): хммм, может попробовать подтяжку портов сделать...и диоды проверить, может какие-то не той стороной воткнулись.
На кнопке сделал подтяжку, светодиоды правильно стоят :dont_know:

Фьюзы оставил по умолчанию. Может надо было что-то изменить?

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
осторожно! леоныч!!! писал(а):Я начинал изучение баском отсюда и с этого сайта http://avr.ru/beginer/bascom/article1
На примерах нетрудно разобраться.
Там отличная обучалка.
Спасибо, буду изучать.
А то в примерах не нашел как это реализовать, только готовые прошивки (((

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

Добавлено: Ср фев 06, 2013 21:05:04
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

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. Там нечего нет :dont_know: :dont_know: :dont_know:
И как прикажете работать от батарейки???