Обсуждаем контроллеры компании Atmel.
Чт янв 16, 2020 19:52:06
goldskif писал(а):Вставляю Attiny2313A в USBASP, жму F4 - идентификация. Он ругается, что найденная 2313 не соответствует указанной 2313A
МК куплены в Китае?
Может перемаркировка?
разные. Купленные в разных магазинах в разное время. В чипдипе тоже..
Сб янв 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
Подскажите, что и как изменить чтобы принять два байта?
Вс янв 19, 2020 13:08:32
что то я не могу понять этого самостоятельно...
Вс янв 19, 2020 19:01:33
В этом примере баскома минимум. И вообще, в этом куске столько же spislave, сколько и в любой другой программе
Вероятно это подпрограмма по прерыванию, где сохраняют регистры, и потом восстанавливают, а между этим приравнивают переменные, и устанавливают бит, или вывод.
Пн янв 20, 2020 12:55:43
В этом примере баскома минимум.
С сохранением и восстановлением регистров это понятно, тут вопросов нет.
мне одно не понятно, вот например в прерывании принимается байт из spi
- Код:
B = Spdr
Вопрос как принять два байта именно в прерывании.
Пробовал так но не прокатывает, и в b(1) и в b(2) одинаковые данные из того байта что был отправлен первым.
- Код:
B(1) = Spdr
B(2) = Spdr
Если без прерывания просто командой
- Код:
Spiin b(1) , 2
То всё ок, но если эту команду использовать в прерывании от spi то глючит не по детски.
Пн янв 20, 2020 13:09:59
Вопрос как принять два байта именно в прерывании.
Прерывание вызывается когда SPI принял байт.
Один байт. Второй будет в
следующем прерывании
Пн янв 20, 2020 13:42:12
то есть в прерывании принимаю байт, устанавливаю бит что принят первый байт и если произошло второе прерывание и бит = 1 то записываю уже в другую переменную и сбрасываю бит, так?
Вт янв 28, 2020 16:47:43
в прерывании принимаю байт, устанавливаю бит что принят первый байт
Ну это уже как вы придумаете протокол. "Принять два байта" это не два пальца. Какой из них первый, если передача идет постоянно?. IMHO конечно, но в любой многобайтной посылке должен присутствовать маркер начала кадра и контр. сумма в конце. Принимать в промежуточный буфер, если контрсумма в порядке - выдавать данные в обработку.
Вт фев 25, 2020 20:41:19
Доброго времени.
Народ помогите решить проблему . Нужен УАРТ для приема строки по количеству символов , и если по какой то причине передача в друг прекращается то мк не висел ( по тому что ждет все символы), если у кого есть пример то выручите пожалуйста меня а то уже не знаю куда обратится.
Вт фев 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
Вт фев 25, 2020 21:23:56
передача в друг прекращается то мк не висел
Просто. При начале приёма запускается тайиер. Каждый поступивший байт обнуляет таймер. Если он досчитал до заданного значения - аварийно завершаем приём, пытаемся восстановить, если это возможно, принятую строку, и устанавливаем состояние ГОТОВНОСТЬ К ПРИЁМУ. Как на Баскоме - не знаю, не пользуюсь. А нормально, на асме - как два байта...
Ср фев 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
Ср фев 26, 2020 21:12:52
спасибо большое , в симуляторе работает, пойду с железом сражатся
Чт фев 27, 2020 21:51:11
Помогите пожалуйста. Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E вырезать скажем 0898 и перевести в число должно получится 2200 . Нужно сделать без Overlay.
Сб фев 29, 2020 11:30:11
Нужно из строки (Dim Pzem(25) As Byte) = F8041408988BF800017A7D0003073D000001F4005F0000930E
В представленном виде оно, по идее, не as Byte, а as String. Для строк копайте в сторону Split, Instr и Hexval.
Чт мар 05, 2020 11:45:38
Друзья ,помогите пожалуйста или подскажите как изменить этот код,в программировании не силен ,есть только азы и то со школы ).
Все работает,но хотелось бы еще и переключать диапазоны .
- Вложения
-
- sintez 1klg.txt
- (6.14 KiB) Скачиваний: 201
-
- 1.jpg
- (244.14 KiB) Скачиваний: 260
Пт мар 06, 2020 12:41:43
Всем спасибо,смог и сам)
Вт мар 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
Вт мар 17, 2020 15:04:30
Включить подсветку. Установкой контрастности получить еле видные квадраты. В программе все верно, если не перепутаны пины.
Вт мар 17, 2020 15:15:31
Ещё пин RW на землю паосадить
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.