Например TDA7294

Форум РадиоКот • Просмотр темы - ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт фев 13, 2026 15:09:01

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2636 ]     ... , , , 17, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 15, 2008 22:45:24 
Модератор
Аватар пользователя

Карма: 27
Рейтинг сообщений: 58
Зарегистрирован: Пн апр 03, 2006 11:43:25
Сообщений: 4517
Откуда: Санкт - Петербург
Рейтинг сообщения: 0
Медали: 3
Получил миской по аватаре (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Вероятнее всего нет, поскольку тогда "съедут" частоты интерфейса общения с компом.

_________________
Оптимизм х (Опыт + Знания) = const


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 19, 2008 11:26:55 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пн дек 24, 2007 07:09:09
Сообщений: 293
Рейтинг сообщения: 0
Доброго времени суток... Нид хелп... Переделываю программу от ATmega8 в программу для ATtiny2313 (есть такая необходимость)... Возникла сложность с регистрами...

В mega8 стоят такие:
Код:
  TCCR2 = (1<<WGM21)|(1<<CS22)|(1<<CS21)|(1<<CS20);    //Таймер-2, режим CTC, предделитель 1024
  OCR2 = 0x6A;                                  //Регистр сравнения, время счета 9 мс при частоте 12 МГц
  TIFR = (1<<OCF2);                            //Установка флага начала отсчета времени   


Как их переделать под tiny2313?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 19, 2008 12:10:53 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
Цитата:
Как их переделать под tiny2313?


В 2313 нету таймера2. Там есть таймер0 и таймер1. Если таймер 1 больше нигде в программе не используется, то можно юзать его, поменяв в приведённом кусочке TCCR2, OCR2, OCF2 на те же с индексом 1


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 19, 2008 12:46:27 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пн дек 24, 2007 07:09:09
Сообщений: 293
Рейтинг сообщения: 0
Исправил - не помогло... Пишет что
Код:
Compiling C: in_psx.c
avr-gcc -c -mmcu=attiny2313 -I. -gdwarf-2 -DF_CPU=12000000UL -O2 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=obj/in_psx.lst  -std=gnu99 -Wundef -MD -MP -MF .dep/in_psx.o.d in_psx.c -o obj/in_psx.o
in_psx.c: In function 'inDecoderInit':
in_psx.c:11: error: 'TCCR1' undeclared (first use in this function)
in_psx.c:11: error: (Each undeclared identifier is reported only once
in_psx.c:11: error: for each function it appears in.)
in_psx.c:13: error: 'OCF1' undeclared (first use in this function)
in_psx.c: In function 'inDecoderPoll':
in_psx.c:38: error: 'OCF1' undeclared (first use in this function)
make.exe: *** [obj/in_psx.o] Error 1


Может кто нибудь в чем дело?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 19, 2008 13:35:59 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
undeclared - это значит переменная не объявлена заранее. Весь код можно посмотреть, тогда и разговор будет более предметный, а то по кусочкам ничего не понятно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 19, 2008 13:47:07 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пн дек 24, 2007 07:09:09
Сообщений: 293
Рейтинг сообщения: 0
Вот собственно код... Эти регистры обьявляються в файле in_psx.c

Код пока что для ATmega8

http://radiokot.ru/forum/viewtopic.php?p=157934#157934

Я так понял у tiny эти регитры по другому обьявляються
Вроде так : OCF1A, TCCR1B, OCR1AH или я ошибаюсь?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб дек 20, 2008 20:31:22 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
кажется так. сейчас проверить не могу, т.к. выходные, а у меня всё на работе. пишу с мобилы, поэтому немногословно. сорри!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 21, 2008 00:38:38 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
VenomXP писал(а):
Вот собственно код... Эти регистры обьявляються в файле in_psx.c

Код пока что для ATmega8

http://radiokot.ru/forum/viewtopic.php?p=157934#157934

Я так понял у tiny эти регитры по другому обьявляються
Вроде так : OCF1A, TCCR1B, OCR1AH или я ошибаюсь?

В вашем случае более адекватной заменой в таймеру2 в меге будет не таймер1 в тини а таймер0, поскольку он 8-ми битный, что касается имен регистров то сначала попробуйте заменить OCR2 на OCR0A, при этом нужно учесть, что если используются прерывания, то нужно выбрать соотвествующий вектор TIFR = (1<<OCF2); заменить на TIFR = (1<<OCF0), а вообще лучше в даташиты глянуть и таймеры сравнить.
З. Ы посмотрел исходник, разбираться желания нет, поскольку там не достаточно в начале заменить имена, их надо по всему исходнику менять. В качестве помощи могу выложить код настройки, чтобы таймер0 в тини был настроен как Таймер2 в приведенном исходнике.
Дальше будете действовать по аналогии и пробовать, если не будет получаться - спрашивать


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 21, 2008 01:00:03 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Как и обещал выкладываю код инициализации. Не проверено т. к. нет симулятора под рукой, но должно работать

Код:
//Инициализация джойстика

void inDecoderInit(void)
{
  PORTB=0xFF; DDRB=0x14; //PB2,PB4 выходы, остальные входы с резисторами
  PORTC=0xFF; DDRC=0x3B; //PC0,PC1,PC3-PC5 выходы, остальные входы с резисторами
  TCCR0A=(1<<WGM01)// Включаем режим CTC у таймера0
  TCCR0B=(0b101<<CS00)// Включаем делитель на 1024 !! учтите, что временной интервал будет совпадать
//с указанны только при частоте тактирования тиньки 12 МГц
  OCR0A = 0x6A; //Регистр сравнения, время счета 9 мс при частоте 12 МГц
  TIFR |= _BV(OCF0A); //Установка флага начала отсчета времени   
// для приведенной настройки везде в программе нужно заменить OCF2 на OCF0A
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс дек 21, 2008 08:43:49 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пн дек 24, 2007 07:09:09
Сообщений: 293
Рейтинг сообщения: 0
:) пасипа ваще ОГРОМНОЕ... Хоть кто-то откликнулся... ОЧень помогло... Буду проверять :) Еще раз СПАСИБО

_________________
Даташит - библия моя...
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 19:34:57 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 17:13:24
Сообщений: 37
Рейтинг сообщения: 0
добрый вечер, у меня вопрос по массивам. взял код с обучалки немного изменил массив. код прикрепил.. проблема заключается в том что массив Array0: очень велик и не обрабатывается до конца.. говорит ли это о том, что большой код забивает ПЗУ и не обрабатывая до конца начинает с начала?


Вложения:
Комментарий к файлу: код прошивки
code.asm [5.49 KiB]
Скачиваний: 515
Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 23:17:15 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Dock писал(а):
добрый вечер, у меня вопрос по массивам. взял код с обучалки немного изменил массив. код прикрепил.. проблема заключается в том что массив Array0: очень велик и не обрабатывается до конца.. говорит ли это о том, что большой код забивает ПЗУ и не обрабатывая до конца начинает с начала?

По беглому взгляду - до конца обработки массива наступает условие прерывания Timer1_comp1, и массив естественно не обрабатывается до конца. :shock: Собственно я ни разу не видел обработки массивов в п/п обработки прерывания, может стоит вынести его за пределы обработчика и запретить прерывания на время обработки массива, или на крайний случай увеличить коэф. деления прескалера. Размер массива ограничен только объемом доступной памяти.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 23:42:44 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22
Сообщений: 2401
Откуда: Россия, Волгоград
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Igor_67 писал(а):
Цитата:
Как их переделать под tiny2313?


В 2313 нету таймера2. Там есть таймер0 и таймер1. Если таймер 1 больше нигде в программе не используется, то можно юзать его, поменяв в приведённом кусочке TCCR2, OCR2, OCF2 на те же с индексом 1

в меге Т2 8-бит, а Т1 в тини2313 16-бит, логичнее использовать ТО, но нужно уточнить в каком режиме он работает


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 01:09:20 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Dock писал(а):
добрый вечер, у меня вопрос по массивам. взял код с обучалки немного изменил массив. код прикрепил.. проблема заключается в том что массив Array0: очень велик и не обрабатывается до конца.. говорит ли это о том, что большой код забивает ПЗУ и не обрабатывая до конца начинает с начала?

Код конечно безобразный, но при беглом просмотре думаю работать должен, одно меня смущает: счетчик сбросов организован в регистре общего назначения (R21), не знаю точно - беглый просмотр ДШ не дал ответа на вопрос, но подозреваю, что r21 обнуляестя при сбросе.
Как вариант - попробуйте организовать счетчик сброса в ОЗУ, естественно смотрите в сторону команд lds, sts.
Ниже некий пример работы с памятью
Код:
.dseg
rst_cntr: .byte 1 ; резервируем 1 байт ОЗУ под счетчик (до 255 ресетов)
.cseg
.org 0
...
; работа с переменной в озу может происходить так:
lds r16, rst_cntr; загружаем данные из памяти в регистр
inc r16; ну или dec r16 или еще какие действия
sts rst_cntr, r16 ; сохраняем данные из регистра в память

З. Ы. В коде возможны опечатки т. к. писал прямо в окне ответа, соответсвенно не проверял.
З. З. Ы. По поводу массивов - поглядите на описание команд ld rd, X+, ld rd, Y+, ldd и т. д. - если прочтете внимательно - узнаете много интересного.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 01:23:09 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Сб дек 22, 2007 17:13:24
Сообщений: 37
Рейтинг сообщения: 0
причина оказалась банальна при встрече адреса в массиве
0 (десятеричное) или 0b00000000 массив уходил в ресет.. кто может объяснить почему? и как это исправить?
благодарю. прашивка выше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 01:37:40 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Dock писал(а):
причина оказалась банальна при встрече адреса в массиве
0 (десятеричное) или 0b00000000 массив уходил в ресет.. кто может объяснить почему? и как это исправить?
благодарю. прашивка выше.

Тоже мне, четвертый бином Ньютона (с) М. Булгаков
причина здесь

Код:
       lpm                   ;загрузка из ПЗУ

         mov Temp,R0           ;копирование в РОН
         cpi Temp,0            ;пороверка на нулевой элемент
         breq Init

Дело в том, что многие ленятся смотреть в даташит, а там можно узнать много интересного. Даю наводку прочитайте описание команды lpm и сами найдите причину. Ну если все-таки не найдете, то я вам так и быть подскажу чуть позже.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 02:37:24 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
Так вот, команда lpm загружает байт из программной памяти, "лежащий" по адресу, находящемуся в указателе Z, в регистр R0. Т. е. в вашем коде происходит следующее: из массива загружается байт, далее этот байт сравнивается с 0, если равен, то переходим на метку Init, собственно при переходе на Init счетчик массива обнуляется и чтение продолжается с нулевого элемента массиа.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 09:27:45 
Родился

Зарегистрирован: Чт дек 18, 2008 13:13:27
Сообщений: 6
Рейтинг сообщения: 0
а -


Последний раз редактировалось Петрович2 Сб дек 27, 2008 07:47:34, всего редактировалось 3 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 09:46:34 
Электрический кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 2
Зарегистрирован: Вт окт 21, 2008 11:46:23
Сообщений: 1051
Откуда: Барнаул
Рейтинг сообщения: 0
Вот выдержка из даташита на ATtiny2313:
Цитата:
Calibration Byte The ATtiny2313 has a byte calibration value for the internal RC Oscillator. This byte
resides in the high byte of address 0x000 in the signature address space. During reset,
this byte is automatically written into the OSCCAL Register to ensure correct frequency
of the calibrated RC Oscillator.

То есть, если записать нужные биты в слово OSCCAL, то можно получить желаемое. Но это, кажись, только для внутреннего генератора. Вот, собственно сами биты:
Цитата:
CKDIV8 7 Divide clock by 8 0 (programmed)
CKOUT 6 Output Clock on CKOUT pin 1 (unprogrammed)
SUT1 5 Select start-up time 1 (unprogrammed)(1)
SUT0 4 Select start-up time 0 (programmed)(1)
CKSEL3 3 Select Clock source 0 (programmed)(2)
CKSEL2 2 Select Clock source 0 (programmed)(2)
CKSEL1 1 Select Clock source 1 (unprogrammed)(2)
CKSEL0 0 Select Clock source 0 (programmed)(2)


Здесь CKSEL0 - нулевой; CKDIV8 - седьмой, т.е. последний.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 30, 2008 22:38:56 
Опытный кот
Аватар пользователя

Зарегистрирован: Сб янв 05, 2008 11:05:15
Сообщений: 849
Откуда: Україна м.Луцьк
Рейтинг сообщения: 0
Проблема с настройкой ШИМ. Делаю это так: (вложение). В протеусе работает только 1 канал, почему не пойму.:)


Вложения:
untitled.c [1.57 KiB]
Скачиваний: 535

_________________
Я не Сашок!!!
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2636 ]     ... , , , 17, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y