Во, спасибо как раз про VBR я не знал.HardWareMan wrote:Для VBR сложнее, поэтому некоторые плеера врут. однако ID3v2 нам помогает - она создает первый фрейм МПЕГ но с фиктивными данными (точнее там стриминговый EXIF), в которам указан средний битрейт, который и соответствует размер трека поделенный на время.
AVR+VS1002=mp3
Moderator: Shaos
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
Всё что ты видишь - лживый облик.
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
не получилось - там надо очень сильно мудрить чтобы просто передать байт без лишней служебной информации. Значит пусть висит на SPI.FreemaN wrote:пришла в голову мысль индикатор повесить на TWI шину - для упрощения разводки платы
вчера:
приделал клавиатурку (7 клавиш + переключатель блокировано/разблокировано)
сделал обновление дисплея через прерывание - пока четыре раза в секунду. + то же прерывание обслуживает клавиатуру.
Всё что ты видишь - лживый облик.
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
-
- Admin
- Posts: 24078
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Может ты флаг сброса прерыаания не очищаешь?FreemaN wrote:Сейчас борюсь с прерываниями, развожу пробную плату, пишу менюшку...
Какие-то странности творятся если вызывать прерывание INT0 - складывается ощущение что вызывается оно (прерывание) не один раз подряд, а оочень очень много раз
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
А разве оно не очищается автоматически после вызова обработчика?Shaos wrote:Может ты флаг сброса прерыаания не очищаешь?FreemaN wrote:Сейчас борюсь с прерываниями, развожу пробную плату, пишу менюшку...
Какие-то странности творятся если вызывать прерывание INT0 - складывается ощущение что вызывается оно (прерывание) не один раз подряд, а оочень очень много раз
Хм... надо будет попробовать
Всё что ты видишь - лживый облик.
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
Написано в любом датащите на Мегу:Shaos wrote:Может ты флаг сброса прерыаания не очищаешь?
Так что, либо дребезг (если это клава), либо сбрасывать флаг надо в подключенном устройстве, что его вызывает.• Bits 7..0 – INTF7 - INTF0: External Interrupt Flags 7 - 0
When an edge or logic change on the INT7:0 pin triggers an interrupt request, INTF7:0 becomes set (one). If the I-bit in SREG and the corresponding interrupt enable bit, INT7:0 in EIMSK, are set (one), the MCU will jump to the interrupt vector. The flag is cleared when the interrupt routine is executed. Alternatively, the flag can be cleared by writing a logical one to it. These flags are always cleared when INT7:0 are configured as level interrupt. Note that when entering sleep mode with the INT3:0 interrupts disabled, the input buffers on these pins will be disabled. This may cause a logic change in internal signals which will set the INTF3:0 flags. See “Digital Input Enable and Sleep Modes” on page 70 for more information.
Так же напомню грабли, на которые из-за невнимательности чтения датащита наступил сам:
Т.е., говоря языком i8080: не забывайте делать PUSH PSW/POP PSW.Note that the Status Register is not automatically stored when entering an interrupt routine, nor
restored when returning from an interrupt routine. This must be handled by software.
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
Сделал обработку нажатия на клавиши:
при нажатии возникает прерывание, в котором просто проверяется регистр PINA. затем результат записывается в переменную.
Дребезг контактов тоже имел место, я решил проблему так:
при вызове прерывания оно запрещается, а разрешается через некоторое время при помощи таймера (прерывание для вывода на дисплей). таким образом очень быстрые повторные нажатия не обрабатываются
з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");
при нажатии возникает прерывание, в котором просто проверяется регистр PINA. затем результат записывается в переменную.
Дребезг контактов тоже имел место, я решил проблему так:
при вызове прерывания оно запрещается, а разрешается через некоторое время при помощи таймера (прерывание для вывода на дисплей). таким образом очень быстрые повторные нажатия не обрабатываются

з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");
Всё что ты видишь - лживый облик.
-
- Banned
- Posts: 2139
- Joined: 20 Mar 2005 13:41
- Location: От туда
ГАГА. Это ж не регистр, чтобы его пушать/попать. Это ПОРТ ВВ. Ну вот так организовано ядро AVR. Работает тока так:FreemaN wrote:з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");
Code: Select all
push r16
in r16,SREG
push r16
Code: Select all
pop r16
out SREG,r16
pop r16
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск
нашёл в листинге:HardWareMan wrote:ГАГА. Это ж не регистр, чтобы его пушать/попать. Это ПОРТ ВВ. Ну вот так организовано ядро AVR. Работает тока так:FreemaN wrote:з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");Сборка в обратном порядке:Code: Select all
push r16 in r16,SREG push r16
Code: Select all
pop r16 out SREG,r16 pop r16
Code: Select all
4627 /* prologue: frame size=0 */
4628 ???? 1F92 push __zero_reg__
4629 ???? 0F92 push __tmp_reg__
4630 ???? 0FB6 in __tmp_reg__,__SREG__
4631 ???? 0F92 push __tmp_reg__
4632 ???? 1124 clr __zero_reg__
4633 ???? 2F93 push r18
4634 ???? 3F93 push r19
4635 ???? 4F93 push r20
4636 ???? 5F93 push r21
4637 ???? 6F93 push r22
4638 ???? 7F93 push r23
4639 ???? 8F93 push r24
4640 ???? 9F93 push r25
4641 ???? AF93 push r26
4642 ???? BF93 push r27
4643 ???? EF93 push r30
4644 ???? FF93 push r31
4645 /* prologue end (size=17) */
а это после:
Code: Select all
4682 ???? FF91 pop r31
4683 ???? EF91 pop r30
4684 ???? BF91 pop r27
4685 ???? AF91 pop r26
4686 ???? 9F91 pop r25
4687 ???? 8F91 pop r24
4688 ???? 7F91 pop r23
4689 ???? 6F91 pop r22
4690 ???? 5F91 pop r21
4691 ???? 4F91 pop r20
4692 ???? 3F91 pop r19
4693 ???? 2F91 pop r18
4694 ???? 0F90 pop __tmp_reg__
4695 ???? 0FBE out __SREG__,__tmp_reg__
4696 ???? 0F90 pop __tmp_reg__
4697 ???? 1F90 pop __zero_reg__
4698 ???? 1895 reti
4699 /* epilogue end (size=17) */

Всё что ты видишь - лживый облик.
-
- Senior
- Posts: 124
- Joined: 09 Jan 2009 20:30
- Location: Мурманск