nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Apr 2024 00:42



Reply to topic  [ 80 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
AVR+VS1002=mp3 
Author Message
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
HardWareMan wrote:
Для VBR сложнее, поэтому некоторые плеера врут. однако ID3v2 нам помогает - она создает первый фрейм МПЕГ но с фиктивными данными (точнее там стриминговый EXIF), в которам указан средний битрейт, который и соответствует размер трека поделенный на время.

Во, спасибо как раз про VBR я не знал.

_________________
Всё что ты видишь - лживый облик.


20 Feb 2009 12:29
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
пришла в голову мысль индикатор повесить на TWI шину - для упрощения разводки платы :roll:
Пока не работает :oops:

_________________
Всё что ты видишь - лживый облик.


21 Feb 2009 15:23
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
FreemaN wrote:
пришла в голову мысль индикатор повесить на TWI шину - для упрощения разводки платы

не получилось - там надо очень сильно мудрить чтобы просто передать байт без лишней служебной информации. Значит пусть висит на SPI.

вчера:
приделал клавиатурку (7 клавиш + переключатель блокировано/разблокировано)
сделал обновление дисплея через прерывание - пока четыре раза в секунду. + то же прерывание обслуживает клавиатуру.

_________________
Всё что ты видишь - лживый облик.


23 Feb 2009 10:25
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
Оптимизировал функцию записи в видеопамять
Сделал простейшее меню (пока только главное), осталось подправить обработку нажатий клавиш.

_________________
Всё что ты видишь - лживый облик.


24 Feb 2009 15:14
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
Сейчас борюсь с прерываниями, развожу пробную плату, пишу менюшку...
Какие-то странности творятся если вызывать прерывание INT0 - складывается ощущение что вызывается оно (прерывание) не один раз подряд, а оочень очень много раз :(

_________________
Всё что ты видишь - лживый облик.


03 Mar 2009 15:18
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Post 
FreemaN wrote:
Сейчас борюсь с прерываниями, развожу пробную плату, пишу менюшку...
Какие-то странности творятся если вызывать прерывание INT0 - складывается ощущение что вызывается оно (прерывание) не один раз подряд, а оочень очень много раз :(


Это случаем не дребезг клавиатуры?

_________________
Extreme Entertainment


04 Mar 2009 12:08
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22541
Location: Silicon Valley
Reply with quote
Post 
FreemaN wrote:
Сейчас борюсь с прерываниями, развожу пробную плату, пишу менюшку...
Какие-то странности творятся если вызывать прерывание INT0 - складывается ощущение что вызывается оно (прерывание) не один раз подряд, а оочень очень много раз :(


Может ты флаг сброса прерыаания не очищаешь?

_________________
:dj: https://mastodon.social/@Shaos


04 Mar 2009 14:53
Profile WWW
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
Shaos wrote:
FreemaN wrote:
Сейчас борюсь с прерываниями, развожу пробную плату, пишу менюшку...
Какие-то странности творятся если вызывать прерывание INT0 - складывается ощущение что вызывается оно (прерывание) не один раз подряд, а оочень очень много раз :(


Может ты флаг сброса прерыаания не очищаешь?

А разве оно не очищается автоматически после вызова обработчика?
Хм... надо будет попробовать

_________________
Всё что ты видишь - лживый облик.


04 Mar 2009 15:36
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Shaos wrote:
Может ты флаг сброса прерыаания не очищаешь?

Написано в любом датащите на Мегу:
Quote:
• 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.

Так что, либо дребезг (если это клава), либо сбрасывать флаг надо в подключенном устройстве, что его вызывает.
Так же напомню грабли, на которые из-за невнимательности чтения датащита наступил сам:
Quote:
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.

Т.е., говоря языком i8080: не забывайте делать PUSH PSW/POP PSW.


04 Mar 2009 20:45
Profile
Fanat

Joined: 11 Mar 2007 03:57
Posts: 64
Location: 217.9.147.66
Reply with quote
Post 
http://craz.clubefir.net/files/mp3vkarmane.zip

Может пригодится...


04 Mar 2009 22:46
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
Сделал обработку нажатия на клавиши:
при нажатии возникает прерывание, в котором просто проверяется регистр PINA. затем результат записывается в переменную.
Дребезг контактов тоже имел место, я решил проблему так:
при вызове прерывания оно запрещается, а разрешается через некоторое время при помощи таймера (прерывание для вывода на дисплей). таким образом очень быстрые повторные нажатия не обрабатываются 8)
з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");

_________________
Всё что ты видишь - лживый облик.


11 Mar 2009 16:01
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
FreemaN wrote:
з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");

ГАГА. Это ж не регистр, чтобы его пушать/попать. Это ПОРТ ВВ. Ну вот так организовано ядро AVR. Работает тока так:
Code:
push r16
in   r16,SREG
push r16

Сборка в обратном порядке:
Code:
pop r16
out SREG,r16
pop r16


11 Mar 2009 20:40
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
Возник у меня ну совсем уж тупой вопрос:
как называется микруха для приёма FM станций управляемая при помощи микроконтроллера? - интересная бы вышла функция - радиоприёмник :roll:

_________________
Всё что ты видишь - лживый облик.


14 Mar 2009 15:17
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
HardWareMan wrote:
FreemaN wrote:
з.ы. push sreg/pop sreg вызывает странные последствия - программа не компилится. Юзал так: asm("push sreg");

ГАГА. Это ж не регистр, чтобы его пушать/попать. Это ПОРТ ВВ. Ну вот так организовано ядро AVR. Работает тока так:
Code:
push r16
in   r16,SREG
push r16

Сборка в обратном порядке:
Code:
pop r16
out SREG,r16
pop r16


нашёл в листинге:
Code:
 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:
 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) */


выходит компилятор уже позаботился о сохранении регистров :wink:

_________________
Всё что ты видишь - лживый облик.


14 Mar 2009 15:41
Profile
Senior
User avatar

Joined: 09 Jan 2009 20:30
Posts: 124
Location: Мурманск
Reply with quote
Post 
вот что пока есть:
Image

Image

Image
сейчас у меня стало меньше времени, но я всё равно хочу доделать эту конструкцию

_________________
Всё что ты видишь - лживый облик.


14 Mar 2009 16:00
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 80 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.