Перейти к содержимому
Форум журнала практической электроники «Датагор»

Оригинал микро-ПК Raspberry Pi 3 Model B+ (Broadcom 1.4GHz quad-core 64 bit processor, Wifi, Bluetooth, USB)

Офигенная миниатюрная рация на литии BaoFeng UV-5R, 5W, 5-15 км! Охота, поход, торговый центр и т.п.

TrueRMS мультиметр UNI-T UT139A с автодиапазонами

Паяльнник 80W с терморегулятором и LCD-дисплеем, популярные жала серии 900M
zud

AtMega в несознанке

Рекомендованные сообщения

Проблема в следующем

Пытаюсь подключить 7-ми сегментник к АТ8 - даже не моргнёт,падла такая.

Вроде по книжкам делал, мож подробность какую упустил?

 

Вордовский док не хАТИт глотать, по этому открытым текстом.....

 

 

Chip type : ATmega8

Program type : Application

AVR Core Clock frequency: 8,000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

*****************************************************/

 

#include <mega8.h>

#include <delay.h>

#include <stdio.h>

 

char digit_out[2], cur_dig;

 

flash char buf[] = { //массив с цифрами

0b00000011, //0

0b10011111, //1

0b00100101, //2

0b00001101, //3

0b10011001, //4

0b01001001, //5

0b01000001, //6

0b00011111, //7

0b00000001, //8

0b00001001, //9

0b11111111

};

 

void hc164_wr(unsigned char dig){ //подпрограмма вывода данных в регистр

unsigned char a;

for(a=0; a<8; a++){ //цикл для вывода 8 бит данных из массива

PORTB.0 = buf[dig] & 1<<a; //выводим в линию DATA текущий бит

PORTB.1=0; //опускаем линию CLK в лог.0

PORTB.1=1; //поднимаем линию CLK в лог.1

}

}

 

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

{

 

switch (cur_dig){

case 0:{PORTC.0=0; PORTC.1=0; hc164_wr(digit_out[cur_dig]); PORTC.0=1; break;}; //первая цифра

case 1:{PORTC.1=0; PORTC.0=0; hc164_wr(digit_out[cur_dig]); PORTC.1=1; break;}; //вторая цифра

}

cur_dig++;

if (cur_dig==2) cur_dig=0;

 

 

}

 

// External Interrupt 1 service routine

interrupt [EXT_INT1] void ext_int1_isr(void)

{

// Place your code here

 

}

 

// Declare your global variables here

 

void main(void)

{

unsigned char f;

 

// Input/Output Ports initialization

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0xFF;

 

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0xFF;

 

// Port D initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0

PORTD=0xFF;

DDRD=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 125,000 kHz

TCCR0=0x03;

TCNT0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer1 Stopped

// Mode: Normal top=0xFFFF

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x03;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

 

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer2 Stopped

// Mode: Normal top=0xFF

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x03;

TCNT2=0x00;

OCR2=0x00;

 

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Falling Edge

// INT1: On

// INT1 Mode: Falling Edge

GICR|=0xC0;

MCUCR=0x0A;

GIFR=0xC0;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x02;

 

// USART initialization

// USART disabled

UCSRB=0x00;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

 

// ADC initialization

// ADC disabled

ADCSRA=0x00;

 

// SPI initialization

// SPI disabled

SPCR=0x00;

 

// TWI initialization

// TWI disabled

TWCR=0x00;

 

// Global enable interrupts

#asm("sei")

 

while (1)

{

for(f=0; f<100; f++){

delay_ms(50);

digit_out[0]=f/10;

digit_out[1]=f%10;

 

}

};

}

 

Ошибка где?

подскажите, пожаЛЛста :unknown:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
... даже не моргнёт,падла такая. ...
Желательно видеть схему. Во-первых, в схеме могут быть ошибки. Во-вторых, используется вход внешних прерываний и без схемы непонятно, что за сигнал на него подаётся. В третьих, программа может не соответствовать схеме. В четвёртых, без схемы нельзя понять, как выводятся знаки. В функции hc164_wr выводится последовательный код с тактом. Куда выводится? У вас индикатор с последовательным входом? Изменено пользователем Lexter

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понял.

Я сам сдурил - схему нарисовал 74С595 - балбес, что скажешь....

Николай, тогда вопрос шкурный - все мои извраты в данный момент связаны с следующим

Хочу на AVR-ке сделать управление оконечником.

Алгоритм следующий:

1 - Подали сетевое - усь в ожидании (stendbai)

2 - Нажали кнопку - включилось рэле подключающее питалово на силовой транс, появляется индикация (4-х разрядный 7-ми сегментник) -- уровень громкости на момент выключения.

так же проц управляет лестничным регулятором громкости через кнопки или валкодер.

Если есть возможность помочь в данном проекте - буду очень благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати в добавок к алгоритму - при подаче "стороннего" сигнала на один из входов контроллера, усил должен так же включиться ( при использовании отдельного преда).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
... проект в протеусе ...
К сожалению, в протеусе помочь не смогу. Я в нём не работаю и у меня его нет, так что даже открыть посмотреть нечем.

Так как после переделки, проект "задышал"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот и схема добытая непосильным трудом из протеуса.

 

 

Узнать бы ещё назначения кнопок.

 

 

post-32484-0-83872000-1518362882_thumb.jpg

Изменено пользователем goldmen8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

кнопки свеху 1,2,3,4,

1 - вкл

2 - +

3 - -

4 - нажал - есть + на PD0 , ещё раз - нету.

Переделал всё и всё равно тихо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Перенастроил порты - индикатор засветился....... весь......все сегменты.......

На нажатие не реагирует, сдвиг.рег. молчит.

Хреново когда недоучь.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
... появляется индикация (4-х разрядный 7-ми сегментник) -- уровень громкости на момент выключения. ...
А не много будет уровень громкости в 4-е разряда?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

индикацию хочу сделать "dB" - 127, а с прибавлением или убавлением.....

Буквы с индикатора отдельно сделаю...

Пыжусь с чужих решений "свести" в кучу всё - ума, блин, не хватает, блин....

Может кто ссылочку скинет как правильно выводить цыфры через 595-ю в CodeVision-е?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
... как правильно выводить цыфры через 595-ю ...
Для этого полезнее один раз разобраться, чем каждый раз искать чьи-то кривые примеры. :smile:

Берётся даташит на нужную микросхему (ссылка на даташит 74HC595: _http://www.ti.com/lit/ds/symlink/sn74hc595.pdf ).

Микросхема состоит из двух регистров - входного регистра сдвига и выходного регистра-защёлки. Чтобы во время передачи кода на выходах микросхемы не проскакивали промежуточные значения (чтобы цифры на подключеном индикаторе не моргали), сначала последовательный код побитно записывается в сдвиговый регистр, потом одним тактом перезаписывается в регистр-защёлку, после чего новые данные появляются на выходах микросхемы.

Зная, к каким портам контроллера какие выводы микросхемы подключены, просто пишутся соответствующие действия в программе:

Исходно управляющие входы микросхемы надо установить в следующие состояния:

OE (13) = 0 (выходы микросхемы активны);

RCLK (12) = 0 (исходное состояние входа записи в регистр-защёлку);

SRCLK (11) = 0 (исходное состояние входа записи в сдвиговый регистр);

SRCLR (10) = 1 (сброса в 0 сдвигового регистра нет);

SER (14) - вход последовательных данных, любое состояние, так как нужное установится при первом выводе.

 

В подпрограмме вывода кода цифры выполняются следующие действия:

На SER (14) устанавливается первый бит выводимого кода.

На SRCLK (11) устанавливается 1, затем 0, т.е. формируется фронт такта, по которому бит со входа SER записывается в сдвиговый регистр.

Эти операции повторяются, пока в сдвиговый регистр не будут записаны все биты кода.

После записи в регистр сдвига всего кода (в данном случае - кода знака цифры на индикаторе), на его выходе получается параллельный код, который надо переписать в выходной регистр.

Для этого на RCLK (12) надо установить 1 (по этому фронту данные запишутся в выходной регистр и появятся на выходах), затем 0 (вернуть в исходное состояние). При динамической индикации эта операция делается в другом месте (см. ниже).

Всё. Новое число установлено на выходах микросхемы. Бит, выведенный последним, окажется на выходе QА (15), остальные биты - по порядку на остальных выходах.

 

Дальше надо разобраться с динамической индикацией. У вас 4 знака, в которые надо выводить число по-очереди циклически. В каком порядке - не имеет значения. Чтобы обеспечить наиболее быстрое переключение, последовательность такая:

 

1. В 595-й регистр выводится последовательный код следующего символа по алгоритму, написанному выше. В выходной регистр пока не пишется (состояние RCLK (12) не меняется). Во время длительной операции последовательного вывода на индикаторе всё ещё горит предыдущий символ.

 

2. Текущая линия выбора знака (на вашей схеме это PC0 - PC3 контроллера) выключается. Знак при этом гаснет.

Каким уровнем (0 или 1), зависит от того, какой у вас индикатор - с общим анодом или общим катодом.

 

3. На выводе RCLK (12) формируется фронт записи в выходной регистр. На выходах микросхемы при этом появляется код следующего знака.

 

4. Устанавливается активной следующая линия выбора знака. Знак при этом "зажигается".

 

Для четырёхразрядного светодиодного индикатора "перебирать" знаки надо с частотой 60 - 120 Гц, чтобы не было заметно мерцания. Делать частоту выше не стоит - будет уменьшаться яркость.

 

По поводу схемы подключения индикатора.

Так, как у вас нарисовано, действительно многие делают, но это некорректно. Ток через светодиодные сегменты надо ограничивать резисторами, а не загонять выходные каскады микросхем в режим ограничения тока. Это для них нештатный режим.

Выводы PC0 - PC3 контроллера перегружены по току. Может быть включено одновременно все 7 сегментов (цифра 8), соответственно посчитайте, какой ток требуется с вывода порта PC, и посмотрите в даташите, какой максимальный допустим.

Изменено пользователем Lexter

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

  • Сообщения

    • Стабилизация по 5 ти вольтам. 5 вольт стоит жёстко
    • Мне нравится детское с ромашкой Алексей, у Вас стабилизация сделана по обмотке - 5В? Тогда на обмотке, которая без стабилизации,  будет в место положенных  будет "черте что".  На эту обмотку нагрузка просится, или стабилизацию от неё подключить.  5В через дополнительный стабилизатор.  
    • Решил таки снова попробовать ИБП.... Почему снова? - Сколько ни пробовал их собирать - не получалось запустить или работали максимум час, после чего транс начал шипеть и что-то даже стрекотать.... Короче не везёт мне с ними. И попал мне в руки БП от ДВДюшки какой-то. Разобрал транс, посчитал по обмоткам виток/вольт. Нужно 2 Х 18 вольт и одна 5-ти вольтовая (её намотал на место, как былО)  Один виток = 1 вольту Мотаю сперва 12 витков, крайний конец к выводу транса (общий), от него ещё 12 витков провода. Навешиваю мост из диодов, включаю...... +70 вольт и - 70 вольт относительно общего провода 5 Вольт в норме..... Скажите, плизз, каким мылом руки помыть?  
    • Найдете. В Китае есть все. 
    • Если не найду с линейным, тогда как поступать?
    • Буду изыскивать! Беда в том, что описание часто не совпадает с полученным, а на вопросы получить вразумительный ответ крайне трудно.
    • Видел темку, обращался к нему - молчит. Да, я тоже так понял. Вчера панельки от разных продавцов внимательно пошерстил, похоже, что есть линейный выход , а есть и с усями, притом разной мощности. Я так понимаю мне лучше заказать с линейным выходом?
    • Александр - Tank к своему ламповому усилителю подключал такие панели. https://datagor.ru/amplifiers/tubes/3127-ghxamp-impulsny-bp-lampovogo-usilitelya.html  Мне кажется они бывают разные, с усилителями и без, но что там вам придет и самое главное КОГДА придет, никто не знает. 
    • Я, конечно, понимаю, что тема - в какой-то степени некро, но для потомков всё же стоит запостить. Достался мне списанный Fujitsu RX300 S4, решил я в нём память обновить и получил то самое "Blah blah... Warranty Restricted". У меня DDR2-FBDIMM, но это не так важно, на DDR3 такая же привязка идёт, просто по другим адресам.   Так вот, из всего, что там в первых постах написано, сигнатурой являются только 6 байт: 63 C3 46 53 43 00 04 И всё, больше ничего не нужно. Вся остальная информация это вендорская доп. инфо, которая не входит в JEDEC спецификацию, и править её не нужно - хотя, туда можно вписать что угодно, и это никак не скажется на работоспособности. Что, собственно, и сделал автор, просто скопировав весь нижний кусок данных. В моём случае, с DDR2-667D (FB-DIMM) сигнатура лежала по адресам DE-E3. У автора темы, на DDR400 по адресу 8E-93. С DDR3 будет то же самое, но адрес надо искать по родному дампу от Fujitsu.
    • Я бы с удовольствием, но пациент в пути, я бы сказал в начале пути Что нашёл, детализация конечно никакая, но всё же...
    • Там, может, уже на выходе усилители класса D ставят. Я не сталкивался с такими плеерами. Сфотографируйте его с обеих сторон. Интересно посмотреть что там.  
    • Спасибо, Сергей! Ждал, ждал ответа...сегодня эту схемку и опробовалвсё работает!  Развёл, как на фото. Всё верно? Тут ещё одна загвоздка - музыка голая, без тюнера,  думал врезать такой: https://aliexpress.ru/item/4000694139781.html?spm=a2g0s.8937460.0.0.536d2e0ehfsKB7 Выход 2х3 китайских вата, подавать буду, как на фото. Оставить как есть или сигнал надо срезать?
    • Вам нужно входа подключать параллельно. Нужно спаять разветвитель. Или купить готовый.
    • Приветствую! Закинул темку на форум портала, но и сюда продублирую. Возникла необходимость подключения двух каналов к звуку 5,1. Интересует самое простое подключение, лишь бы играли все колонки. При подключении двух каналов уже играет саб, осталось подключить тыловые и центральную колонки. Агрегат такой: https://manualza.ru/hyundai/h-has6003/bona1
    • Здравствуйте, Николай!   Насколько мне известно, никаких препятствий для постинга нет. Это подтверждает и ваш пост. Но форумы не живут сами по себе. Нужно много сил и времени, чтобы администрировать, расшевеливать, вести форум, да любое сообщество. У меня сейчас нет желания им заниматься. Подустал от потреблядства и неблагодарности людей. Даже ваш пост не содержит ни приветствия, ни предложения помощи, ни доброго слова, а выглядит, как наезд на наёмного Джамшута, который снова накосячил.    Этот форум я официально не открывал. Поэтому и никаких рассылок с объявлениями не было. Он законсервирован и всё ещё висит здесь, т.к. полон полезностей и приятных воспоминаний.   Сейчас пообщаться, задать вопросы и ответить можно тут: https://datagor.ru/forum/
    • После долгого простоя прошло уже достаточно времени, а на форуме пустынно... Странно это для такого ресурса, - даже более хиленькие вон живут и процветают... Это из-за чего? Какие-то новые правила премодерации, что всё режется, или ещё какие неполадки? Или из поисковиков форум вылетел? Столько было постоянных участников. Ну не может так быть, чтобы все разом отвалили, отчаялись ждать и забыли. Хотя... рассылки об открытии вроде не было.
    • Или нагрузку на ТВЗ-1-9 подключить не 4 Ома а 8. Ra=Rн* (Ктр)^2
    • Тему оживить недолго. Николай, или задайте вопрос, или свою схему предложите.
    • Николай, вы сами можете сделать достоверный вывод. В последнем посте смотрите дату: 20 июня, 2016. Сами-то как думаете? 
    • Денис, привет! Разумеется, вы написали верно - " под напряжением уже не паять"! Именно потому, что у вас сейчас применён импульсный БП, который имеет гальваническую связь с питающей Сетью 230V.   А вот в паялке паялка люкей 852 стоит нормальный железный трансформатор, что полностью снимате проблему. Идея понятна?   Всё правильно. А зачем жалу с питанием 24 вольта запас на киловольт??? Даже 100 вольт - это ПЯТИкратный заказ, а 230 (как в сети) - ДЕСЯТИкратный.
    • Спалил паяльную станцию KSGER T12, все вроде понятно, но получилось, так что коснулся в бп жалом "горячей" части в силовой схеме, самое интересное сгорела сама бошка, и жало, БП остался жив. В ручке самого паяльника отгорела земля идущая на жало, как бы на этом все и должно было закончиться, а нет, сгорела и бошка.... Вобщем крутанул жало мегомметром типа ЭС - 0210, на пределе в 500 вольт оно пробито, тестером на мегомах не звонится, получилось, как, отгорело заземление в жале, а после пробило и само жало, после пошло на плату управления и все...    Ну давайте только без учений типо отключать нужно итд, надо было так вот и залез, до этого была паялка люкей 852, там с этим было все норм, землю от жала я сразу отключил, и все было прекрасно, ну не успел тут этого сделать.   Вопрос как бы такого характера, какое сопротивление изоляции должно быть у жала относительно земли и нагревателя, потому что, взял другое жало и оно точно так же пробилось, секунд пять продержало 20 мОм на 500 В потом пробилось в ноль и все, мегометром только ноль, а тестер на максимальном пределе, не видит ни какого сопротивления. Как быть то теперь, получается под напряжением уже не паять? да и получается, на жале весь потенциал сети, там типа конденсатор итд. Еще может кто знает, оригинальные жала HAKKO какую имеют изоляцию.
︽ Наверх страницы ︽
×
×
  • Создать...