Jump to content

cargo29

Members
  • Content Count

    631
  • Joined

  • Last visited

Community Reputation

-17 Плохой

About cargo29

  • Rank
    Завсегдатай
  • Birthday 06/29/1988

Контакты

  • ICQ
    1232323

Информация

  • Пол
    Мужчина
  • Город
    tobolsk

Электроника

  • Стаж в электронике
    3-5 лет

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @Гость Константин Было похожее, 2 случая, но на STM32F103C8T6. Первый сдох программатор, определялся как неизвестное устройство. Второе было, поставил перемычку в BOOT очистил с помощью STM32CubeProgrammer и вернул после обратно перемычку.
  2. Если сделать проверочный то выводит все корректно. for(int i=144; i<208; i++){ ST7789_DrawChar_7x11(10, 10, YELLOW, BLUE, 0, i); ST7789_DrawChar_5x8(50, 10, YELLOW, BLUE, 0, i); HAL_Delay(500);
  3. @hasl Подскажи нюанс не знаю. char testbuf[6]={'п','р','и','в','е','т'}; UTF-8 Буквы Р и Т не отображаются корректно, Р как обычный пробел, Т как У с галочкой сверху. В CP1251 вообще не выводит почему то даже каракули на русском.
  4. Понимаю это, но не понимаю в чем отличие функций, что одна выводит а другая нет. void ST7789_print_5x8(uint16_t x, uint16_t y, uint16_t TextColor, uint16_t BgColor, uint8_t TransparentBg, char *str) { unsigned char type = *str; if (type>=128) x = x - 3; while (*str) { ST7789_DrawChar_5x8(x, y, TextColor, BgColor, TransparentBg, *str++); unsigned char type = *str; if (type>=128) x=x+3; else x=x+6; } } void ST7789_print_7x11(uint16_t x, uint16_t y, uint16_t TextColor, uint16_t BgColor, uint8_t TransparentBg, char *str) { unsigned char type = *str; if (type>=128) x = x - 3; while (*str) { ST7789_DrawChar_7x11(x, y, TextColor, BgColor, TransparentBg, *str++); unsigned char type = *str; if (type>=128) x=x+8; else x=x+8; } }
  5. @hasl Да помогло с кодировкой, спасибо. Но почему то так и не выводит русские буквы. Если не сложно посмотрите ST7789_print_5x8 в UTF8 выводит русские ST7789_print_7x11 в UTF8 англ выводит, а русские каракули. ST7789_DrawChar_7x11по отдельности символ выводит правильно. В СР1251 выводят только англ. font5x7.h font7x11.h st7789.c st7789.h
  6. @hasl Уже пробовал сделать следующее, скопировал содержимое, удалил файл main, создал с помощью notepad файл main с кодировкой уже нужной и перенес все данные в него. Но тут же при открытии в cubeide он опять меняет его на utf8
  7. Приветствую, решил взяться за stm32. stm32f103c8T6 дисплейчик st7789 нашел библиотечку простую, но русские буквы каракули, в общем в cubeide выставил сразу кодировку CP1251, но почему то не меняется кодировка в самом файле, проверял notepad++ так и остается utf8 может кто знает как сменить кодировку? или это косяк самой программы?
  8. @Yurkin2015 Спасибо большое. Все работает.
  9. /******************************************************* This program was created by the CodeWizardAVR V3.12 Advanced Automatic Program Generator © Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 14.12.2020 Author : Company : Comments: Chip type : ATmega8A Program type : Application AVR Core Clock frequency: 8,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *******************************************************/ #define F_CPU 8000000UL #include <mega8.h> #include <alcd.h> #include <stdio.h> #include <delay.h> #include <ds18b20.h> #include <1wire.h> /* #asm .equ __w1_port=0x18 ;PORTB .equ __w1_bit=1 #endasm */ char lcd_buf[17], lcd_buf2[17]; unsigned int NewState,OldState,upState,downState,time=10,temp=100,i=0,temp_18b20; bit but=0; bit str=0; bit a=0; unsigned int min=0,sec=0,im=0; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { ////////////////////////////////////////////////////////////////////// //Стар реле и переключение настроек if (!(PINC&(1<<PORTC4))) //старт-стоп { i++; if (i>65000){ if(str==0){ str=1; PORTB=(1<<PORTB0); PORTC=(1<<PORTC1); while(!(PINC&(1<<PORTC4))); } else{ str=0; PORTB=(0<<PORTB0); PORTC=(0<<PORTC1); while(!(PINC&(1<<PORTC4))); } i=0; } but=1; }else{i=0;} if ((PINC&(1<<PORTC4))&&(but==1)&&(a==0)) //первая настройка { a=1; but=0; } if ((PINC&(1<<PORTC4))&&a==1&&but==1) //вторая настройка { a=0; but=0; } ///////////////////////////////////////////////////////////////////////////////// // Энкодер обработка выводов NewState=PINC&((1<<PORTC2)|(1<<PORTC3)); if(NewState!=OldState) { switch(OldState) { case 8: { if(NewState == 12) upState++; if(NewState == 0) downState++; break; } case 0: { if(NewState == 8) upState++; if(NewState == 4) downState++; break; } case 4: { if(NewState == 0) upState++; if(NewState == 12) downState++; break; } case 12: { if(NewState == 4) upState++; if(NewState == 8) downState++; break; } } OldState=NewState; } TCNT0=0x00; } ///////////////////////////////////////////////////////////////////////////////////////////////////// //таймер счета времени внешний или внутрений кварц interrupt [TIM2_COMP] void timer2_comp_isr(void) { im++; if (im>=30){ sec++; im=0; temp_18b20=ds18b20_temperature(0); } if (sec>=60) { sec=0; min++; } if(min>=60) { min=0; } TCNT2=0x00; } ///////////////////////////////////////////////////////////////////////////////////////////////////// void main(void) { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (1<<DDB0); PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (1<<DDC1) | (0<<DDC0); PORTC=(0<<PORTC6) | (0<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// TCCR0=(0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //настройки таймера 2(предделитель 1024, от внутреенего источника) ASSR=0<<AS2; TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (1<<CS22) | (1<<CS21) | (1<<CS20); TCNT2=0x00; OCR2=0x00; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Настройки прерывания Т0 по переполнению, Т2 по совпадению. TIMSK=(1<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (1<<TOIE0); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// lcd_init(16); w1_init(); ds18b20_init(0,0,125,DS18B20_12BIT_RES); #asm("sei") while (1) { /*switch (a) { case 0: { */ if (upState >= 1) { temp++; upState = 0; } if (downState >= 1) { temp--; downState = 0; }/* break; } case 1: { if (upState >= 1) { time++; upState = 0; } if (downState >= 1) { time--; downState = 0; } break; } }; */ lcd_clear(); lcd_gotoxy(0,0); /* sprintf(lcd_buf,"t=%3d\xdf\C%d%d",temp,str,time); // sprintf(lcd_buf2,"Time=%d:%d", min, sec); sprintf(lcd_buf2,"Time=%d:%d", min, sec); lcd_puts(lcd_buf);*/ sprintf(lcd_buf2,"%d=%d=%d=%d=%d", temp, time,str,NewState,a); lcd_gotoxy(0,1); lcd_puts(lcd_buf2); delay_ms(30); } } Добрый день. Прошу не ругать сильно, начинаю только осваивать. Столкнулся с проблемой, что после выполнения этой команды if (!(PINC&(1<<PORTC4))) //старт-стоп { i++; if (i>65000){ if(str==0){ str=1; PORTB=(1<<PORTB0); PORTC=(1<<PORTC1); while(!(PINC&(1<<PORTC4))); } else{ str=0; PORTB=(0<<PORTB0); PORTC=(0<<PORTC1); while(!(PINC&(1<<PORTC4))); } i=0; } перестает считывать данные с портов NewState=PINC&((1<<PORTC2)|(1<<PORTC3)); переменные выводил на дисплей, гляньте опытным глазом, а то целый день потратил и не нашел ошибку.
  10. Добрый день, хотелось бы собрать для себя пу на 3525 (первый раз на ней собираю), задача ее стабилизация напряжения и тока с шунта. на 10 вывод сделан через резистор длдя считывания тока протекающего через транзистор. В данном случае будет для полумоста. Что посоветуете переделать, убрать или изменить? нарисовано криво.... easyeda https://easyeda.com/cargo29/pu_sg3525
  11. @РадиоНастройщик дешевым китайским осциллографом посмотрел, сигнал приходит со стороны ноутбука, обратно с блока не идет.
  12. @РадиоНастройщик на преобразователе стоит одна микросхема и пару конденсаторов и больше ничего. Между Vcc и любым выводом показывает 3 МОм, у HC-12 между Vcc и Tx 3,5 кОм
  13. @РадиоНастройщик на разьеме гбо rx tx на них 3,3В, питающий провод 12В
  14. @РадиоНастройщик hc 12 при питании 5В на выводах rx tx 5В, а на разъеме гбо 3.3В
  15. @РадиоНастройщик 10 метров не проверял но через бетонную стену берет точно
×
×
  • Create New...