ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Vergilium
Грызет канифоль
Сообщения: 260
Зарегистрирован: Ср фев 13, 2008 14:41:32
Откуда: Украина, Николаев

Сообщение Vergilium »

какой контроллер то?


ATtiny2313
Немного нервов и девайс готов
izmmisha
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Ну в общем то проблема ясна ;) сам с этим по началу парился
У контроллера нет конкретного прерывания для каждого порта, у него есть общее прерывание

Код: Выделить всё

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>

Вот собственно и 12е прерывание, указывающее на вашу функцию

Код: Выделить всё

  16:   21 c0          rjmp   .+66        ; 0x5a <__vector_11> 

P.S. пардон, на счет "какой контроллер?" затупил, тема ж про tiny2313
Аватара пользователя
Vergilium
Грызет канифоль
Сообщения: 260
Зарегистрирован: Ср фев 13, 2008 14:41:32
Откуда: Украина, Николаев

Сообщение Vergilium »

Благодарю, буду пробывать. Я так понимаю чтобы привязатся к конкретной клавише на входе нужно проверять в самой функции прерывания какая клавиша нажата.
Мне нужно в соответствии нажатой клавише выполнить определенное действие. Может у кого есть примерчик какой либо.
Немного нервов и девайс готов
izmmisha
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение 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;
}
Аватара пользователя
Vergilium
Грызет канифоль
Сообщения: 260
Зарегистрирован: Ср фев 13, 2008 14:41:32
Откуда: Украина, Николаев

Сообщение Vergilium »

Урраааа! Заработало. Большое спасибо буду разбератся с кодом.
Немного нервов и девайс готов
Takker
Родился
Сообщения: 9
Зарегистрирован: Пт сен 11, 2009 06:11:41
Откуда: Иркутск

Сообщение Takker »

Здравствуйте!!! Я собираю робота на микроконтроллере ATtiny2313, я пока новичок, и много не знаю, помогите пожалуйста связать радио модуль RFM12 и контроллер цифровой связью... Зарание спасибо!
Программирую на Си
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

Какой интерфейс у модуля? Подозреваю, что UART. Вот и поищите темы по нему, информации масса :)
Оптимизм х (Опыт + Знания) = const
Takker
Родился
Сообщения: 9
Зарегистрирован: Пт сен 11, 2009 06:11:41
Откуда: Иркутск

Сообщение Takker »

Насчёт интерфейса незнаю) Не читал пока) Я имею ввиду програмно как связать по командам?
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Сообщение Aheir »

В таком случае, позвольте поинтересоваться, Вы сами понимаете некоторую абсурдность своего вопроса? :) Возможно, стоит дать себе труд почитать документацию на модуль? Иначе как Вы собираетесь разбираться в тех ответах, которые получите? Впрочем, судя по вопросу, я сомневаюсь, что буду ответы... ;)
Оптимизм х (Опыт + Знания) = const
Аватара пользователя
evgeshka
Встал на лапы
Сообщения: 100
Зарегистрирован: Вт май 05, 2009 18:08:26
Контактная информация:

Сообщение evgeshka »

у меня вопрос достойный статуса чайника = )
Attiny2313v-10pu. внешний кварц на 8МГц. можно ли его прошить пятью проводами, НО без схемы. то есть позже установить = )?
Аватара пользователя
Alex72
Прорезались зубы
Сообщения: 201
Зарегистрирован: Пн сен 08, 2008 11:21:11
Откуда: Пермь
Контактная информация:

Сообщение Alex72 »

Можно, отчего ж нельзя
Аватара пользователя
Redrik Shuhart
Друг Кота
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

Сообщение Redrik Shuhart »

HEEELP! помогите! 2313 мрут как мухи. шью програматором громова(доработанім(кварц отдельно присоеденяется). вот исходник.
они после прошивки перестают определятся, уже 2 тиньки убил так((( питание от комп БП
шью с помошью унипрофа.
прикол в том, что они работают. мож ҐЛПТ програматор аля 5 проводков попробовать?
Мотание тороидов- вышивание по мужски.
Аватара пользователя
Redrik Shuhart
Друг Кота
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

Сообщение Redrik Shuhart »

комп его не видет

но он работает, аля светофор.
Мотание тороидов- вышивание по мужски.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Сообщение Arlleex »

а фьюзы прошил? ну тогда ищи парралельный программатор или реаниматор.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
Redrik Shuhart
Друг Кота
Сообщения: 3641
Зарегистрирован: Пт апр 03, 2009 22:12:58
Откуда: Из Украины, Кировоградская облась,

Сообщение Redrik Shuhart »

фьюзы не трогал.
Мотание тороидов- вышивание по мужски.
Аватара пользователя
evgeshka
Встал на лапы
Сообщения: 100
Зарегистрирован: Вт май 05, 2009 18:08:26
Контактная информация:

Сообщение 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

честно.
прошивать хочу пятью проводами.
я уже израсходовал месячный траффик работы. а сейчас пойду проводить релаксацию усов.
Kaban
Прорезались зубы
Сообщения: 235
Зарегистрирован: Пн дек 01, 2008 14:19:31
Откуда: Киргизия.

Сообщение Kaban »

Чес слово ничего не понял :)) evgeshka по моему вы пытаетесь изобрести велосипед. Делайте простой СТК200 и поставьте кодевижн и будет вам счастье :)) И зачем целая куча программ для прошивки :shock:
izmmisha
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср авг 26, 2009 15:59:39

Сообщение izmmisha »

Прошивка же уже есть готовая, компилить не обязательно (если не хотите что либо изменить), тогда вам для прошивки 5ю проводами подойдет UniProF. Сам проверял работает программа отлично и очень простая.


Ну и сам как новичек начинал с AVR шаг первый - программат и вам советую ;)
Аватара пользователя
evgeshka
Встал на лапы
Сообщения: 100
Зарегистрирован: Вт май 05, 2009 18:08:26
Контактная информация:

Сообщение evgeshka »

програматор делать на пару раз не вижу (пока еще) смысла. мне сделать прошить один раз и пока на этот год хватит.

унипроф...хм аппетитно звучит. выражаю свою благодарность = )
allergen
Родился
Сообщения: 2
Зарегистрирован: Пн сен 21, 2009 19:47:33

Сообщение allergen »

Привет!
Делаю контроллер для девайса в котором будут 3 шаговых двигателя (драйвера на них есть, зовут их SLA7024M, выковырял из того-же принтера, что и движки), ~10 кнопок, 3 реостата и штук пять светодиодов. Управлять всем этим хозяйством вроде мог бы МК ATtiny2313, да ног не хватает. Как быть?

P.S. Я подозреваю что глупый вопрос задаю, но ничего не могу с собой поделать. Может есть для таких случаев какая-нибудь дешевая "безмозглая" микруха, богатая ногами.
Ответить

Вернуться в «AVR»