Прямой эфир

0
Чет регистры какие-то странные. У ARM таких нету.
Upd.: пролистал, это для каких-то допотопных микроконтроллеров, типа AVR
  • avatar
  • igorp
  • 01 августа 2018, 17:37
+1
Добавил пример с кнопочками
0
Но по моему опыту опенсорс программы обычно криво-косые
У вас очень странный опыт (или, скорее, его интрепретация). Криво-косые, как раз, чаще всего коммерческие программы и чем дороже, тем, как правило, хуже. Опенсорс просто в силу своей организации либо приводит софт в порядок, либо софт просто умирает естественной смертью. Колоться, плакать, но продолжать жрать кактус это удел фанатов коммерческого софта.
и не хотят полностью имитировать функции стандартных программ, аналогами которых являются
Во-первых, никаких таких «стандартных программ» не существует. Во-вторых, с чего вдруг опенсорсные программы должны что-либо имитировать? Это самостоятельные программы и их авторы решают что и как будет выглядеть и работать. В-третих, «являться аналогом» не значит максимально близко копировать что-либо, достаточно решать подобные («аналогичные») задачи.
  • avatar
  • evsi
  • 01 августа 2018, 14:56
0
Ну вот судя по описанию из поста, тут все же сильно упростили по сравнению с классическим авр.
  • avatar
  • DIHALT
  • 01 августа 2018, 10:56
0
Не читал, но плюсую.
0
Это несколько ограничивает возможности интерфейса с другой стороны. Например, можно было задействовать TWI как еще один UART. Я делал устройство, в котором было несколько «бродкастовых» адресов на шине, и ACK отдавал только один slave а остальные «молча» принимали данные. Это, конечно, нестандартный хак, но такая возможность была. Палка, как говорится, имеет 2 конца…
0
  • avatar
  • Katz
  • 01 августа 2018, 07:41
0
Скорее наоборот. I2C — филипсовское изобретение тех времён, когда об Атмеле ещё ничего не слышали. :)
Приведенный код сочинил я, при копировании сюда прозевал одну строчку — д.б.:
mov a, I2STAT
    anl a, #0F8h; reset 3 LSB 
  • avatar
  • Katz
  • 01 августа 2018, 07:34
0
; Load event code
lds	R16,_SFR_MEM_ADDR(TWSR)
andi	R16,TW_MASK
lsr	R16
lsr	R16
lsr	R16

; Jump to handler
ldi	ZL,lo8(pm(twi_jump))
ldi	ZH,hi8(pm(twi_jump))
add	ZL,R16
adc	ZH,R17 ; =0
ijmp

twi_jump:
	rjmp	twi_error		; 0x00 TW_BUS_ERROR

	rjmp	twi_start_done		; 0x08 TW_START
	rjmp	twi_start_done		; 0x10 TW_REP_START
	rjmp	twi_xmit_byte		; 0x18 TW_MT_SLA_ACK
	rjmp	twi_no_reply		; 0x20 TW_MT_SLA_NACK
...
0
Поди из AVR и скопировали. Тоже самое ведь, даже коды совпадают.
0
  • avatar
  • DVF
  • 01 августа 2018, 00:56
0
Ну звеняйте, на каждый чих состояний шины ни один производитель не стал заморачиваться регистрами флагов прерываний и векторами переходов. Т.ч или флаг или состояние шины, что в принципе одно и тоже, не выигрывается ничего.
  • avatar
  • ILYAUL
  • 31 июля 2018, 23:23
0
У NXP I2C красиво сделан (авторы как-никак :) ). Во всяком случае в 8-битниках. Вход в прерывание получился как-то так:
i2c_irq:
    push    acc
    push    b
    push    dph
    push    dpl
    push    PSW
    mov     PSW,#008H; switch register bank
    mov a, I2STAT
    rr a
    rr a
    mov dptr, #I2Cvectortable
    jmp @a+dptr

Ну и далее ajmp на процедуры, соответствующие кодам состояния.
I2Cvectortable:	
		;00h->00h
		ajmp i2c_error
		;08h->02h - start
		ajmp i2c_putaddress
		;10h->04h - repeated start
		ajmp i2c_putaddress
                ;18h->06h - address+W sent, ACK received
		ajmp i2c_putdata
		;20h->08h - address+W sent, NAK received
                ajmp i2c_error
                ;..........................
  • avatar
  • Katz
  • 31 июля 2018, 22:41
0
+1
  • avatar
  • foxit
  • 31 июля 2018, 22:34
0
Конечно интересно! Особенно про TWI.
0
Ну я вот в публичных проектах, сколько не смотрел, ни разу не видел полноценную реализацию. Везде тупое ожидание флага в цикле.
  • avatar
  • DIHALT
  • 31 июля 2018, 13:05
0
ОБС, однако, сообщает, а также британские ученые.
LOL
Так что в теме «быдло с улицы» стремительно осваивает ракетные технологии" Илон Макс ВНЕЗАПНО оказался на 2-м месте.
ROTFL. У Маска ракеты летают и уже выводят полезный груз на орбиту, а то, чем вы пугаете еще в разработке. Может полетит, а может и нет. А если полетит, то еще не факт, что ему будет что нести, учитывая, что корейцы умудрились завалить свой подземный полигон (а вот как раз после этого жирный заговорил о диалоге).
  • avatar
  • evsi
  • 31 июля 2018, 12:17
0
А по моему всё очень даже просто. И описание в даташите — сказка. Вот в стм32 я два дня плевался и матерился… «чтобы сбросить этот флажок прочитайте SR1 потом SR2, чтобы сбросить тот — прочитайте SR1 и запишите CR1» — что за индус мог до такого бреда додуматься?..
0
Спасибо за статью.
0
+1