Jump to content

Устройство импульсного заряда/разряда АКБ на МК PIC (Эх, заряжу - 01)


Recommended Posts

Да  конечно  все  дело  в  КУ  ОУ,  у  них  охриненный  разброс.  Нужно  выставить  необходимую  глубина ООС.  iaviav запаяйте  вместо  4.7к.  подстроечный

или  один  вместо  всей  цепочки,  и  все  у  Вас  получиться.

postaloi!  Вы   обещали  подписать  невыполнение  подпрограмм  при  отсутствии  сети.  Может  на  досуге?

postaloi!  А  на  какой  странице  8.8,  я  что то  не  нашел?

Link to comment
Share on other sites

5 часов назад, vladimir1962 сказал:

 

https://youtu.be/gPrDThbti6I

https://youtu.be/pzpkB6JwaPo

https://youtu.be/TrRgNZByvWY

Может кому пригодится для настройки у меня работает.

 

 

 

 

Здравствуйте Владимер. Если можно подробнее расскажите о нагрузке в банке

Link to comment
Share on other sites

Приглашаем на вебинар «Необычное в обычном. Сравнительный анализ современных решений Recom» (27.01.2022)

Приглашаем 27/01/2022 всех желающих посетить вебинар, посвященный двум наиболее растущим сегментам интегрированных источников питания – AC/DC малой мощности (1-20Вт) и сегменту решений PoL без изоляции. На вебинаре рассмотрим проблему выбора AC/DC в бюджетном сегменте и концепцию тестирования ускоренного старения, проведем сравнительный анализ подходов к интеграции AC/DC модулей. Сделаем обзор решений концепции POL с доисторических времен до современных технологий и средств для разработки и тестирования.

Подробнее

Резистор ПЭВ50  1Ом, при больших токах греется  меняется сопротивление и  ток падает, если надо подстроить то не удобно,  поэтому поставил у банку с водой, так ток держит стабильно.

 

 

 

 

 

 

Link to comment
Share on other sites

Решения Infineon для беспроводного электроинструмента с бесщеточными электродвигателями

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

Подробнее

Стандарт LoRaWAN и его использование в России с контроллерами STM32WL

Стандарт сетевого уровня LoRaWAN технологии LoRa одобрен для применения в России и отвечает требованиям региональных сетевых операторов. Компания STMicroelectronics выпустила линейку беспроводных однокристальных контроллеров серии STM32WL c поддержкой модуляции LoRa. Серия STM32WL имеет цифровые и аналоговые периферийные устройства для приложений, требующих высокой энергоэффективности и возможностей связи на достаточно большие расстояния, подходя для широкого спектра промышленных и потребительских приложений.

Подробнее

Все настороилось. Но заметил особенность. Ставлю в режим зарядки АКБ, включаю в сеть, на индикаторе ток равен нулю, скидываю любую клему с АКБ, подключаю назад и только после этого показания тока появляются. Странность какая-то.

Link to comment
Share on other sites

Разработка преобразователей на основе карбид-кремниевых приборов с помощью симулятора SpeedFit 2.0

Компания Wolfspeed разработала бесплатный онлайн симулятор SpeedFit 2.0, позволяющий разработчикам быстро и всесторонне оценить параметры основных процессов, происходящих в силовой части импульсных преобразователей электрической энергии, и сравнить между собой различные варианты реализации поставленного технического задания.

Подробнее

5 часов назад, iaviav сказал:

Все настороилось. Но заметил особенность. Ставлю в режим зарядки АКБ, включаю в сеть, на индикаторе ток равен нулю, скидываю любую клему с АКБ, подключаю назад и только после этого показания тока появляются. Странность какая-то.

Вы  во  время  зарядки  отключите  сеть! "Зарядка"  будет  продолжаться!

Это  еще  одна  особенность.

Но  если  этого  не  заметить  во  время,  можно угробить  акум.

Link to comment
Share on other sites

Это зависит от режима заряда, на живом АКБ ещё не испытывал, я так поня, что показания тока усредненные,т.к когда подключился амперметр последовательно, то показания все время меняются, а на индикаторе они не прыгают.

Link to comment
Share on other sites

9 часов назад, iaviav сказал:

Это зависит от режима заряда, на живом АКБ ещё не испытывал, я так поня, что показания тока усредненные,т.к когда подключился амперметр последовательно, то показания все время меняются, а на индикаторе они не прыгают.

Т.е.  пjлучается,  что  живой АКБ"  Вы  будете  заряжать  незнамо  чем?

 

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Здравствуйте POSTALOI  очень нужно зарядное на большой ток не менее 30А  и  до 75В  хотел спросить или реально поставить транзисторы  на зарядку в место IRF9540  пример SKM200GB123 схемку драйвера и транзистора высылаю

Замена.BMP

Link to comment
Share on other sites

08.06.2019 в 08:32, postaloi сказал:

Раскашелился на второй АКБ, результат замера внутреннего сопротивления:

5cfb4766b83b7_.thumb.jpg.81562d56056cc7fa46073d6febcd3312.jpg

IMG_20190607_202407.thumb.jpg.f39f7e645cf32b6ba2b0e9bb03b134c7.jpg

А вот старая:

5cfb47d8159b3_.thumb.jpg.3a6da18f65f1f609782e5fac854f0d5b.jpg

IMG_20190607_202505.thumb.jpg.a7ee39677349a07c6d605809092762af.jpg

Еще держится.

Уточните можно ли мерять внутренние сопротивление на прошивке шандр 8.12

Link to comment
Share on other sites

  • 3 weeks later...

подскажите помогите,  обновился до Charger 1_8.12.hex с шунтом БЕЗ симистора

перестала работать кнопка DоWN, пробовал стирать и перезаписывать МК. пробовал перемычкой с минуса на ногу МК. при включенной схеме на этой ноге МК (24)и минусом есть 5В, впрочем как и на всех остальных портах для кнопок.  из переделок поставил делитель 1/4 и заземлил ногу RW на дисплее а от МК отрезал ее.

Link to comment
Share on other sites

UPD

попробовал разные прошивки,  затирал чип. кнопка DN так и не заработала, а в прошивке нет круговой промотки параметров(настройка/калибровка). если это не очень затратно по времени то было бы неплохо выудить прошивку(редакция) где кнопка будет запитана с другого пина. а нет буду ждать другой МК, т.к. полагаю что я каким-то образом его шатанул. автор темы спасибо тебе за этот ШЕДЕВР, еще в 2017   я и не догадывался, что такого развития приобретет тема:clapping:

Edited by roma_BLR
Link to comment
Share on other sites

Здравствуйте POSTALOI    если можете  в программе изменить чтоб напряжение было до 100в а ток не менее 30А-50А сделайте нужно такое  зарядное устройство, спасибо.

Link to comment
Share on other sites

08.06.2019 в 10:32, postaloi сказал:

Раскашелился на второй АКБ, результат замера внутреннего сопротивления:

5cfb4766b83b7_.thumb.jpg.81562d56056cc7fa46073d6febcd3312.jpg

IMG_20190607_202407.thumb.jpg.f39f7e645cf32b6ba2b0e9bb03b134c7.jpg

А вот старая:

5cfb47d8159b3_.thumb.jpg.3a6da18f65f1f609782e5fac854f0d5b.jpg

IMG_20190607_202505.thumb.jpg.a7ee39677349a07c6d605809092762af.jpg

Еще держится.

 

здравствуйте Postaloi. Прокаментируйте эти фото пожалуйста. На какой схеме и на какой прошивке вы это делали. СПАСИБО.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Сообщения

  • Similar Content

    • By Falconist
      Уважаемые коллеги,
      немного "злоупотребил властью" и открыл отдельную тему, поскольку аналогичная тема на "Казусе" неожиданно получила достаточно большой резонанс (только "спасиб" - 148). Неоднократно отсылал туда, чтобы не дублировать одинаковые темы на разных форумах, но в связи с недавним усложнением регистрации на Казусе такая отсылка становится напряжной. Да и расползлась "та" тема до почти 800 постов, т.е. приблизилась к пределу "читабельности", при том что ещё почти столько же было выделено в 2 дочерние подтемы.
      Итак, "ближе к телу" (как говорил Ги де Мопассан).
      Схема зарядки (сразу предупреждаю!) не является абсолютно оригинальной, является гибридом статей М.Шумилова в "Радио".- 2009, № 1.- С.38-39; "Зарядное устройство из блока питания АТ-АТХ" и нескольких схем компьютерных БП АТ (варианты "А" и "В"), с датчиком тока на транзисторе.

      В третьем варианте ("С") использован принцип измерения тока заряда вторым компаратором самой TL494 ( http://kravitnik.nar...e/charge_4.html ).

      По принципу действия все они являются стабилизаторами тока с ограничением максимального напряжения на уровне 14,4 В. Выходной ток заряда может достигать 10...12 А с соответствующим трансформатором (ну уж не совсем "малюпусеньким"!). Эта зарядка НЕ ПРЕДНАЗНАЧЕНА для десульфатации, "тренировки" и прочих извращений, являющихся "тяжким наследием совейской действительности", когда стоимость нового аккумулятора была сопоставима с месячной зарплатой. Только чтобы подзарядить севший аккумулятор перед выездом после долгого стояния в гараже. А дальше - пусть справляется генератор самой машины. По этой же причине в ней нет и индикации тока заряда и напряжения - ток заряда в начале стабилен, задается для имеющегося аккумулятора, а перед концом начинает снижаться. Напряжение больше выставленных 14,4 В не вырастет. Ввести такие измерители не представляет никакого труда, но это уже вопрос моддинга.
      Все схемы построены по топологии АТ. Считаю с полным основанием, что дежурное питание для подобного сабжа, являющегося "вещью в себе", совершенно не нужно! Это ведь не компьютер, который должен находиться в дежурном режиме, чтобы иметь возможность включения по сети или звонку модема! БП АТ десятилетиями работали без нареканий.
      Оригинальной является только печатная плата.

      Она избыточна - для всех трех вариантов (некоторые детали просто не запаиваются, + устанавливаются перемычки.
      Распайка и сборка сабжа на новой плате может вызвать возражения, мол "проще выпаять ненужные детали на готовой плате, зачем городить огород?" Хорошо знакомо. Дело в том, что такой подход хорош для опытных любителей/профессионалов, хорошо знакомых с топологией печатных плат компьютерных ИИП. В этой связи для опытных могу порекомендовать отличнейшую статью на "Радиокоте по переделке ИИП. Малоопытные же встречают на этом пути серьезные трудности, времени иногда занимает намного больше с непредсказуемым результатом, вплоть до неработоспособности. Тоже хорошо знакомо. И чем меньше опыта, тем больше трудностей. Давайте не поднимать по этому поводу холивар. "Кому нравится поп, а кому - попадья"...
      Вторая причина: могут иметься в наличии несколько неработающих ИИП, каждый по себе не запускаемый, а вот детали от них "из общей кучи" могут быть целыми.
      Поскольку цоколевка управляющего трансформатора по "низковольной" стороне бывает самой разной ( http://forum.cxem.ne...showtopic=65531 ) - нужно внимательно рассмотреть топологию печатки-"донора" и скорректировать печатку в этой её части. Реле - на 30А (автомобильное), служит защитой от переполюсовки. Выходной дроссель перемотан проводом диаметром 1 мм - 30 витков (индуктивность около 56...62 мкГ).
      Единственными деталями, которые придется докупить, является выпрямительный полумост, который должен быть не менее, чем на 80...100 В обратного напряжения и на планируемый ток (те, которые стоят в канале +5 В - имеют слишком малое обратное напряжение, а в канале +12 В - слишком малый прямой ток), реле (в автомагазинах) и токоизмерительные резисторы по 0,1 Ом (вместо них можно поставить шунты от тестера или просто куска высооомного провода, хоть от электроплитки).
      Фото готового сабжа.

      В архиве - то же самое, в формате sPlan и SprintLayout.
      P.S. Планировалось по результатам обсуждения разработать гамма-версию, с опциональным режимом десульфатации, но из-за недостатка времени эта работа до конца не сделана. Разработана схема (вариант "D") с "жесткой" стабилизацией выходного напряжения (токоизмерительный резистор исключен из цепи стабилизации напряжения):

      По этой схеме изготовлены 2 ИИП на +12 и +5 В, суммарной мощностью до 60 Вт, с общим ограничением выходного тока на уровне 5 А, на плате размерами 70 х 100 мм.

      Эксперимент по заряду аккумулятора емкостью 45 А*ч с их помощью увенчался полным успехом. Однако, отсутствуют цепи питания кулера, защита от переполюсовки, плата нестандартная для корпуса компьютерного БП и т.п. Печатка на этот вариант и еще один (4 закладки, как в Экселе)
      На все вопросы отвечу, замечания и уточнения "по делу" приму с благодарностью.
      добавление от Starichok51:
      вот здесь я дал схему на свой Вариант Е:
      Charger_Acid_Auto.rar
    • By Super Akk
      Здравствуйте, я работаю в Proteus и у меня возникла ошибка Simulation is not running in real time due to excessive CPU load
      Подскажите пожалуйста как её исправить
      Код прошивки:
      #include <lm3s300.h> // Graphic Display functions #include <glcd.h> // Font used for displaying text // on the graphic display #include <font5x7.h> // Declare your global variables here void main(void) { unsigned char odin[] = { 0x08, 0x00, 0x08, 0x00, #ifndef _GLCD_DATA_BYTEY_ 0x00, 0x10, 0x18, 0x14, 0x10, 0x10, 0x7C, 0x00, #else 0x00, 0x00, 0x48, 0x44, 0x7E, 0x40, 0x40, 0x00, #endif }; // Declare your local variables here // Variable used to store graphic display // controller initialization data GLCDINIT_t glcd_init_data; // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=(1<<CLKPCE); CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Port C initialization // Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0); // State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Disconnected // OC1B output: Disconnected // 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=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10); 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 // OC2A output: Disconnected // OC2B output: Disconnected ASSR=(0<<EXCLK) | (0<<AS2); TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20); TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (0<<CS20); TCNT2=0x00; OCR2A=0x00; OCR2B=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // Timer/Counter 2 Interrupt(s) initialization TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (0<<TOIE2); // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); EIMSK=(0<<INT1) | (0<<INT0); PCICR=(0<<PCIE2) | (0<<PCIE1) | (0<<PCIE0); // USART initialization // USART disabled UCSR0B=(0<<RXCIE0) | (0<<TXCIE0) | (0<<UDRIE0) | (0<<RXEN0) | (0<<TXEN0) | (0<<UCSZ02) | (0<<RXB80) | (0<<TXB80); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR1=(0<<AIN0D) | (0<<AIN1D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); // SPI initialization // SPI disabled SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0); // TWI initialization // TWI disabled TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE); // Graphic Display Controller initialization // The KS0108 connections are specified in the // Project|Configure|C Compiler|Libraries|Graphic Display menu: // DB0 - PORTB Bit 0 // DB1 - PORTB Bit 1 // DB2 - PORTB Bit 2 // DB3 - PORTB Bit 3 // DB4 - PORTB Bit 4 // DB5 - PORTB Bit 5 // DB6 - PORTB Bit 6 // DB7 - PORTB Bit 7 // E - PORTC Bit 0 // RD /WR - PORTC Bit 1 // RS - PORTC Bit 2 // /RST - PORTC Bit 3 // /CS1 - PORTC Bit 4 // /CS2 - PORTC Bit 5 // Specify the current font for displaying text glcd_init_data.font=font5x7; // No function is used for reading // image data from external memory glcd_init_data.readxmem=NULL; // No function is used for writing // image data to external memory glcd_init_data.writexmem=NULL; glcd_init(&glcd_init_data); glcd_putimage(0,0, odin, GLCD_PUTCOPY); while (1) { // Place your code here } } Схема прикреплена ниже в архиве

      Схема.rar
    • By Н_Д_А
      Всем привет).
      Может, кому-то эта статья  сэкономит много времени и нервов. 
      Недавно  по работе встретился с интересной задачкой.
      Нужно было передать на железку по порту RS485 информацию для проверки работоспособности последней.
      Так как не всегда имеется в ремонте вся система, то для начала нужно было посмотреть, на заведомо исправной системе, что же там между ними (железками) передаётся.
      Логический анализатор показал что девайсы общаются по не совсем стандартному, а по  9ти битному протоколу (USART 9n1).
      А это усложняло задачу, так-так известные мне терминальные программы его не поддерживают.  И без бубна не обойтись))).
      Начались поиски решения.
      Через некоторое время стало понятно, что AVR позволяет это делать и даже в даташите подробно это описывает.
      Дело за малым. Реализация задуманного))). 
      Все регистры выставлены по документу………..Для Atmega8a.
      void USART_Init( unsigned int speed) //Инициализация модуля USART { UBRRH = (unsigned char)(speed>>8); UBRRL = (unsigned char)speed; UCSRB=(1<<RXEN)|( 1<<TXEN); //Включаем прием и передачу по USART UCSRB |= (1<<RXCIE); //Разрешаем прерывание при передаче UCSRA |= (1<<U2X); //удвоение скорости UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0); UCSRB |= (1<<UCSZ2); // Включаем 9bit режим // Обращаемся именно к регистру UCSRC (URSEL=1) // ассинхронный режим (UMSEL=0), без контроля четности (UPM1=0 и UPM0=0) // 1 стоп-бит (USBS=0), 8-бит посылка (UCSZ1=1 и UCSZ0=1) // если (UCSZ1=1 и UCSZ0=1 и UCSZ2=1) 9bit mode. // UCSRC |= (1<<UPM1);//четность } По даташиту передача 9го бита происходит установкой или сбросом TXB8. 
      То есть, установили бит, передаётся 1 в старшем 9ом разряде, сбросили – 0. 
      void USART_Transmit( unsigned int data ) // функция передачи 9ти бит из даташита. { /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ) ; /* Copy ninth bit to TXB8 */ UCSRB &= ~(1<<TXB8); if ( data & 0x0100 ) //не понял, что они хотели этим сделать. UCSRB |= (1<<TXB8); /* Put data into buffer, sends the data */ UDR = data; } И вот незадача, числа размером до 1 байт передаются без проблем, а числа больше 0xFF (255) нет).
      А устройство передаёт числа до 510.
      Предлагаю решение.  Может и не самое лучшее, но вполне работоспособное.
      int main(void) { USART_Init (103);//9600 //------------------------------------------------------------------------------------ while(1) { for (i=0; i<22; i++) { code_simbol = simbol[i]; //символ из массива //-------------------------------------отправка в UART-------------------------------- if (code_simbol > 255) { pr=1; // флаг передачи символа больше 0xff (255 десятичное) } else { pr=0; // флаг передачи символа меньше 0xff } USART_Transmit(code_simbol,pr);//собственно сама функция отаравки } } } А теперь и сама функция передачи .
      void USART_Transmit( unsigned char data, uint8_t prisnak ) //Функция отправки по USART { while ( !(UCSRA & (1<<UDRE)) ); //Ожидание опустошения буфера приема if (prisnak==1) { UCSRB |= (1<<TXB8); //устанавливаем для передачи еденицы в старшем разряде } else { UCSRB &= ~(1<<TXB8); //сбрасываем старший разряд } /* Put data into buffer, sends the data */ UDR = data; //Начало передачи данных asm volatile ("nop"); Соответственно если число для предачи мньше 256 мы передаём его при нулевом 9ом бите.
      Ну а если больше то 9й бит выставляем в единицу.
      А вот и результат.

       
    • By eyuw
      Б/у контролеры холодильной установки: 1) Eliwell 974LX  на atmega16A-PU , 3 реле - характеристики на фото.Цена 15 бел.руб. 2) Eliwell IDPlus974  на atmega32A-PU, 3 реле - характеристики на фото.Цена 18 бел.руб. Корпуса без передней панели закрывающей цифровой индикатор, без датчиков температуры! г.Толочин, Витебская обл. Отправка по Беларуси наложенным платежом. Покупатель также оплачивает почтовые расходы. 


    • By АртемК
      Уже весь интернет прошерстить, помогите найти, или где он приставует, чтоб его достать нужен очень срочно, или может у кого то есть куплю!

×
×
  • Create New...