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

Обсуждаем контроллеры компании Atmel.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

спасибо!....там модуляция ам,с модулями как там это сделать просто-проверено!
мне же нужен был пример модуляции FSK-тоже что и FM только импульсная,в принципе нашел но не могу осилить даташит приемопередатчика на MRF49-разбираюсь...
Реклама
Аватара пользователя
Tankor
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт май 03, 2011 10:13:12
Откуда: Россия, Татарстан

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

Сообщение Tankor »

Конфликт прерываний- извечная проблема начинающих, коим и являюсь.
Какие основные моменты необходимо соблюдать, используя множество прерываний? Может обобщить Ваши знания, а то я голову сломал с данной проблемой.
Использую все INT на кнопках, TIMER1, TIMER2 в асинхронном режиме от часового кварца. Без таймера 2, вроде система живёт, но как только подключаю- непроизвольное зависание, перезагрузка и т.д.
Пробовал в обработчиках запрещать прерывания- не помогает. Чую, что дело в таймере 2, но как победить?
Реклама
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Здравствуйте.
Tankor писал(а):Пробовал в обработчиках запрещать прерывания- не помогает.
Сие не имеет смысла, в обработчике все прерывания и так запрещены глобально.
Tankor писал(а):Чую, что дело в таймере 2, но как победить?
Тут вариант один - думать как контроллер. Это Вы пишете код, и только Вы знаете, когда, что и где происходит. Допустим, Вы пишете код такого простого, казалось бы, изделия как термометр. На таймере у Вас индикация, а по шине 1WIRE датчик. Вроде вся просто и понятно, но есть нюансы: при работе с шиной 1WIRE нельзя что бы кто-то вмешивался еще, ибо вся работа построена на таймингах. Уйдет контроллер индикацию обслуживать, и все полетит к чертям. Значит что? Нужно на время работы с датчиком запретить индикацию. Делов-то. Это если забыть, что индикацию нужно обновлять стабильно. И как результат - постоянное "промаргивание" индикатора при опросе датчика. Ерунда, конечно, нужно что-то другое. А можно в таймере индикации еще и запросы по шине делать. Первую цифру зажгли, команду на измерение датчику отправили, ушли... Очередную цифру зажгли, проверили, прошло достаточно времени на измерение температуры, и если прошло, то забираем результат. В следующий заход разбиваем результат по разрядам, и всякое такое. Все работает, ничего не моргает, да еще и время в основном цикле остается. Который пуст и ничем не занят, кстати. НО! Стоит ошибиться и настроить таймер на 2 мс, не учтя что в некоторые моменты код может обрабатываться 3 мс, мы получим кучу неприятностей в виде нервного срыва стека, и прочих зависаний. Потому как МК не в состоянии будет выйти из прерывания. А все почему? Да потому что программист не все учел. И это грустно, конечно. Вся подлость в том, что такие глюки могут никак себя не проявлять месяцами, а потом температура стала отрицательной, конвертация и разнос по разрядам стал дольше и хоп, не влезли в прерывание. И получили баг. Лови его потом...

Так что все решения исключительно в Вашей голове, ибо только Вы знаете, как оно работает (ну или хотя бы, как должно работать). :tea:

P.S. В остальном же, рекомендация, касаемая прерываний, всегда одна: прерывание, что бы оно ни делало, не должно выполняться долго. Потому как все остальное, выполняемое программно, в это время стоит. Нужно стараться делать флаговые автоматы. Завели кучу флагов, и выставляете их в прерываниях. А в основном цикле проверяете, не случилось ли чего... Это удобно, на самом деле, и контроллер крутится без остановок. Нет, никто не мешает сделать все наоборот на обработчиках (как в примере с термометром), но нужно отдавать себе отчет в том, что происходит...
Последний раз редактировалось edm2007 Пт июл 31, 2015 15:46:58, всего редактировалось 1 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

edm2007 писал(а):прерывание, что бы оно ни делало, не должно выполняться долго. Потому как все остальное в это время стоит.
Все правильно с одним уточнением: все остальное, что должно выполняться программно, в это время стоит. А "железячно" - таймеры продолжают ти'кать, UART принимает биты и пр. Не очень опытные могут превратно понять.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Это да, спасибо Jack_A. :beer: Действительно, могут понять не так. Разумеется, "хардварная" часть продолжит работу, а вот "софтварная" встанет.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Реклама
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

пытаюсь прикошачить пульт от донгла http://vrtp.ru/index.php?act=Attach&type=post&id=640012 к мега16+нокиа5110+rda5807,после включения пульт работает норм но через 10-15 мин мега16 неправильно считывает команды пульта через фотоприемник(адрес всегда считывается норм,а команда то ноль,то черти что),передергиваю питание и все работает норм,что может быть?листинг программы
Спойлер$regfile = "m16adef.dat" ' Используемый контроллер
$crystal = 8000000 ' 2000000 ' 4000000 ' 8000000
$framesize = 40
$hwstack = 40
$swstack = 40
'---------------- Используемые библиотеки ----------------------------------------
$lib "mcsbyte.lbx"
$lib "glcd-Nokia5110.lib"
'$lib "lcd4.lbx"
'---------------- Настраиваем порты -------------------
Config Scl = Portc.0
Config Sda = Portc.1
Config I2cdelay = 10

Config Portc.2 = Output 'светодиод
Config Pind.2 = Input 'int0 сюда вешаем фотоприемник вывод d.2
'---------------- Настраиваем таймера -------------------
Config Timer0 = Timer , Prescale = 256 '8000000/256=31250 Hz
Config Int0 = Falling 'Interruption on Falling
Stop Timer0
Enable Timer0
Enable Int0
Enable Interrupts
On Timer0 Tikers 'work on timer
On Int0 Infrared 'work on interruption
'---------------- Переменные -------------------
Dim Byte0 As Integer
Dim Byte1 As Byte
Dim Bass As Bit
Dim Vol As Byte
Dim Fset As Word
Dim Dane As Byte
Dim Freg As Single
Dim Pll As Single
Dim Z1 As String * 5
Dim Pstring1 As String * 3
Dim Pstring2 As String * 1
Dim Aaa As Byte
Dim Tik As Word 'counter of teaks of timer
Dim Byt As Byte 'counter accepted bit
Dim Repeat_flag As Bit 'flag of repetition
Dim Start_flag As Bit 'flag of start condition
Dim Address As Byte 'byte of address
Dim Command As Byte 'byte of command
Dim Address_1 As Byte 'direct byte of address
Dim Command_1 As Byte 'direct byte of command
Dim Address_0 As Byte 'indirect byte of address
Dim Command_0 As Byte 'indirect byte of command
Dim Summa As Word
'---------------- Настраиваем LCD Nokia3310 или Nokia5110 -------------------
Config Graphlcd = 128 * 64eadogm , Cs1 = Portb.2 , A0 = Portb.1 , Si = Portb.4 , Sclk = Portb.3 , Rst = Portb.0
Const Negative_lcd = 0 ' Для негативного вывода информации, установить "Negative_lcd = 1"
Initlcd ' Инициализируем LCD
Cls
Vol = 9
Bass = 1
Setfont Font12x16dig
Freg = 983
Declare Sub 123
Call 123
Do
' Incr Aaa
If Command = 2 Then Toggle Bass
Lcdat 1 , 1 , Address ; " " ; Command ; " "
'Lcdat 1 , 1 , Aaa
If Command = 160 Then
Freg = Freg + 1
Call 123
End If
If Command = 64 Then ' And Pll < 107.9
Freg = Freg - 1
Call 123
End If

If Command = 144 Then
Freg = 954
Call 123
End If
If Command = 184 Then
Freg = 983
Call 123
End If
If Command = 248 Then
Freg = 996
Call 123
End If
If Command = 176 Then
Freg = 1011
Call 123
End If

Z1 = Str(freg)
If Freg < 1000 Then Z1 = " " + Z1
Pstring1 = Left(z1 , 3)
Pstring2 = Mid(z1 , 4 , 1)







Setfont Font12x16dig
Lcdat 3 , 1 , Pstring1 ; "," ; Pstring2 ; " "
'Aaa = Freg Mod 100
'Lcdat 3 , 25 , Aaa ;
If Command = 80 And Vol > 0 Then
Decr Vol
Call 123
End If
If Command = 120 And Vol < 15 Then
Incr Vol
Call 123
End If
For Dane = 0 To 14
Byte0 = Dane * 6
Byte0 = Byte0 + 1
If Vol > Dane Then
Lcdat 5 , Byte0 , "!"
Else
Lcdat 5 , Byte0 , " "
end IF
Next Dane


Waitms 200
Loop
End 'End of main cycle



'################################################################################################################
Tikers: '?????? ?? ???????

Timer0 = 253 '31250/(256-253)=10416,66 Hz (96 ???)
'254 - TV SAMSUNG, 253 - DVD SAMSUNG ? ?????? NEC
Incr Tik
If Tik >= 1200 Then '???? ????????? 1200 ?????, ???????? ??? ? ???????? ?????????
Tik = 0
Repeat_flag = 0
Start_flag = 0
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
Command = 0
Address = 0
Stop Timer0 '????????????? ??????
End If

Return
'*******************************************************************************

Infrared: '?????? ?? ??????????

Start Timer0 '????????? ??????

If Tik >= 139 And Tik < 150 Then '???? ????????? ?? 139 ?? 150 ????? - "?????"
Address = 1
Repeat_flag = 0
Start_flag = 1
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
End If

If Tik >= 116 And Tik < 139 Then '???? ????????? ?? 116 ?? 138 ????? - "??????"
Address = 2
Repeat_flag = 1
Start_flag = 0
End If

If Tik >= 22 And Tik < 116 And Start_flag = 1 Then '???? ????????? ?? 22 ?? 115 ????? - ??????? "1"
Incr Byt

If Byt < 9 Then
Shift Address_1 , Left
Address_1 = Address_1 + 1
End If

If Byt >= 9 And Byt < 17 Then
Shift Address_0 , Left
Address_0 = Address_0 + 1
End If

If Byt >= 17 And Byt < 25 Then
Shift Command_1 , Left
Command_1 = Command_1 + 1
End If

If Byt >= 25 Then
Shift Command_0 , Left
Command_0 = Command_0 + 1
End If
End If

If Tik >= 10 And Tik < 22 And Start_flag = 1 Then '???? ????????? ?? 10 ?? 21 ???? - ??????? "0"
Incr Byt

If Byt < 9 Then
Shift Address_1 , Left
End If

If Byt >= 9 And Byt < 17 Then
Shift Address_0 , Left
End If

If Byt >= 17 And Byt < 25 Then
Shift Command_1 , Left
End If

If Byt >= 25 Then
Shift Command_0 , Left
End If
End If

Tik = 0

If Byt = 32 Then '???? ??????? 4 ?????, ????????? ???????????? ?????? ???????
'???? ????? ??? ??????? 16-??????, ???????? ?? ????????, ??????? ????????????????
'Summa = Address_0 + Address_1
'If Summa = 255 Then
Address = Address_1
'Else
'Address = 0
'End If

'Summa = Command_0 + Command_1
'If Summa = 255 Then
Command = Command_1
'Else
'Command = 0
'End If
Byt = 0
Repeat_flag = 0
Start_flag = 0
Stop Timer0 '????????????? ??????
End If
'Waitms 100
Return


Sub 123:
I2cinit
I2cstart
I2cwbyte &B00100000
'02
Dane = &B11000010
Dane.4 = Bass
I2cwbyte Dane 'HD2
I2cwbyte &B00000101 'H8D
'03
Pll = Freg - 870
Byte0 = Pll / 4
Portb.4 = 0
Waitms 2
I2cwbyte Byte0
Byte1 = Byte0 * 4 '03H байт
Byte1 = Pll - Byte1
Byte1 = Byte1 * 64
Byte1.4 = 1
I2cwbyte Byte1 '03L байт
'04
I2cwbyte &B00000010 'H02
I2cwbyte &B00000000 'H00
'05
I2cwbyte &B10001000 'H08
Dane = &H80 + Vol
I2cwbyte Dane
'06
I2cwbyte &B00000000
I2cwbyte &B00001000
'07
I2cwbyte &B01000010
I2cwbyte &B00000010
'08
I2cwbyte &B00000000
I2cwbyte &B00000000

End Sub
'---------- Используемые шрифты --------------
' $include "font6x8.font"
$include "font12x16dig.font"
Реклама
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

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

Сообщение fedyasolder »

Если код для ик не трогали, то вероятно где-то что-то портит переменную с командой.
электропримат паяю даже лёжа...
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

код не трогал,сейчас фотоприемник запитал от 4-х аккумуляторов ааа-общее напряжение 5 в,все равно иногда адрес доходит верно,а вот команды неправильно либо вообще 0,пока так и оставил....
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

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

Сообщение fedyasolder »

От разных пультов пробовали? Короткое нажатие, длинное нажатие на кнопку пульта...
электропримат паяю даже лёжа...
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

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

Сообщение pavel1979 »

вы навели на мысль-попробовал пульты от двд-плеера ВВК и телевизора голстар принимает без нареканий с трех метров,а вот пульт от донгла всего с полутора метров и то такие перебои...наверно виноват пульт...спасибо за подсказку!
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

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

Сообщение fedyasolder »

Щас глянул. У меня для опытов от dvd bbk пульт 404E. C ним полный порядочек.
Если с меньшего расстояния, то скорее всего частота модуляции отличается.
электропримат паяю даже лёжа...
Аватара пользователя
bumbum
Открыл глаза
Сообщения: 66
Зарегистрирован: Сб янв 28, 2006 01:01:04

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

Сообщение bumbum »

организую цикл

For Takt = начало To конец Step шаг

когда:
начало = 0
конец = 15
шаг = 1
то все в порядке
'===================
когда:
начало = 15
конец = 0
шаг= -1
то непорядок.

но если это же пробую так :

For Takt = начало To конец Step -1

то обратный цикл работает
переменную Шаг назначаю как Integer
Почему?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

bumbum писал(а):Почему?
Потому что судя по всему, в качестве параметра Step может быть только константа.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

Доброго дня, уважаемые знатоки !

Нужно было придумать генератор 36кгц, сначала просто дрыгал ногой по таймеру, потом наткнулся на такой код:
Спойлер

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

$regfile = "m8def.dat"
  $crystal = 8000000
  $framesize = 32
  $hwstack = 40
  $swstack = 16

  Config Portb.1 = Output

  Config Timer1 = Counter , Compare A = Toggle , Prescale = 1

  Tccr1b.wgm12 = 1
  Tccr1b.wgm13 = 1

  Icr1 = 110

End
Работает, но нифига (простите) не понятно... Хочется понять как это сделали. Даташит на мегу покурил, но мало прояснилось.
Нужно еще как-то добавить перерыв в импульсах примерно после 80 штук на пол-секунды (это чтобы TSOP не перегрузился).
Это пока додумываю.
С уважением,
Алексей.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Здравствуйте.

Да собственно, ничего сложного здесь нет, настроен режим работы таймера CTC (сброс при совпадении), с ограничением счета до значения в регистре ICR. В даташите это все есть:

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

Tccr1b.wgm12 = 1
Tccr1b.wgm13 = 1
=

Изображение

Таймер будет считать от 0 до ICR1 = 110, а затем сбросится, и начнет все снова. При совпадении счетного регистра таймера с регистром ICR на выводе OC1A уровень сменится на противоположный:

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

Compare A = Toggle
Теперь простая математика: МК работает на частоте 8 МГц, значит период равен 1 / 8 000 000 = 0.000125 мс. Прескаллер таймера равен 1, значит таймер досчитает до конца за 110 * 0,000125 = 0,01375 мс. Значит за секунду уровень на выводе OC1A сменится 1000 / 0,01375 = 72727 раз / 2 = 36363 Гц.

Таким нехитрым способом Вы можете пересчитать таймер под любую частоту, всего лишь меняя значение в регистре ICR. И при этом МК будет работать сам по себе, не занимая время всякими обработчиками таймеров и проч. Это полностью хардварная вещь.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

edm2007 писал(а): настроен режим работы таймера CTC (сброс при совпадении), с ограничением счета до значения в регистре ICR. .
То есть это именно тот режим, который вы мне советовали использовать в моей задумке... :) Я совсем запутался с этими режимами работы таймера, и, видимо, этот конкретный режим простыми командами Bascom не опишешь.
Огромное спасибо, стало понятнее ! :)

А не подскажете как сделать паузу между пачками импульсов ?
Я сейчас это сделал, просто использовав Таймер2 в режиме таймера с прескалером 1024. Как только он 50 раз переполнится - делаю стоп таймер1. Потом пауза - и старт таймер1. По-ламерски, видимо. :oops: А мне таймер2 жалко - нужно еще во все это дело Шим запихнуть для регулировки яркости светодиодной ленты.
С уважением,
Алексей.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Gordon Shumway писал(а):То есть это именно тот режим, который вы мне советовали использовать в моей задумке...
Именно так. Только я говорил про CTC с регистром OCR1A (здесь это 4 режим). В Вашем же случае довольно нетипичное использование таймера, так как ICR - это регистр захвата (в этот регистр "захватывается" значение счетного регистра либо по активному уровню на выводе ICP1, либо по сигналу аналогового компаратора). Но принцип работы CTC режима идентичен совершенно.
Gordon Shumway писал(а):Я совсем запутался с этими режимами работы таймера, и, видимо, этот конкретный режим простыми командами Bascom не опишешь.
На самом деле в этом многообразии режимов разобраться не так сложно, как кажется. Просто при программировании в баскоме все это многообразие остается на заднем плане, так как этих самых простых команд нет, как Вы верно заметили. А о прямой конфигурации кто-то думать не хочет, кто-то разобраться не может, а некоторые и не подозревают даже (и таких большинство)... :tea:
Gordon Shumway писал(а):А не подскажете как сделать паузу между пачками импульсов ?
Ну использование таймера в котором тормозится работа другого таймера не так уж и по-ламерски. Если ресурсов не жаль, то вполне себе решение. :wink: Если же жалко, то выкручиваться придется. У меги 8 таймеров-то полно, самый простой 0 можно на отсчет пауз посадить. Или тоже занят? :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

edm2007 писал(а):
Gordon Shumway писал(а): У меги 8 таймеров-то полно, самый простой 0 можно на отсчет пауз посадить. Или тоже занят? :)
Свободен, только я совсем про него забыл. Его "на ногах" нет, и он просто вылетел из головы ! :) Я его посажу на прерывание пачек импульсов, а таймер2 станет шимом.

Спасибо !!!
С уважением,
Алексей.
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

Доб.день.
Помогите пожалуйста разобраться... Тираню часы ds3231. Записываю в регистр управления байт для секундных импульсов. Часики весело мигают светодиодом.
А вот при попытке считать этот же регистр управления ничего вразумительного не выходит...
Помогите мне найти мою ошибку.
Спасибо.
Вот кусочек кода...

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

Dim Registr_driver As Byte
Dim Registr_driver_1 As Byte

Const Ds3231w = &HD0
Const Ds3231r = &HD1
Const Upradress = &H0E
Config Clock = User

I2cstart
I2cwbyte Ds3231w
I2cwbyte Upradress
I2cwbyte &B00100000
I2cstop

I2cstart
I2cwbyte Ds3231r
I2cwbyte Upradress
I2crbyte Registr_driver , Nack
I2cstop

Registr_driver_1 = Binval(registr_driver)

Locate 1 , 1 : Lcd Registr_driver_1
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Добрый.

Будьте добры, приведите весь код с вызовами соответствующих функций. В обобщенном виде чтение происходит следующим образом:

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

1. старт
2. адрес микросхемы с битом записи (Ds3231w)
3. адрес, откуда читаем (Upradress)
4. старт
5. адрес микросхемы с битом чтения (Ds3231r)
6. забираем значение (ACK или NACK, по ситуации)
7. стоп
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ответить

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