Обсуждаем контроллеры компании 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.
Ответить