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

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

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

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

kip96 писал(а):
Gordon Shumway писал(а):Но появился еще один непонятный глюк - значения максимума и минимума почему-то иногда сбрасываются на текущие значения...

Я правда не понял логику показывания минимума и максимума, но вот вставил в подпрограмму Maxmin:- А=0, В=0, и стало паказывать мин и макс, от последнего нажатия кнопки.


У меня максимум и минимум работают и отображаются корректно. Видиму тут тоже прерывания где-то что-то портят.

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

Методика сравнивания:
a=0, b=0  - первое включение, максимальные и минимальные переменные берут значения текущей температуры,
затем а=1 и b=1 - больше значения текущей температуры не брать, а сравнивать.

Если текущее измерение больше tmax, то tmax берет значение текущей температуры.
С минимумом аналогично, только знак меняется на "меньше".

Дальше на int1 хочу добавить кнопку сброса максимальных и минимальных значений, то есть делаем a=0 и b =0.


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

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

Сообщение edm2007 »

Gordon Shumway писал(а):Видиму тут тоже прерывания где-то что-то портят.


Может и так, в прерывании регистры ведь тоже используются. Те же, что и в основном коде. Сделайте обработку прерывания таким:

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

Maxmin:

$asm
push R31
IN R31, SREG
PUSH R31
push R30
push R29
push R28
push R27
PUSH R26
push R24
push R5
push R4
$end Asm

Call D3310clear

Restore Bmp2
Call D3310bmpout

Call D3310position(6 , 1)
Call D3310print(1tempermax)

Call D3310position(6 , 2)
Call D3310print(1tempermin)

Call D3310position(6 , 4)
Call D3310print(2tempermax )

Call D3310position(6 , 5)
Call D3310print(2tempermin)

Wait 5

Call D3310clear

Restore Bmp1
Call D3310bmpout
Gifr = 64

$asm
pop R4
pop R5
pop R24
pop R26
pop R27
pop R28
pop R29
pop R30
pop R31
Out SREG , R31
pop R31
$end Asm

Return


Хотя... Там же еще работа с дисплеем... Это везде смотреть надо что меняется...

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

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

Сообщение edm2007 »

edm2007 писал(а):А в протеусе максимальное значение старое остается. Минимальное нормально работает.


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

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

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

edm2007 писал(а):
edm2007 писал(а):А в протеусе максимальное значение старое остается. Минимальное нормально работает.


А, это опять же логично. При первом включении 85 С выводится, вот он и считает его верхним...


То есть первое измерение нужно как-то проигнорировать...

edm2007 писал(а):А в протеусе максимальное значение старое остается. Минимальное нормально работает. И еще, при температурах до 10 после знака С кракозябры вылезают.


У меня тоже были, разобрался - больше не появляются (проверено холодильником).
Подвинул цифры на экране, в конце пробел если <10 и > -10.
С уважением,
Алексей.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

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

edm2007 писал(а):
Gordon Shumway писал(а):Видиму тут тоже прерывания где-то что-то портят.


Может и так, в прерывании регистры ведь тоже используются. Те же, что и в основном коде. Сделайте обработку прерывания таким:

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

Maxmin:

$asm
push R31
IN R31, SREG
PUSH R31
push R30
push R29
push R28
push R27
PUSH R26
push R24
push R5
push R4
$end Asm

    'поскипано'

return


А в протеусе максимальное значение старое остается. Минимальное нормально работает. И еще, при температурах до 10 после знака С кракозябры вылезают.


Так похоже все отлично работает. Добавил кнопку сброса максимума и минимума на int1,
тоже работает нормально.

И вернул:

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

'Bitwait Portb.7 , Set                                       ' Ждем окончания преобразования
Waitms 750


так 85 градусов не выскакивает.

Спасибо !!! :beer:

PS а как ATmega8-16au (tqfp) на 1 мгц относится к питанию 3 вольта ? А то вышеописанные эксперименты я делал с ATmega8a-PU (новая) с трехвольтовым питанием (дисплей работает 2,7-3,3в).
С уважением,
Алексей.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Gordon Shumway писал(а):PS а как ATmega8-16au (tqfp) на 1 мгц относится к питанию 3 вольта ?


Судя по даташиту - не очень хорошо относится. :)

Operating Voltages
– 2.7 - 5.5V (ATmega8L)
– 4.5 - 5.5V (ATmega8)


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

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

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

edm2007 писал(а):
Gordon Shumway писал(а):PS а как ATmega8-16au (tqfp) на 1 мгц относится к питанию 3 вольта ?


Судя по даташиту - не очень хорошо относится. :)

Operating Voltages
– 2.7 - 5.5V (ATmega8L)
– 4.5 - 5.5V (ATmega8)


И еще, я надеюсь что это так поскипано, но на самом деле извлечение из стека в конце осталось (POP)? Для прерывания int1 то же самое бы сделать, только регистры посмотреть надо, что именно сохранять... Либо просто код скиньте...


Поскипано для сокращения квотинга, фидошная привычка... Добавил, как у вас было написано. Для int1 ничего дополнительно не делал.

Про питание - atmega8-16PU (dip28) завелась :)

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

$regfile = "m8def.dat"
$crystal = 1000000

$hwstack = 32
$swstack = 8
$framesize = 100

Config Portb.0 = Output                                     'D/C (pin 4)
D3310dc Alias Portb.0

Config Portd.7 = Output                                     'SCE (pin 13)
D3310ce Alias Portd.7

Config Portd.6 = Output                                     'Reset (pin 8 )
D3310re Alias Portd.6

Config Int0 = Falling
On Int0 Maxmin Nosave

Config Int1 = Falling
On Int1 Sbros

Config 1wire = Portb.7

Dim A As Bit
Dim B As Bit
Dim Byte0 As Byte , Byte1 As Byte                           'читать датчики
Dim Byte2 As Byte , Byte3 As Byte

Dim 1sign As String * 1
Dim 1signmax As String * 1
Dim 1signmin As String * 1

Dim 2sign As String * 1
Dim 2signmax As String * 1
Dim 2signmin As String * 1

Dim 1tmax As Integer , 1tmin As Integer
Dim 2tmax As Integer , 2tmin As Integer

Dim 1temper As String * 7

Dim 1tempermax As String * 10
Dim 1tempermin As String * 10

Dim 2temper As String * 7
Dim 2tempermax As String * 10
Dim 2tempermin As String * 10

Dim D1 As Integer , D2 As Integer



'конфигурируем SPI в программном режиме. SCLK (pin 2) - PORTD.0; SDA (pin 3) - PORTD.1;
Config Spi = Soft , Din = Portb.1 , Dout = Portd.1 , Ss = None , Clock = Portd.0

'Initialise Spi
Spiinit

$include "3310init.bas"

'Initialise the display
Call D3310reset
Call D3310init
Call D3310clear

Restore Bmp1                                                'D3310Bmp1 is the label name for the first bmp
Call D3310bmpout

A = 0
B = 0

Do

Disable Int0
Disable Int1
Disable Interrupts

1wreset

1wwrite &HCC                                                ' Выдаем команду чтения ПЗУ
1wwrite &H44                                                ' Запуск измерения

'Bitwait Portb.7 , Set                                       ' Ждем окончания преобразования
Waitms 750

1wreset
1wwrite &HCC
1wwrite &HBE                                                ' Команда чтения ОЗУ датчика


D1 = 1wread(2)                                              '

Waitms 750

1wreset Pinc , 5

1wwrite &HCC , 1 , Pinc , 5                                 ' Выдаем команду чтения ПЗУ
1wwrite &H44 , 1 , Pinc , 5                                 ' Запуск измерения

Bitwait Pinc.5 , Set                                        ' Ждем окончания преобразования
1wreset Pinc , 5

1wwrite &HCC , 1 , Pinc , 5
1wwrite &HBE , 1 , Pinc , 5                                 ' Команда чтения ОЗУ датчика
D2 = 1wread(2 , Pinc , 5)                                   '

D1 = D1 * 10
   D1 = D1 \ 16


1temper = Str(d1)
1temper = Format(1temper , "0.0")


D2 = D2 * 10
   D2 = D2 \ 16
  2temper = Str(d2)
  2temper = Format(2temper , "0.0")

Enable Interrupts
Enable Int0
Enable Int1


If A = 0 Then
1tmax = D1
1tmin = D1
A = 1
End If

If D1 > 0 Then
1sign = "+"
Else
1sign = ""
End If


If D1 > 1tmax Then 1tmax = D1
If D1 < 1tmin Then 1tmin = D1
If 1tmax > 0 Then 1signmax = "+"
If 1tmax <= 0 Then 1signmax = ""
If 1tmin > 0 Then 1signmin = "+"
If 1tmin <= 0 Then 1signmin = ""

1temper = 1sign + 1temper

If D1 < 100 And D1 > -100 Then
1temper = 1temper + "_C "
Else
1temper = 1temper + "_C"
End If


1tempermax = Str(1tmax)
1tempermax = Format(1tempermax , "0.0")
1tempermax = 1signmax + 1tempermax
1tempermax = 1tempermax + "_C"

1tempermin = Str(1tmin)
1tempermin = Format(1tempermin , "0.0")
1tempermin = 1signmin + 1tempermin
1tempermin = 1tempermin + "_C"

'расчет показаний второго датчика

If B = 0 Then
2tmax = D2
2tmin = D2
B = 1
End If

If D2 > 0 Then
2sign = "+"
Else
2sign = ""
End If

If D2 > 2tmax Then 2tmax = D2
If D2 < 2tmin Then 2tmin = D2
If 2tmax > 0 Then 2signmax = "+"
If 2tmax <= 0 Then 2signmax = ""
If 2tmin > 0 Then 2signmin = "+"
If 2tmin <= 0 Then 2signmin = ""

2temper = 2sign + 2temper

If D2 < 100 And D2 > -100 Then
2temper = 2temper + "_C "
Else
2temper = 2temper + "_C"
End If

2tempermax = Str(2tmax)
2tempermax = Format(2tempermax , "0.0")
2tempermax = 2signmax + 2tempermax
2tempermax = 2tempermax + "_C"

2tempermin = Str(2tmin)
2tempermin = Format(2tempermin , "0.0")
2tempermin = 2signmin + 2tempermin
2tempermin = 2tempermin + "_C"

Call D3310position(6 , 1)
Call D3310print(1temper)

Call D3310position(6 , 4)
Call D3310print(2temper)

Wait 1

Loop

End

Maxmin:

$asm
push R31
IN R31, SREG
PUSH R31
push R30
push R29
push R28
push R27
PUSH R26
push R24
push R5
push R4
$end Asm

Call D3310clear

Restore Bmp2
Call D3310bmpout

Call D3310position(6 , 1)
Call D3310print(1tempermax)

Call D3310position(6 , 2)
Call D3310print(1tempermin)

Call D3310position(6 , 4)
Call D3310print(2tempermax )

Call D3310position(6 , 5)
Call D3310print(2tempermin)

Wait 5

Call D3310clear

Restore Bmp1
Call D3310bmpout
Gifr = 64

$asm
pop R4
pop R5
pop R24
pop R26
pop R27
pop R28
pop R29
pop R30
pop R31
Out Sreg , R31
pop R31
$end Asm

Return

Sbros:

Call D3310clear



A = 0
B = 0

Restore Bmp1
Call D3310bmpout

Wait 1
Return

$include "3310end.bas"
$include "bmp1.bas"
$include "bmp2.bas"
С уважением,
Алексей.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Теперь в оба прерывания запишите только сброс обоих флагов GIFR = 192 перед RETURN.

И еще, несмотря на то, что все работает, в протеусе так же рвет башню при нажатии на вторую кнопку. Лучше тогда сделать так:

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

On Int1 Sbros Nosave     

............................

Sbros:

$asm
push R31
IN R31, SREG
PUSH R31
push R30
push R24
$end Asm

Call D3310clear

A = 0
B = 0

Restore Bmp1
Call D3310bmpout
Wait 1

Gifr = 192

$asm
pop R24
pop R30
pop R31
Out Sreg , R31
pop R31
$end Asm

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

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

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

edm2007 писал(а):Теперь в оба прерывания запишите только сброс обоих флагов GIFR = 192 перед RETURN.

И еще, несмотря на то, что все работает, в протеусе так же рвет башню при нажатии на вторую кнопку. Лучше тогда сделать так:

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

On Int1 Sbros Nosave     

............................

Sbros:

$asm
push R31
IN R31, SREG
PUSH R31
push R30
push R24
$end Asm

Call D3310clear

A = 0
B = 0

Restore Bmp1
Call D3310bmpout
Wait 1

Gifr = 192

$asm
pop R24
pop R30
pop R31
Out Sreg , R31
pop R31
$end Asm

Return


А можно поподробнее - что означает nosave ? Видимо что-то не нужно сохранить ?
А $asm -там какой-то код на ассемблере ?... Я его совсем не знаю. :(

Добавил еще и timer1 - теперь контроллер засыпает (idle) и просыпается каждые ~16 секунд, чтобы померить температуру, вывести - и снова idle. Ощутимо сохраняем батарейку.

Int0 и int1 тоже работают, как было раньше.

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

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

Сообщение edm2007 »

По умолчанию, баском все регистры (R0 - R31) а так же статусный регистр SREG сохраняет в стек при входе в прерывание и извлекает их при выходе. И дело тут вот в чем, допустим регистр R25 используется для подсчета чего-нибудь в основном коде. А тут бац !!! Ушли в прерывание. В котором этот же регистр использовался в гнусных целях для прерывания. И естественно, его значение изменилось. Что будет в основном коде при возвращении, угадать не сложно...

А то, что он сохраняет все скопом мало кого волнует. Это же не асм, и что именно и куда он там помещает мы не в курсе. :)

Но нужды сохранять все регистры в принципе нет, надо сохранить только те, которые в прерывании используются. А NOSAVE указывает компилятору вообще ничего не сохранять. Дабы самому ассемблерной вставкой сохранить то, что нужно.

P.S. Обычно все и так прекрасно работает, но тут при использовании прерываний сносит стек... Хорошо бы поковырять $hwstack = 32, $swstack = 8, $framesize = 100...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Magicanin
Нашел транзистор. Понюхал.
Сообщения: 184
Зарегистрирован: Чт янв 13, 2011 11:36:16
Откуда: Красноярский край

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

Сообщение Magicanin »

Помогите старому слепому коту записать регистр конфигурации ds18b20
Что не так делаю:

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

   
...
Const Scw = &B00011111
...
1wwrite &HCC
1wwrite &H4E
1wwrite Scw , 4
1wwrite &HCC
1wwrite &H48
1wreset
...
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Как вариант, так:

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

1wreset
1wwrite &HCC         ' пропуск ROM
1wwrite &H4E          ' запись в память

1wwrite &H7D         ' далее, последовательно три байта (TH, TL, рег. конфиг)
1wwrite &HC9
1wwrite &H5F


Как результат:

Изображение

У датчика питание паразитное, что ли?
Вложения
ds18b20.jpg
(5.39 КБ) 924 скачивания
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Magicanin
Нашел транзистор. Понюхал.
Сообщения: 184
Зарегистрирован: Чт янв 13, 2011 11:36:16
Откуда: Красноярский край

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

Сообщение Magicanin »

У датчика питание паразитное, что ли?

Нет, класическое.
Как вариант, так:

Попробуем
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Аватара пользователя
Magicanin
Нашел транзистор. Понюхал.
Сообщения: 184
Зарегистрирован: Чт янв 13, 2011 11:36:16
Откуда: Красноярский край

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

Сообщение Magicanin »

Прошло вот так:

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

...
Const Scw = &B00011111
...
1wreset
1wwrite &HCC
1wwrite &H4E
1wwrite Scw                                             
1wwrite &HCC
1wwrite &H48
1wreset


Но после отключения питания регистр не сохраняется, в чем дело?
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Magicanin писал(а):Нет, класическое.


Тогда копирование ОЗУ в ПЗУ (&H48) не нужно.

У меня вот в свое время тоже не получилось сразу в 4 байт записать (1wwrite &H5F , 4). Впрочем, в даташите и написано что после &H4E должны быть переданы ТРИ байта последовательно. Видимо, дело в этом...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Magicanin
Нашел транзистор. Понюхал.
Сообщения: 184
Зарегистрирован: Чт янв 13, 2011 11:36:16
Откуда: Красноярский край

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

Сообщение Magicanin »

Тогда копирование ОЗУ в ПЗУ (&H48) не нужно.

Так в тот-то и суть чтобы регистр остался навсегда в пзу.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Magicanin писал(а):Прошло вот так:


Да в том и дело что не прошло. Так я тоже пробовал. Дело в том что при такой записи без разницы что содержит константа, всегда будет записываться 5F. Но при этом портятся второй и третий байт. Ради интереса, попробуйте в протеусе сконфигурировать Вашим способом не на 9 а на 10 бит, например (&B00111111). Все равно будет 5F (хотя, должно записаться 3F).
Последний раз редактировалось edm2007 Вс окт 30, 2011 09:22:51, всего редактировалось 1 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Да, и еще, если посмотреть внимательно на

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

1wreset
1wwrite &HCC
1wwrite &H4E
1wwrite Scw
1wwrite &HCC
1wwrite &H48


то становится понятно что ни о какой конфигурации речи быть и не может. После команды записи пишутся последовательно константа, &HCC, &H48. Он не воспринимает это как команду, а считает что надо эти значения записать. А так как в регистре конфигурации НЕЛЬЗЯ менять биты 0 - 4 и бит 7, то вылетает всякая ерунда.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
Magicanin
Нашел транзистор. Понюхал.
Сообщения: 184
Зарегистрирован: Чт янв 13, 2011 11:36:16
Откуда: Красноярский край

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

Сообщение Magicanin »

сделал так:

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

Scw(1) = 30
Scw(2) = 35
Scw(3) = &B01111111
   1wreset
   1wwrite &HCC
   1wwrite &H4E
   For M = 1 To 3
   1wwrite Scw(m)
   Next M
   Waitms 10
   1wwrite &HCC
   1wwrite &H48
   1wreset

Значение в регистре меняется, но в пзу не сохраняет. Проверяю на железе.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Magicanin писал(а):Значение в регистре меняется, но в пзу не сохраняет. Проверяю на железе.


Да. Более того, после того как будут последовательно записаны TH, TL и конфигурация, строки

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

1wwrite &HCC
1wwrite &H48


запишут в TH и TL - CC и 48 соответственно. Он их как по кольцу пишет. Потому и не воспринимает команду...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ответить

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