ATtiny2313какой контроллер то?
ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
- Реклама
Ну в общем то проблема ясна
сам с этим по началу парился
У контроллера нет конкретного прерывания для каждого порта, у него есть общее прерывание
Описание прерывания должно выглядеть так:
Вот как можно узнать прицепилось ли прерывание
делаем думп и видим что ни одно прерывание не подцепилось
Ну и при компиляции с не верным именем прерывания выдается сообщение:
При замене на правильное объявление при компиляции не будет предупреждения и думп будет выглядеть так:
Вот собственно и 12е прерывание, указывающее на вашу функцию
P.S. пардон, на счет "какой контроллер?" затупил, тема ж про tiny2313
У контроллера нет конкретного прерывания для каждого порта, у него есть общее прерывание
Код: Выделить всё
12 0x000B PCINT Pin Change InterruptКод: Выделить всё
ISR(PCINT_vect)
{
led[0]=r;
}делаем думп и видим что ни одно прерывание не подцепилось
Код: Выделить всё
$ 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>
Код: Выделить всё
16: 21 c0 rjmp .+66 ; 0x5a <__vector_11>
Да, а вот в ATmega3290 для отдельных пинов отдельные прерыванияVergilium писал(а):Я так понимаю чтобы привязатся к конкретной клавише на входе нужно проверять в самой функции прерывания какая клавиша нажата.
что-то типа того: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;
}- Реклама
- Aheir
- Модератор
- Сообщения: 4517
- Зарегистрирован: Пн апр 03, 2006 11:43:25
- Откуда: Санкт - Петербург
- Контактная информация:
В таком случае, позвольте поинтересоваться, Вы сами понимаете некоторую абсурдность своего вопроса?
Возможно, стоит дать себе труд почитать документацию на модуль? Иначе как Вы собираетесь разбираться в тех ответах, которые получите? Впрочем, судя по вопросу, я сомневаюсь, что буду ответы... 
Оптимизм х (Опыт + Знания) = const
- Redrik Shuhart
- Друг Кота
- Сообщения: 3641
- Зарегистрирован: Пт апр 03, 2009 22:12:58
- Откуда: Из Украины, Кировоградская облась,
HEEELP! помогите! 2313 мрут как мухи. шью програматором громова(доработанім(кварц отдельно присоеденяется). вот исходник.
они после прошивки перестают определятся, уже 2 тиньки убил так((( питание от комп БП
шью с помошью унипрофа.
прикол в том, что они работают. мож ҐЛПТ програматор аля 5 проводков попробовать?
они после прошивки перестают определятся, уже 2 тиньки убил так((( питание от комп БП
шью с помошью унипрофа.
прикол в том, что они работают. мож ҐЛПТ програматор аля 5 проводков попробовать?
Мотание тороидов- вышивание по мужски.
- Redrik Shuhart
- Друг Кота
- Сообщения: 3641
- Зарегистрирован: Пт апр 03, 2009 22:12:58
- Откуда: Из Украины, Кировоградская облась,
- Redrik Shuhart
- Друг Кота
- Сообщения: 3641
- Зарегистрирован: Пт апр 03, 2009 22:12:58
- Откуда: Из Украины, Кировоградская облась,
- evgeshka
- Встал на лапы
- Сообщения: 100
- Зарегистрирован: Вт май 05, 2009 18:08:26
- Контактная информация:
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
честно.
прошивать хочу пятью проводами.
я уже израсходовал месячный траффик работы. а сейчас пойду проводить релаксацию усов.
плата 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
честно.
прошивать хочу пятью проводами.
я уже израсходовал месячный траффик работы. а сейчас пойду проводить релаксацию усов.
Прошивка же уже есть готовая, компилить не обязательно (если не хотите что либо изменить), тогда вам для прошивки 5ю проводами подойдет UniProF. Сам проверял работает программа отлично и очень простая.
Ну и сам как новичек начинал с AVR шаг первый - программат и вам советую
Ну и сам как новичек начинал с AVR шаг первый - программат и вам советую
Привет!
Делаю контроллер для девайса в котором будут 3 шаговых двигателя (драйвера на них есть, зовут их SLA7024M, выковырял из того-же принтера, что и движки), ~10 кнопок, 3 реостата и штук пять светодиодов. Управлять всем этим хозяйством вроде мог бы МК ATtiny2313, да ног не хватает. Как быть?
P.S. Я подозреваю что глупый вопрос задаю, но ничего не могу с собой поделать. Может есть для таких случаев какая-нибудь дешевая "безмозглая" микруха, богатая ногами.
Делаю контроллер для девайса в котором будут 3 шаговых двигателя (драйвера на них есть, зовут их SLA7024M, выковырял из того-же принтера, что и движки), ~10 кнопок, 3 реостата и штук пять светодиодов. Управлять всем этим хозяйством вроде мог бы МК ATtiny2313, да ног не хватает. Как быть?
P.S. Я подозреваю что глупый вопрос задаю, но ничего не могу с собой поделать. Может есть для таких случаев какая-нибудь дешевая "безмозглая" микруха, богатая ногами.


