Страница 39 из 132
Добавлено: Вт сен 08, 2009 12:50:18
Vergilium
какой контроллер то?
ATtiny2313
Добавлено: Вт сен 08, 2009 13:13:51
izmmisha
Ну в общем то проблема ясна

сам с этим по началу парился
У контроллера нет конкретного прерывания для каждого порта, у него есть общее прерывание
Описание прерывания должно выглядеть так:
Вот как можно узнать прицепилось ли прерывание
делаем думп и видим что ни одно прерывание не подцепилось
Код: Выделить всё
$ avr-objdump -S test
test: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2a c0 rjmp .+84 ; 0x58 <__bad_interrupt>
4: 29 c0 rjmp .+82 ; 0x58 <__bad_interrupt>
6: 28 c0 rjmp .+80 ; 0x58 <__bad_interrupt>
8: 27 c0 rjmp .+78 ; 0x58 <__bad_interrupt>
a: 26 c0 rjmp .+76 ; 0x58 <__bad_interrupt>
c: 25 c0 rjmp .+74 ; 0x58 <__bad_interrupt>
e: 24 c0 rjmp .+72 ; 0x58 <__bad_interrupt>
10: 23 c0 rjmp .+70 ; 0x58 <__bad_interrupt>
12: 22 c0 rjmp .+68 ; 0x58 <__bad_interrupt>
14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt>
16: 20 c0 rjmp .+64 ; 0x58 <__bad_interrupt>
18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt>
1a: 1e c0 rjmp .+60 ; 0x58 <__bad_interrupt>
1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt>
1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt>
20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt>
22: 1a c0 rjmp .+52 ; 0x58 <__bad_interrupt>
24: 19 c0 rjmp .+50 ; 0x58 <__bad_interrupt>
Ну и при компиляции с не верным именем прерывания выдается сообщение:
Код: Выделить всё
$ avr-gcc -std=c99 -g -O -mmcu=attiny2313 -c test.c -o test.o
test.c: В функции ‘main’:
test.c:33: предупреждение: неявное приведение большого целого значения к беззнаковому типу
test.c: В функции ‘PCINT0_vect’:
test.c:13: предупреждение: ‘PCINT0_vect’ возможно некорректно называнный обработчик сигнала
При замене на правильное объявление при компиляции не будет предупреждения и думп будет выглядеть так:
Код: Выделить всё
$ avr-objdump -S test
test: file format elf32-avr
Disassembly of section .text:
00000000 <__vectors>:
0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end>
2: 2a c0 rjmp .+84 ; 0x58 <__bad_interrupt>
4: 29 c0 rjmp .+82 ; 0x58 <__bad_interrupt>
6: 28 c0 rjmp .+80 ; 0x58 <__bad_interrupt>
8: 27 c0 rjmp .+78 ; 0x58 <__bad_interrupt>
a: 26 c0 rjmp .+76 ; 0x58 <__bad_interrupt>
c: 25 c0 rjmp .+74 ; 0x58 <__bad_interrupt>
e: 24 c0 rjmp .+72 ; 0x58 <__bad_interrupt>
10: 23 c0 rjmp .+70 ; 0x58 <__bad_interrupt>
12: 22 c0 rjmp .+68 ; 0x58 <__bad_interrupt>
14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt>
16: 21 c0 rjmp .+66 ; 0x5a <__vector_11>
18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt>
1a: 1e c0 rjmp .+60 ; 0x58 <__bad_interrupt>
1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt>
1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt>
20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt>
22: 1a c0 rjmp .+52 ; 0x58 <__bad_interrupt>
24: 19 c0 rjmp .+50 ; 0x58 <__bad_interrupt>
Вот собственно и 12е прерывание, указывающее на вашу функцию
P.S. пардон, на счет "какой контроллер?" затупил, тема ж про tiny2313
Добавлено: Вт сен 08, 2009 20:04:17
Vergilium
Благодарю, буду пробывать. Я так понимаю чтобы привязатся к конкретной клавише на входе нужно проверять в самой функции прерывания какая клавиша нажата.
Мне нужно в соответствии нажатой клавише выполнить определенное действие. Может у кого есть примерчик какой либо.
Добавлено: Вт сен 08, 2009 21:04:17
izmmisha
Vergilium писал(а):Я так понимаю чтобы привязатся к конкретной клавише на входе нужно проверять в самой функции прерывания какая клавиша нажата.
Да, а вот в ATmega3290 для отдельных пинов отдельные прерывания
Vergilium писал(а):Мне нужно в соответствии нажатой клавише выполнить определенное действие. Может у кого есть примерчик какой либо.
что-то типа того:
Код: Выделить всё
static uint8_t pred;
ISR(PCINT_vect)
{
uint8_t change = (PINB & 0x1F) ^ pred;
if(change & _BV(PB0))
led[0]=r;
else if(change & _BV(PB1))
led[0]=b;
pred = PINB & 0x1F;
}
Добавлено: Вт сен 08, 2009 21:17:48
Vergilium
Урраааа! Заработало. Большое спасибо буду разбератся с кодом.
Добавлено: Пт сен 11, 2009 06:21:05
Takker
Здравствуйте!!! Я собираю робота на микроконтроллере ATtiny2313, я пока новичок, и много не знаю, помогите пожалуйста связать радио модуль RFM12 и контроллер цифровой связью... Зарание спасибо!
Программирую на Си
Добавлено: Пт сен 11, 2009 17:54:04
Aheir
Какой интерфейс у модуля? Подозреваю, что UART. Вот и поищите темы по нему, информации масса

Добавлено: Сб сен 12, 2009 10:22:34
Takker
Насчёт интерфейса незнаю) Не читал пока) Я имею ввиду програмно как связать по командам?
Добавлено: Вс сен 13, 2009 15:39:21
Aheir
В таком случае, позвольте поинтересоваться, Вы сами понимаете некоторую абсурдность своего вопроса?

Возможно, стоит дать себе труд почитать документацию на модуль? Иначе как Вы собираетесь разбираться в тех ответах, которые получите? Впрочем, судя по вопросу, я сомневаюсь, что буду ответы...

Добавлено: Пт сен 18, 2009 08:03:26
evgeshka
у меня вопрос достойный статуса чайника = )
Attiny2313v-10pu. внешний кварц на 8МГц. можно ли его прошить пятью проводами, НО без схемы. то есть позже установить = )?
Добавлено: Пт сен 18, 2009 08:44:52
Alex72
Можно, отчего ж нельзя
Добавлено: Вс сен 20, 2009 12:39:19
Redrik Shuhart
HEEELP! помогите! 2313 мрут как мухи. шью програматором громова(доработанім(кварц отдельно присоеденяется). вот исходник.
они после прошивки перестают определятся, уже 2 тиньки убил так((( питание от комп БП
шью с помошью унипрофа.
прикол в том, что они работают. мож ҐЛПТ програматор аля 5 проводков попробовать?
Добавлено: Вс сен 20, 2009 13:36:49
Redrik Shuhart
комп его не видет
но он работает, аля светофор.
Добавлено: Вс сен 20, 2009 13:47:59
Arlleex
а фьюзы прошил? ну тогда ищи парралельный программатор или реаниматор.
Добавлено: Вс сен 20, 2009 13:53:20
Redrik Shuhart
фьюзы не трогал.
Добавлено: Вт сен 22, 2009 10:37:42
evgeshka
achtung!!! я уже на грани срыва. поэтому хочу совета.
плата
http://radiokot.ru/circuit/digital/home/36/ уже травлена.
пара ATtiny2313 (soic & dip) куплены.
проги (avrasm, tavrasm, avreal, Atmel AVR Tools) скачены.
папки созданы.
но ничего не запускается.
tavrasm ругается что
program terminated - unable to open list file 'output\listfile.lst'
еще необходимо что то исправить в avreal что бы прошить этот attiny2313 и квартс 8Mhz. очевидно это должно выглядеть как:
F:\avr\avreal\avreal32-1.27r3.exe +tiny2313 -! -p1 -ab -o8Mhz -ew output\hexfile.hex -n
pause=null
честно.
прошивать хочу пятью проводами.
я уже израсходовал месячный траффик работы. а сейчас пойду проводить релаксацию усов.
Добавлено: Ср сен 23, 2009 09:27:05
Kaban
Чес слово ничего не понял

evgeshka по моему вы пытаетесь изобрести велосипед. Делайте простой СТК200 и поставьте кодевижн и будет вам счастье

И зачем целая куча программ для прошивки

Добавлено: Ср сен 23, 2009 09:38:39
izmmisha
Прошивка же уже есть готовая, компилить не обязательно (если не хотите что либо изменить), тогда вам для прошивки 5ю проводами подойдет
UniProF. Сам проверял работает программа отлично и очень простая.
Ну и сам как новичек начинал с
AVR шаг первый - программат и вам советую

Добавлено: Ср сен 23, 2009 12:09:17
evgeshka
програматор делать на пару раз не вижу (пока еще) смысла. мне сделать прошить один раз и пока на этот год хватит.
унипроф...хм аппетитно звучит. выражаю свою благодарность = )
Добавлено: Пт сен 25, 2009 09:40:11
allergen
Привет!
Делаю контроллер для девайса в котором будут 3 шаговых двигателя (драйвера на них есть, зовут их SLA7024M, выковырял из того-же принтера, что и движки), ~10 кнопок, 3 реостата и штук пять светодиодов. Управлять всем этим хозяйством вроде мог бы МК ATtiny2313, да ног не хватает. Как быть?
P.S. Я подозреваю что глупый вопрос задаю, но ничего не могу с собой поделать. Может есть для таких случаев какая-нибудь дешевая "безмозглая" микруха, богатая ногами.