Страница 293 из 304

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

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

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

Добавлено: Сб янв 18, 2020 00:01:04
ВасилийВикторович
Ребята, подскажите дураку, вот стандартный пример из хелпа баскома:

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

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
Подскажите, что и как изменить чтобы принять два байта?

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

Добавлено: Вс янв 19, 2020 13:08:32
ВасилийВикторович
что то я не могу понять этого самостоятельно...

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

Добавлено: Вс янв 19, 2020 19:01:33
kip96
В этом примере баскома минимум. И вообще, в этом куске столько же spislave, сколько и в любой другой программе
Вероятно это подпрограмма по прерыванию, где сохраняют регистры, и потом восстанавливают, а между этим приравнивают переменные, и устанавливают бит, или вывод.

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

Добавлено: Пн янв 20, 2020 12:55:43
ВасилийВикторович
[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 то глючит не по детски.

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

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

Прерывание вызывается когда SPI принял байт. Один байт. Второй будет в следующем прерывании

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

Добавлено: Пн янв 20, 2020 13:42:12
ВасилийВикторович
то есть в прерывании принимаю байт, устанавливаю бит что принят первый байт и если произошло второе прерывание и бит = 1 то записываю уже в другую переменную и сбрасываю бит, так?

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

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

Ну это уже как вы придумаете протокол. "Принять два байта" это не два пальца. Какой из них первый, если передача идет постоянно?. IMHO конечно, но в любой многобайтной посылке должен присутствовать маркер начала кадра и контр. сумма в конце. Принимать в промежуточный буфер, если контрсумма в порядке - выдавать данные в обработку.

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

Добавлено: Вт фев 25, 2020 20:41:19
OLEGKARAS
Доброго времени.
Народ помогите решить проблему . Нужен УАРТ для приема строки по количеству символов , и если по какой то причине передача в друг прекращается то мк не висел ( по тому что ждет все символы), если у кого есть пример то выручите пожалуйста меня а то уже не знаю куда обратится.

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

Добавлено: Вт фев 25, 2020 21:10:33
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

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

Добавлено: Вт фев 25, 2020 21:23:56
Jack_A
передача в друг прекращается то мк не висел
Просто. При начале приёма запускается тайиер. Каждый поступивший байт обнуляет таймер. Если он досчитал до заданного значения - аварийно завершаем приём, пытаемся восстановить, если это возможно, принятую строку, и устанавливаем состояние ГОТОВНОСТЬ К ПРИЁМУ. Как на Баскоме - не знаю, не пользуюсь. А нормально, на асме - как два байта...

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

Добавлено: Ср фев 26, 2020 05:10:36
Тихий демон
[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

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

Добавлено: Ср фев 26, 2020 21:12:52
Hot
спасибо большое , в симуляторе работает, пойду с железом сражатся

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

Добавлено: Чт фев 27, 2020 21:51:11
OLEGKARAS
Помогите пожалуйста. Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E вырезать скажем 0898 и перевести в число должно получится 2200 . Нужно сделать без Overlay.

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

Добавлено: Сб фев 29, 2020 11:30:11
PiKey
[uquote="OLEGKARAS",url="/forum/viewtopic.php?p=3798087#p3798087"]Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E[/uquote]

В представленном виде оно, по идее, не as Byte, а as String. Для строк копайте в сторону Split, Instr и Hexval.

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

Добавлено: Чт мар 05, 2020 11:45:38
Denis40
Друзья ,помогите пожалуйста или подскажите как изменить этот код,в программировании не силен ,есть только азы и то со школы ).
Все работает,но хотелось бы еще и переключать диапазоны .

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

Добавлено: Пт мар 06, 2020 12:41:43
Denis40
Всем спасибо,смог и сам)

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

Добавлено: Вт мар 17, 2020 14:38:06
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

Взято из учебников.

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

Добавлено: Вт мар 17, 2020 15:04:30
vem566
Включить подсветку. Установкой контрастности получить еле видные квадраты. В программе все верно, если не перепутаны пины.

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

Добавлено: Вт мар 17, 2020 15:15:31
kip96
Ещё пин RW на землю паосадить