BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
По первому вопросу:
Вот это
Sck Alias Pinc.0
замени на это
Sck Alias Portc.0
Вот это
Sck Alias Pinc.0
замени на это
Sck Alias Portc.0
- Реклама
Re: BASCOM AVR в вопросах и ответах
А кто подскажет как переключать частоту? Надо бы от RC генератора или кварца переключаться на низкочастотный перед экономичным режимом?
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: BASCOM AVR в вопросах и ответах
В некоторых из sleep-режимов тактовый генератор просто останавливается, независимо от источника тактирования
Re: BASCOM AVR в вопросах и ответах
Да причём тут sleep режимы блин! Меня интересовала работа на пониженной частоте в экономичном режим, скажем 128КГц экономичный. Ладно мне ответили что это невозможно.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: BASCOM AVR в вопросах и ответах
В контроллерах энергия расходуется не по времени, а по количеству переключений. То есть, программа работает 1 сек на частоте 10 МГц или 10 сек на 1 МГц энергии потребуется примерно одинаковое количество. Иными словами почти нет разницы, будет ли контроллер работать все время на 128 кГц или интервалами по 1 мс с промежутками по 99 мс на частоте 12.8 МГц. Использование сна чуть сложнее. Потребление энергии в нем может быть выше, если остается много работающей переферии, или меньше, если контроллер только отвечает на внешние события (телевизионные пульты вон сколько работают).
Поэтому и возникает интерес, что же за задача такая, что самые очевидные решения не устраивают.
Поэтому и возникает интерес, что же за задача такая, что самые очевидные решения не устраивают.
- Реклама
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Этому где-то учат, или сами додумались?
АТМЕЛ только не говорите, а то массового суицида сотрудников АТМЕЛ не избежать
АТМЕЛ только не говорите, а то массового суицида сотрудников АТМЕЛ не избежать
Все делают ошибки, только мудрецы - новые, а дураки - старые.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: BASCOM AVR в вопросах и ответах
Это следует из принципа работы КМОП (разумеется, я слегка упростил, на самом деле будут и утечки, и другие расходы, но в первом приближении верно) и даташита. Загляните туда на графики зависимости потребляемого тока от частоты. Вы будете удивлены, но они достаточно близки к линейным.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: BASCOM AVR в вопросах и ответах
Выбор тактового генератора из программы реализован в семействе XMega AVR. У MegaAVR приходится довольствоваться только делителем CLKPR(и то не у всех чипов).Foton-4n писал(а):Меня интересовала работа на пониженной частоте в экономичном режим, скажем 128КГц экономичный.
Re: BASCOM AVR в вопросах и ответах
Вопрос по компаратору на атини 13
мне нужно на порте PB0 (AIN0) засекать появления какого либо напряжения, скажем около 3вольт, как только появилось на этом порте напряжение то далее ставим условие и выполняем действие
Собственно вопрос, каким образом понять что на этом порте появилось напряжение, большее (или меньшее) чем на порте AIN1?
всмысле как это выглядит в виде кода и как конфигурировать компаратор?
нужен именно этот порт так как другие порты с ацп уже заняты,
----
помогите чайнику,
между делом) Спасибо!
мне нужно на порте PB0 (AIN0) засекать появления какого либо напряжения, скажем около 3вольт, как только появилось на этом порте напряжение то далее ставим условие и выполняем действие
Собственно вопрос, каким образом понять что на этом порте появилось напряжение, большее (или меньшее) чем на порте AIN1?
всмысле как это выглядит в виде кода и как конфигурировать компаратор?
нужен именно этот порт так как другие порты с ацп уже заняты,
----
помогите чайнику,
между делом) Спасибо!
Re: BASCOM AVR в вопросах и ответах
Мрр котам
Написал прошивку на барсике и собрал схему выключения нагрузки (9вольт) на тиньке13.
Все просто: делитель напряжения и АЦП. Значение ADC(0) выводится в UART для настройки. Подключил светодиод и все работает просто замечательно. Нагрузка выключается на 9вольтах и ниже.
И тут столкнулся с проблемой, подключив лампу накаливания (21Вт). Падение напряжения и, как следствие, пляски значения ADC(0) приводят к выключению нагрузки не на том пороге, т.е выключается уже на 11вольтах.
Подскажите, как убрать эту зависимость от нагрузки программно или может что-то в схему добавить.
Написал прошивку на барсике и собрал схему выключения нагрузки (9вольт) на тиньке13.
Все просто: делитель напряжения и АЦП. Значение ADC(0) выводится в UART для настройки. Подключил светодиод и все работает просто замечательно. Нагрузка выключается на 9вольтах и ниже.
И тут столкнулся с проблемой, подключив лампу накаливания (21Вт). Падение напряжения и, как следствие, пляски значения ADC(0) приводят к выключению нагрузки не на том пороге, т.е выключается уже на 11вольтах.
Подскажите, как убрать эту зависимость от нагрузки программно или может что-то в схему добавить.
Re: BASCOM AVR в вопросах и ответах
Точность АЦП плавает от напруги и температуры. Для суперточный решений только стабильная паруга питания и желательно 5В. Погрешность вполне приличная при верхнем пороге измерения в ~6.6В до 30-40мВ может дойти погрешность при изменении напруги с 2.5 до 5В, так что проблема еще та!
Так же проблема при нагреве плывёт вниз, в результате ЗУ успешно заряжает до скажем 4.12 когда плата прогрелась, и на холодную уже заряжает до 4.1 или даже 4.09В! Вот это конечно проблема из проблем.
Во всех случаях опора внутренняя 1.1В, мне показалось или на мега меньше плывёт от температуры как бы, ЗУ на mega168p вроде не заметил плавания напруги хотя плата тоже греется так же примерно.
А что бы более точно было оценивать напругу надо юзать алгоритм кратковременного захвата, тут либо оценка по пику, или если значение достигает нужного то сбрасываем таймер, если снизилось то таймер начинает работать по истечению времени событие, тогда короткие провалы не будут влиять. Захват по пику тут измеряем пики на протяжении времени, если новое значение ниже то опять таймер по истечении новое значение (при ШИМ точно показывает напругу при выключенной напгрузке, хотя колебания от 3.5В до 2.7-2.8В, показывает 3.5В реальная 2.7В просадка, при выключенной показания реальной не меняются, просадка = реальной, специально проверял запитав через резюк так что алгоритм работает идеально), если выше сразу и сброс таймера. У меня напруга очень даже пляшет при включении и просаживается но это не привело к ложным срабатываниям, можно увеличить время ожидания при потенциальной просадкой. У меня вольтметр достаточно тяжёлая процедура там куча таймеров для правильной оценки напруги, минимумы и пики, и это по каждому каналу.
Вольтметр в универсальном портативном БП занимает около 20% памяти от 32Кб, в простых решениях лазерах и фонарях около 30-40% от 8Кб памяти.
А по поводу сна тут конечно вопрос спорный. Кратковременное пробуждение требует работы генератора какого? Странно у меня на 8МГц при 5В тянет около 8.5мА, в IDLE аж до 5 снижается
я бы сказал супер! Про переферию говорить мне не надо я сюда пришёл не с вопросом как мне таймер сделать!
Вот про то я и говорю что снижение частоты можно было сохранять режим оперативного выхода на рабочий режим гораздо дольше, скажем при потреблении в 0.3мА против 8.5мА во сколько раз он бы продлился!
Активация нужна при нажатии кнопок сидящий на АЦП.
Так же проблема при нагреве плывёт вниз, в результате ЗУ успешно заряжает до скажем 4.12 когда плата прогрелась, и на холодную уже заряжает до 4.1 или даже 4.09В! Вот это конечно проблема из проблем.
Во всех случаях опора внутренняя 1.1В, мне показалось или на мега меньше плывёт от температуры как бы, ЗУ на mega168p вроде не заметил плавания напруги хотя плата тоже греется так же примерно.
А что бы более точно было оценивать напругу надо юзать алгоритм кратковременного захвата, тут либо оценка по пику, или если значение достигает нужного то сбрасываем таймер, если снизилось то таймер начинает работать по истечению времени событие, тогда короткие провалы не будут влиять. Захват по пику тут измеряем пики на протяжении времени, если новое значение ниже то опять таймер по истечении новое значение (при ШИМ точно показывает напругу при выключенной напгрузке, хотя колебания от 3.5В до 2.7-2.8В, показывает 3.5В реальная 2.7В просадка, при выключенной показания реальной не меняются, просадка = реальной, специально проверял запитав через резюк так что алгоритм работает идеально), если выше сразу и сброс таймера. У меня напруга очень даже пляшет при включении и просаживается но это не привело к ложным срабатываниям, можно увеличить время ожидания при потенциальной просадкой. У меня вольтметр достаточно тяжёлая процедура там куча таймеров для правильной оценки напруги, минимумы и пики, и это по каждому каналу.
Вольтметр в универсальном портативном БП занимает около 20% памяти от 32Кб, в простых решениях лазерах и фонарях около 30-40% от 8Кб памяти.
А по поводу сна тут конечно вопрос спорный. Кратковременное пробуждение требует работы генератора какого? Странно у меня на 8МГц при 5В тянет около 8.5мА, в IDLE аж до 5 снижается
Вот про то я и говорю что снижение частоты можно было сохранять режим оперативного выхода на рабочий режим гораздо дольше, скажем при потреблении в 0.3мА против 8.5мА во сколько раз он бы продлился!
Активация нужна при нажатии кнопок сидящий на АЦП.
Re: BASCOM AVR в вопросах и ответах
Прошу помощи у уважаемых котов! Возник вопрос по режиму сна PowerSave.
Собрал барометр на Mega8, датчике Bmp180 (GY-68), Lcd Nokia 3310, питание от батареек 3в. В программе используются софтовые часы, соответственно задействован таймер Т2. С периодом 1 с происходит опрос датчика и вывод показаний на экран, на всё это уходит около 50мс и чтобы не расходовать энергию батареек, перевожу мк в режим PowerSave, но после пробуждения (по срабатыванию таймера Т2) перестает работать обмен с датчиком по шине I2C (использую аппаратный интерфейс), соответственно на экране сплошные нули. После некоторых экспериментов обнаружил, обмен с датчиком восстанавливается только при сбросе (Reset или по сторожевому таймеру), а ещё в режиме Power Idle (вместо PowerSave) работает как надо (но и потребление тоже больше)!
Может кто сталкивался с подобной проблемой или направит в нужное русло...
Собрал барометр на Mega8, датчике Bmp180 (GY-68), Lcd Nokia 3310, питание от батареек 3в. В программе используются софтовые часы, соответственно задействован таймер Т2. С периодом 1 с происходит опрос датчика и вывод показаний на экран, на всё это уходит около 50мс и чтобы не расходовать энергию батареек, перевожу мк в режим PowerSave, но после пробуждения (по срабатыванию таймера Т2) перестает работать обмен с датчиком по шине I2C (использую аппаратный интерфейс), соответственно на экране сплошные нули. После некоторых экспериментов обнаружил, обмен с датчиком восстанавливается только при сбросе (Reset или по сторожевому таймеру), а ещё в режиме Power Idle (вместо PowerSave) работает как надо (но и потребление тоже больше)!
Может кто сталкивался с подобной проблемой или направит в нужное русло...
Re: BASCOM AVR в вопросах и ответах
А реконфигурация порта? А смысл а батарейках?
Re: BASCOM AVR в вопросах и ответах
Хотелось чтоб мобильность была и без лишних проводов, а если на аккумуляторах, то к ним ещё зарядка нужна ...
Пробовал повторно настраивать порт ... не помогло, только ресет.
Пробовал повторно настраивать порт ... не помогло, только ресет.
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
понадобился пульт ик стандарт NEC,попробовал написать,выходит лажа,в протеусе все вроде норм-может кто подскажет что не так...приемник принимает команды не правильно
$crystal = 16000000 ' 2000000 ' 4000000 ' 8000000
$framesize = 40
$hwstack = 40
$swstack = 40
'$sim
Config Pind.2 = Input
Config Portd.3 = Output
'Config Portd.2 = Output-здесь фотоприемник
'Portd.2 = 0
Irrec_pwr Alias Portd.3
Config Timer1 = Timer , Prescale = 8
'Config Timer0 = Timer , Prescale = 64
Config Timer2 = Timer , Prescale = 1 , Compare = Toggle , Clear Timer = 1
Compare2 = 210
Config Portb.3 = Output
Enable Timer1
'Enable Int0
Enable Interrupts
'On Timer0 Tikers 'work on timer
On Timer1 Period5625
'On Int0 Infrared 'work on interruption
'Dim Tik As Word 'counter of teaks of timer
Dim Byt As Byte
Dim Flag As Bit 'counter accepted bit
Dim X As Byte
'Dim Start_flag As Bit 'flag of start condition
Dim Address As Byte 'byte of address
Dim Command As Byte 'byte of command
Dim Command_ As Byte 'direct byte of command
Dim Address_ As Byte 'indirect byte of address
''Dim Command_0 As Byte 'indirect byte of command
'Dim Summa As Word
Command = 0
Address = 2
Flag = 0
Byt = 0
Stop Timer1
'Start Timer2
' Wait 2
Do 'Main cycle
Gosub Form
Incr Command
Waitms 500
Loop
End
Form:
'формирование посылки
Command_ = 255 - Command
Address_ = 255 - Address
Gosub Imp_start1
Gosub Imp_start0
Byt = Address
Gosub Peredacha8bit
Byt = Address_
Gosub Peredacha8bit
Byt = Command
Gosub Peredacha8bit
Byt = Command_
Gosub Peredacha8bit
Return
Peredacha8bit:
For X = 0 To 7
If Byt.x = 0 Then
Gosub Imp_1_562usek
Gosub Imp_0_562usek
Else
Gosub Imp_1_562usek
Gosub Imp_0_1687usek
End If
Next X
Return
Imp_start1:
'передаем старт 9 мс
Flag = 0
Timer1 = 47536
'Timer0 = T0 'Delay 10 en
Start Timer1
Start Timer2
While Flag = 0
'Flag = 0
Wend
Stop Timer2
Stop Timer1
Portb.3 = 0
Return
Imp_start0:
'+пауза 4,5 мс
Flag = 0
Timer1 = 56536
Stop Timer2
Start Timer1
While Flag = 0
Wend
Stop Timer1
Return
Imp_1_562usek:
'импульс 562,5 мкс
Flag = 0
Timer1 = 64411
Start Timer1
Start Timer2
While Flag = 0
Wend
Stop Timer2
Stop Timer1
Portb.3 = 0
Return
Imp_0_562usek:
'пауза 562,5 мкс
Flag = 0
Timer1 = 64411
Stop Timer2
Start Timer1
While Flag = 0
Wend
Stop Timer2
Stop Timer1
Portd.3 = 0
Return
Imp_0_1687usek:
'пауза 1687,5 мкс
Flag = 0
Timer1 = 62161
Stop Timer2 'Delay 10 en
Start Timer1
While Flag = 0
'Flag = 0
Wend
Stop Timer1
Portd.3 = 0
Return
Startimpuls:
Period5625:
Portb.3 = 0
Flag = 1
'Incr Byt
'Timer1 = 56536 '31250/(256-253)=10416,66 Hz (96 een)
'Start Timer1
'Start Timer0
Return
Спойлер
$regfile = "m8adef.dat" ' Используемый контроллер$crystal = 16000000 ' 2000000 ' 4000000 ' 8000000
$framesize = 40
$hwstack = 40
$swstack = 40
'$sim
Config Pind.2 = Input
Config Portd.3 = Output
'Config Portd.2 = Output-здесь фотоприемник
'Portd.2 = 0
Irrec_pwr Alias Portd.3
Config Timer1 = Timer , Prescale = 8
'Config Timer0 = Timer , Prescale = 64
Config Timer2 = Timer , Prescale = 1 , Compare = Toggle , Clear Timer = 1
Compare2 = 210
Config Portb.3 = Output
Enable Timer1
'Enable Int0
Enable Interrupts
'On Timer0 Tikers 'work on timer
On Timer1 Period5625
'On Int0 Infrared 'work on interruption
'Dim Tik As Word 'counter of teaks of timer
Dim Byt As Byte
Dim Flag As Bit 'counter accepted bit
Dim X As Byte
'Dim Start_flag As Bit 'flag of start condition
Dim Address As Byte 'byte of address
Dim Command As Byte 'byte of command
Dim Command_ As Byte 'direct byte of command
Dim Address_ As Byte 'indirect byte of address
''Dim Command_0 As Byte 'indirect byte of command
'Dim Summa As Word
Command = 0
Address = 2
Flag = 0
Byt = 0
Stop Timer1
'Start Timer2
' Wait 2
Do 'Main cycle
Gosub Form
Incr Command
Waitms 500
Loop
End
Form:
'формирование посылки
Command_ = 255 - Command
Address_ = 255 - Address
Gosub Imp_start1
Gosub Imp_start0
Byt = Address
Gosub Peredacha8bit
Byt = Address_
Gosub Peredacha8bit
Byt = Command
Gosub Peredacha8bit
Byt = Command_
Gosub Peredacha8bit
Return
Peredacha8bit:
For X = 0 To 7
If Byt.x = 0 Then
Gosub Imp_1_562usek
Gosub Imp_0_562usek
Else
Gosub Imp_1_562usek
Gosub Imp_0_1687usek
End If
Next X
Return
Imp_start1:
'передаем старт 9 мс
Flag = 0
Timer1 = 47536
'Timer0 = T0 'Delay 10 en
Start Timer1
Start Timer2
While Flag = 0
'Flag = 0
Wend
Stop Timer2
Stop Timer1
Portb.3 = 0
Return
Imp_start0:
'+пауза 4,5 мс
Flag = 0
Timer1 = 56536
Stop Timer2
Start Timer1
While Flag = 0
Wend
Stop Timer1
Return
Imp_1_562usek:
'импульс 562,5 мкс
Flag = 0
Timer1 = 64411
Start Timer1
Start Timer2
While Flag = 0
Wend
Stop Timer2
Stop Timer1
Portb.3 = 0
Return
Imp_0_562usek:
'пауза 562,5 мкс
Flag = 0
Timer1 = 64411
Stop Timer2
Start Timer1
While Flag = 0
Wend
Stop Timer2
Stop Timer1
Portd.3 = 0
Return
Imp_0_1687usek:
'пауза 1687,5 мкс
Flag = 0
Timer1 = 62161
Stop Timer2 'Delay 10 en
Start Timer1
While Flag = 0
'Flag = 0
Wend
Stop Timer1
Portd.3 = 0
Return
Startimpuls:
Period5625:
Portb.3 = 0
Flag = 1
'Incr Byt
'Timer1 = 56536 '31250/(256-253)=10416,66 Hz (96 een)
'Start Timer1
'Start Timer0
Return
- Вложения
-
- nec.zip
- (42.06 КБ) 153 скачивания
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Re: BASCOM AVR в вопросах и ответах
А мне никто не поможет
Написал прошивку на барсике и собрал схему выключения нагрузки (9вольт) на тиньке13.
Все просто: делитель напряжения и АЦП. Значение ADC(0) выводится в UART для настройки. Подключил светодиод и все работает просто замечательно. Нагрузка выключается на 9вольтах и ниже.
И тут столкнулся с проблемой, подключив лампу накаливания (21Вт). Падение напряжения и, как следствие, пляски значения ADC(0) приводят к выключению нагрузки не на том пороге, т.е выключается уже на 11вольтах.
Подскажите, как убрать эту зависимость от нагрузки программно или может что-то в схему добавить.
Написал прошивку на барсике и собрал схему выключения нагрузки (9вольт) на тиньке13.
Все просто: делитель напряжения и АЦП. Значение ADC(0) выводится в UART для настройки. Подключил светодиод и все работает просто замечательно. Нагрузка выключается на 9вольтах и ниже.
И тут столкнулся с проблемой, подключив лампу накаливания (21Вт). Падение напряжения и, как следствие, пляски значения ADC(0) приводят к выключению нагрузки не на том пороге, т.е выключается уже на 11вольтах.
Подскажите, как убрать эту зависимость от нагрузки программно или может что-то в схему добавить.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
KOTик, а ИОН у АЦП кто?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
вопрос исчерпан-я не правильно отправлял биты-задом наперед

и в конце передачи импульс добавить 562,5 мксек
и в конце передачи импульс добавить 562,5 мксек


