Обсуждаем контроллеры компании Atmel.
Ответить

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

Чт янв 16, 2020 19:52:06

goldskif писал(а):Вставляю Attiny2313A в USBASP, жму F4 - идентификация. Он ругается, что найденная 2313 не соответствует указанной 2313A
МК куплены в Китае?
Может перемаркировка?

разные. Купленные в разных магазинах в разное время. В чипдипе тоже..

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

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

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

Пн янв 20, 2020 12:55:43

В этом примере баскома минимум.


С сохранением и восстановлением регистров это понятно, тут вопросов нет.
мне одно не понятно, вот например в прерывании принимается байт из 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

Вопрос как принять два байта именно в прерывании.


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

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

Пн янв 20, 2020 13:42:12

то есть в прерывании принимаю байт, устанавливаю бит что принят первый байт и если произошло второе прерывание и бит = 1 то записываю уже в другую переменную и сбрасываю бит, так?

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

Вт янв 28, 2020 16:47:43

в прерывании принимаю байт, устанавливаю бит что принят первый байт


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

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

Вт фев 25, 2020 20:41:19

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

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

Вт фев 25, 2020 21:10:33

Народ подскажите что делаю не так?
Надо по кнопке 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

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

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

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

Ср фев 26, 2020 05:10:36

Народ подскажите что делаю не так?


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

Код:
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

спасибо большое , в симуляторе работает, пойду с железом сражатся

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

Чт фев 27, 2020 21:51:11

Помогите пожалуйста. Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E вырезать скажем 0898 и перевести в число должно получится 2200 . Нужно сделать без Overlay.

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

Сб фев 29, 2020 11:30:11

Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E


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

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

Чт мар 05, 2020 11:45:38

Друзья ,помогите пожалуйста или подскажите как изменить этот код,в программировании не силен ,есть только азы и то со школы ).
Все работает,но хотелось бы еще и переключать диапазоны .
Вложения
sintez 1klg.txt
(6.14 KiB) Скачиваний: 201
1.jpg
(244.14 KiB) Скачиваний: 260

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

Пт мар 06, 2020 12:41:43

Всем спасибо,смог и сам)

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

Вт мар 17, 2020 14:38:06

Приветствую всех!
Такая задача. Понадобилось мне для одного проекта задействовать 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 KiB) Скачиваний: 199
LCD-1.jpg
(135.54 KiB) Скачиваний: 205

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

Вт мар 17, 2020 15:04:30

Включить подсветку. Установкой контрастности получить еле видные квадраты. В программе все верно, если не перепутаны пины.

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

Вт мар 17, 2020 15:15:31

Ещё пин RW на землю паосадить
Ответить