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

Обсуждаем контроллеры компании Atmel.
goldskif
Открыл глаза
Сообщения: 68
Зарегистрирован: Пт окт 25, 2013 17:13:03

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

Сообщение goldskif »

[uquote="Мурик",url="/forum/viewtopic.php?p=3774851#p3774851"]
goldskif писал(а):Вставляю Attiny2313A в USBASP, жму F4 - идентификация. Он ругается, что найденная 2313 не соответствует указанной 2313A
МК куплены в Китае?
Может перемаркировка?[/uquote]
разные. Купленные в разных магазинах в разное время. В чипдипе тоже..
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

Ребята, подскажите дураку, вот стандартный пример из хелпа баскома:

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

Spi_isr:

push r24   ; save used register

in r24,sreg ; save sreg

push r24

 B = Spdr

Set Rbit                                                 ' we received something

pop r24

!out sreg,r24 ; restore sreg

pop r24       ; and the used register

Return 


spislave
Подскажите, что и как изменить чтобы принять два байта?
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

что то я не могу понять этого самостоятельно...
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

В этом примере баскома минимум. И вообще, в этом куске столько же spislave, сколько и в любой другой программе
Вероятно это подпрограмма по прерыванию, где сохраняют регистры, и потом восстанавливают, а между этим приравнивают переменные, и устанавливают бит, или вывод.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

[uquote="kip96",url="/forum/viewtopic.php?p=3776773#p3776773"]В этом примере баскома минимум.[/uquote]

С сохранением и восстановлением регистров это понятно, тут вопросов нет.
мне одно не понятно, вот например в прерывании принимается байт из spi

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

B = Spdr


Вопрос как принять два байта именно в прерывании.
Пробовал так но не прокатывает, и в b(1) и в b(2) одинаковые данные из того байта что был отправлен первым.

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

B(1) = Spdr
B(2) = Spdr


Если без прерывания просто командой

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

 Spiin b(1) , 2

То всё ок, но если эту команду использовать в прерывании от spi то глючит не по детски.
Аватара пользователя
nikolaew
Родился
Сообщения: 6
Зарегистрирован: Пн май 13, 2019 10:18:22

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

Сообщение nikolaew »

[uquote="ВасилийВикторович",url="/forum/viewtopic.php?p=3777144#p3777144"]Вопрос как принять два байта именно в прерывании.[/uquote]

Прерывание вызывается когда SPI принял байт. Один байт. Второй будет в следующем прерывании
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

то есть в прерывании принимаю байт, устанавливаю бит что принят первый байт и если произошло второе прерывание и бит = 1 то записываю уже в другую переменную и сбрасываю бит, так?
Аватара пользователя
nikolaew
Родился
Сообщения: 6
Зарегистрирован: Пн май 13, 2019 10:18:22

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

Сообщение nikolaew »

[uquote="ВасилийВикторович",url="/forum/viewtopic.php?p=3777157#p3777157"]в прерывании принимаю байт, устанавливаю бит что принят первый байт[/uquote]

Ну это уже как вы придумаете протокол. "Принять два байта" это не два пальца. Какой из них первый, если передача идет постоянно?. IMHO конечно, но в любой многобайтной посылке должен присутствовать маркер начала кадра и контр. сумма в конце. Принимать в промежуточный буфер, если контрсумма в порядке - выдавать данные в обработку.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

Доброго времени.
Народ помогите решить проблему . Нужен УАРТ для приема строки по количеству символов , и если по какой то причине передача в друг прекращается то мк не висел ( по тому что ждет все символы), если у кого есть пример то выручите пожалуйста меня а то уже не знаю куда обратится.
Hot
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн май 25, 2015 21:29:15
Откуда: Владимир

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

Сообщение Hot »

Народ подскажите что делаю не так?
Надо по кнопке INT0 просыпаться из Powersave помигать диодом и уснуть до сл.нажатия.
после 2 нажатий все зависает

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

$regfile = "m48def.dat"
$crystal = 1000000
$framesize = 32
$hwstack = 40
$swstack = 16

Dim B As Byte

Config Portd = Output

Config Portc = Output

 Config Portd.2 = Input

 Config Int0 = Low Level

 Enable Interrupts

 Enable Int0

 On Int0 Button:

 Button:

For B = 0 To 3

Portd.0 = 1

Waitms 200

Portd.0 = 0

Waitms 200

 Next B


Powersave

Return

 '
 End
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

передача в друг прекращается то мк не висел

Просто. При начале приёма запускается тайиер. Каждый поступивший байт обнуляет таймер. Если он досчитал до заданного значения - аварийно завершаем приём, пытаемся восстановить, если это возможно, принятую строку, и устанавливаем состояние ГОТОВНОСТЬ К ПРИЁМУ. Как на Баскоме - не знаю, не пользуюсь. А нормально, на асме - как два байта...
Изображение
Тихий демон
Родился
Сообщения: 17
Зарегистрирован: Ср ноя 04, 2009 12:49:25
Откуда: Урал

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

Сообщение Тихий демон »

[uquote="Hot",url="/forum/viewtopic.php?p=3796947#p3796947"]Народ подскажите что делаю не так?[/uquote]

Вынесите весь код из прерывания в главный цикл, а от прерывания достаточно просто события.

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

Enable Interrupts
Enable Int0
On Int0 Button:

do                     'главный цикл
  For B = 0 To 3
    Portd.0 = 1
    Waitms 200
    Portd.0 = 0
    Waitms 200
 Next B
 Powersave
loop


End



Button:

Return
Hot
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Пн май 25, 2015 21:29:15
Откуда: Владимир

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

Сообщение Hot »

спасибо большое , в симуляторе работает, пойду с железом сражатся
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

Помогите пожалуйста. Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E вырезать скажем 0898 и перевести в число должно получится 2200 . Нужно сделать без Overlay.
PiKey
Родился
Сообщения: 2
Зарегистрирован: Пт июл 05, 2019 23:25:44
Откуда: СПб

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

Сообщение PiKey »

[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3798087#p3798087"]Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E[/uquote]

В представленном виде оно, по идее, не as Byte, а as String. Для строк копайте в сторону Split, Instr и Hexval.
Denis40
Родился
Сообщения: 2
Зарегистрирован: Чт мар 05, 2020 11:27:08

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

Сообщение Denis40 »

Друзья ,помогите пожалуйста или подскажите как изменить этот код,в программировании не силен ,есть только азы и то со школы ).
Все работает,но хотелось бы еще и переключать диапазоны .
Вложения
sintez 1klg.txt
(6.14 КБ) 233 скачивания
1.jpg
(244.14 КБ) 292 скачивания
Denis40
Родился
Сообщения: 2
Зарегистрирован: Чт мар 05, 2020 11:27:08

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

Сообщение Denis40 »

Всем спасибо,смог и сам)
rojnov
Встал на лапы
Сообщения: 127
Зарегистрирован: Вс мар 27, 2011 07:48:48
Откуда: г. Екатеринбург

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

Сообщение rojnov »

Приветствую всех!
Такая задача. Понадобилось мне для одного проекта задействовать LCD дисплей 16*2. Было у меня пара штук абсолютно новых. Сделал код, запускаю, вроде основа работает, но на экране- пустота. Для проверки набил классический кусок кода "Hello world" - на экране пустота. Облазил все доступные источники информации - вроде все делаю правильно. Но почему оно не хочет работать? Я первый раз сталкиваюсь с ЖК индикатором, может быть что-то делаю неправильно. Гляньте, кто в этом силен, а то застрял на ерунде.

$regfile = "2313def.dat"
$crystal = 4000000

Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
Config Lcd = 16x2
Initlcd

Cls

Locate 1 , 1
Lcd "Hello"
Lowerline
Lcd "world"
Wait 10
Cls

End

Взято из учебников.
Вложения
LCD-2.jpg
(125.59 КБ) 230 скачиваний
LCD-1.jpg
(135.54 КБ) 240 скачиваний
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Включить подсветку. Установкой контрастности получить еле видные квадраты. В программе все верно, если не перепутаны пины.
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Ещё пин RW на землю паосадить
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Ответить

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