Halfback
-
Постов
424 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Halfback
-
-
Да разводить надо, как SMD, только лучше заранее подумать, как выпаивать
именно этим вопросом я и озадачился перед разводкой платы. Если применять поверхностный монтах - то выпаивать нужно уже с отсосом олова.
А такой вариант мне в общем-то не айс. Поэтому и интересуюсь здесь - мало ли кто кроватку под RFM12BP знает.
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Решил всё-таки делать на полевиках. Нашел расширитель портов на интерфейсе I2C. Логика 3,3В. Нужен подходящий транзистор у которого при напряжения затвор-исток 3,3В ток стока был бы не менее 300мА. BSS295 по характеристикам отлично подходит но могу не достать. Есть еще альтернативы?
Сам пока что нашел IRF7301 - 2-N-канальных в небольшом корпусе.
-
rezident
я не писАл что на мамках источники питания переключаемые - это уже ваша фантазия. Про многофазность написано лишь для общего сведения.
Если источники питания переключаются при помощи реле (десятки миллисекунд) - то без кондесаторов большой ёмкости не обойтись. Либо как написали выше - по диодному "или" подключать 2 источника. Если источники импульсные то ООС рулит ;)
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Вы бы для начала посмотрели на габариты современного радиального/аксиального конденсатора скажем на 6-10 Вольт и 10000мкФ. Взгляните на свою материнскую плату - там для питания ядра процессора применена многофазная система питания (2-3 фазы и больше у современных плат) и посмотрите ради интереса какие там конденсаторы для предотвращения скачков напряжения - а ТОК там куда поболее 2,5А.
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Как мне кажется маловато информации для размышления..
Как вариант влоб - может вставить емкость на несколько тысяч микрофарад??? ;) Токи небольшие так что должно помочь!
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Вот такой красавчеГ. Так вот вопрос - если кто сталкивался то как его грамотно монтировать на печать? Пока додумался на печати сверлить отверстия, в них штыри и на эти штыри монтировать этот девайс. Но может есть спец. кроватка или еще что? Мой способ немного геморный и думаю есть уже готовые решения, но не могу их найти...
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
пока что самый интересный вариант от Сергей Борщ. Но в этом случае нужно либо побольше каналов либо больше тока в нагрузку. у меня такой 1 фтучка стОит около 250р - дороговато однако... Но пока что самый дешёвый вариант это регистр сдвига и полевики. Вообще до 0,5А я тоже нашел в серии ULN и ценник вкусный - до 20руб, но они все параллельные...
-
Забыл добавить - чем больше каналов тем лучше!
-
Вобщем нужно что-то вреде вот такого Там же есть pdf. Но походу в 5891 500мА - максимальный суммарный ток на все 8 каналов, а мне надо до 1А на каждый канал. Вобщем пока не найти. Может кто знает? а то не очень хочется вместо одной микросхемы городить регистр сдвига с защелкой, драйвер и полевики....
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Pasha
я внимательно читаю :)
тупо тока что скопировал в spi.h код (закомментировав свой)
#include <90usb162.h> #ifndef types_h #define types_h void SPI_Init(); interrupt [SPI_STC] void spi_isr(void); // Обработчик прерывания по приходу байта void SPI_Tx_2BITE(uint16 data); #endif
не фурычит. Причем #endif в КОНЦЕ синтаксис не засвечивает почему-то (может глюк? ).
aaarrr
Спасибо!!! Теперь не выдаёт предупреждений!!! Действительно в types.h прописать надо было!
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
#pragma once - такую директиву по моим данным CAVR не поддерживает.
в spi.h для примера добавил как подсказали в вот что получилось
#include <90usb162.h> #ifndef types_h #define types_h #endif void SPI_Init(); interrupt [SPI_STC] void spi_isr(void); // Обработчик прерывания по приходу байта void SPI_Tx_2BITE(uint16 data);
и в итоге types.h не инклудился, т.к. компилятор эррорит что не понимат uint16.
#endif в конец заголовочного файла не поставить - сразу ошибка.
Какие будут еще соображения?
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Смысл в том что в проекте создаю заголовочный файл types.h с содержимым:
typedef unsigned char uint8; typedef unsigned short int uint16; typedef unsigned long uint32;
Дальше всё делаю как полагается: создаю , например spi.с и для него spi.h в котором перечисляю прототипы:
#include <90usb162.h> #include <types.h> void SPI_Init(); void SPI_Tx_2BITE(uint16 data); interrupt [SPI_STC] void spi_isr(void);
В spi.c начинаю с
#include "spi.h" void SPI_Init() { // Функция инициализации SPI //........ }; void SPI_Tx_2BITE(uint16 data) { //........ }; interrupt [SPI_STC] void spi_isr(void) { };
Дык посл компиляции проекта выдаются предупреждения
Warning: F:\...\types.h(2), included from: spi.h: typedef name has already been declared with the same type Warning: F:\...\types.h(4), included from: spi.h: typedef name has already been declared with the same type Warning: F:\...\types.h(6), included from: spi.h: typedef name has already been declared with the same type
Причём показывает на types.h с его тремя typedef-ами. Почему так - вроде понятно. Но разве компилятор настолько не умный чтобы не хавать идентичный typedef ??? Или может я что-то не так делаю?
Если кому не лень разьясните пожалуйста!!!
До этого момента делать небольшие проекты в кейле но там таких глупостей небыло!!!
-
Из двух запоротых "хитрым" фьюзом один МЦУ успешно восстановил - второй нет. Согласно инфе в АВР-Студии надо подключить внешний тактовый генератор (что я и сделал). После подключения стала считываться сигнатура и фьюзы. Но вот фьюзы не писались (в частности хотел перейти на внутренний осциллятор). Там же в доке написано - для того чтобы фьзы прошить надо сделать Erase а потом сразу программировать конфигурацию фьзов. Согласно даташиту - всё получилось. Второй МЦУ залочился по всей видимости из-за друго "злого" фьюза. Из-за какого- пока не помню. Там же в даташите написано что поможет HP параллельное программироване, но вот что:
В режиме HV/PP пробовали?ИМХО проще выкинуть МЦУ чем туеву тучу проводов паять делая волосатый макет ради спасения ОДНОГО тела. Серьезно - прикинул потраченное время на полтора десятка проводов-перемычек и решил отказаться от затеи.
Вобщем век живи - век учись. Всем спасибо!!! Я не прощаюсь ;)
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
В Мегу88 (установленную на Драгоне) записал при помощи AVRStudio4 фьюзик, чтобы МЦУ работал от внешнего тактового генератора - и теперь от МЦУ ни ответа ни привета - смотрел осциллографом когда слал запросы по ISP что отвечает МЦУ - на экране полный штиль. До этого злого фьюза было всё окей. Кварц. генератор не подсоединен. Проц на помойку или что-то можно еще сделать? Прошу помощи...
-
если delay_ms - это функция компилятора - то скорее всего вы декларируете ему не ту тактовую.
декларирую точно ТУ тактовую - сделал даже отдельный проект для проверки. Остаётся только "крошить батон" на CAVR.
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
__delay_cycles(сколько тактов) в IAR'е решат ваши проблемы ;)а в CAVR что решит проблемы?
использовал ф-цию delay_ms(10) дык вместо формирования меандра с Ти=10мс почему то Ти=2,5мс, т.е. приблизительно в 4 раза быстрее. Кварц. генератор = 2Мгц, МЦУ = Мега88.
ЧТо посоветуете? Писать новую функцию, запихивать в нее nop-ы путём подбора с осциллографом? Задача выдавать импульсы с погрешностью хотя бы 1мс - и с delay_ms такой облом. При помощи счетчиков не хотелось бы заморачиваться.
-
Дык я так понимаю с разьема ISP на Дракоше прошить МЦУ не получиться? Только через JTAG либо Parallel Programming???
-
ТОже приобрёл сей гаджет. Доработку по питанию еще пока не делал. Дело вот в чем - купил к нему еще МЦУ Мега88 и воткнут ее в сокет где как-раз 28 отверстий. Вопрос такой - как теперь мою мегу прошить ибо я прозвонил ISP МЦУ и соотв. штыри на плате - не прозваниваются ??? Паяльником проводами подводить к МЦУ ISP и питание?
-
rvk Причем тут UART? речь об SPI...
rezident На счет сдвига - согласен, операция не к чему...
По вопросу - как я понял если я взвожу SPE то флаг SPIF должен сам устанавливать? Без взвода SPE аппаратная часть МЦУ сама выставляет нужные флаги, так?
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
Только начинаю нормально осваивать AVR и столкнулся со следующей проблемой.
Задача такая - во время посылки пакета из 8 бит формировать на каком-либо пине импульс (нулевой или +5В - не столь важно) на время формирования этого байта. Делаю а CAVR. Микрик - Мега88
Вот что получилось:
void main(void) { ... SPCR=0x52; SPSR=0x00; // Clear the SPI interrupt flag #asm in r30,spsr in r30,spdr #endasm // Global enable interrupts #asm("sei") while (1) { // Place your code here PORTC.0 &= 0; PORTD = SPSR; SPDR = 0x15; while(!((SPSR & 0x80) >> 7)); // Следим за SPIF PORTC.0 |= 1; delay_us(200); }; };
при этом коде всё нормально работает. Но когда в визарде проекта CAVR в опциях МЦУ SPI ставлю галочку Enable Interrupt то регистр SPCR приобретает значение 0xD2, т.е. "1" записалась в разряд SPE. При таком раскладе появляется ф-ция обработки прерывания interrupt [sPI_STC] void spi_isr(void).
Но в итоге код не работает. Ес-но я открыл литературу и там написано про SPE - что она активизирует SPI, а SPIF мол является флагом прерываний от SPI и флаг устанавливатеся когда произошла передача пакета. Но как показывает отладка если в SPCR записать 0xD2 то из цикла
while(!((SPSR & 0x80) >> 7)); // Следим за SPIF
программа никогда не выходит.
Можно ли мне разжевать почему так происходит? И как сделать так чтобы программа выходила из while(!((SPSR & 0x80) >> 7)); ???
Заранее признателен!
-
Также сейчас делаю небольшой проект на RF12. Посему вопрос - для Протеуса нет модели хоть какого-нибудь приёмопередатчика с интерфейсом SPI/RS232 ???
-
мда, 1,8Мб на сегодняшний день чтобы скачать - это просто катастрофа. ;)
-
Пароль на архив может кто дать? Я так понимаю пароль д.б. прийти на почту но я дал невалидный адрес. :)
-
Опубликовано · Изменено пользователем Halfback · Пожаловаться
В АРЕС сделана установка компонентов и наложен нетлист. Разводить планируется в ПиКад 2006. Собственно как *.LYT АРЕСа переконвертировать в *.PCB Пикада.
НетЛист из Протеуса можно сделать в Tango, который понимает ПиКад!!!
Вопрос в догонку - Протеусовские библиотеки в Пикадовские можно как-нибудь сконвертировать?
Пытался экспортом Гербера из протеуса в CAMCAD PCB Translator 3.9.5 - но получается как то криво + не не дает экспортировать - пишет что мол это можно делать для лицензионных модулей (в списке лиц. модулей на экспорт действительно ничего нет)!!!
Описание SPI I2C и др.
в Форумы по интерфейсам
Опубликовано · Пожаловаться
помогите плиз мне с этой PCA9554А. Физический адрес: 0. Хочу чтобы на выходе засветило 0хАА. В CAVR пишу так:
На железе не работает. Ладно. Пошел мучать протеус: там тоже самое. :(