dimka76 62 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба On 9/28/2023 at 7:11 PM, EdgeAligned said: "Язык программирования Си" авторов Ритчи и Кернигана. Мне стилистика изложения не понравилась. Не стал ее читать. Читал других авторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба 2 hours ago, Pjatruha said: Спасибо за совет. Скачал ее практически сразу как пришел сюда. Стивен Прата хорошо читается. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба 24 минуты назад, dimka76 сказал: Читал других авторов. А что вы читали? Т.к я ничего не знаю в этой теме, то мне сложно было выбирать. Одни люди Хают эту гнигу, другие говорят, что это бестселлер. Сколько людей - столько и мнений. И это нормально. В любом случае, эта книга вызвала возле себя много отзывов, мнений и суждений. О ней знают многие. Поэтому я решил, что стоит начать с нее. 19 минут назад, izerg сказал: Стивен Прата хорошо читается. Вы о ней говорите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба On 9/29/2023 at 1:26 PM, Pjatruha said: А что вы читали? Не помню, давно это было. Сейчас и в интернете много сайтов оформленных в виде учебников. Вот, например - http://cpp.com.ru/shildt_spr_po_c/index.html Можно просто тупо стандарт читать ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба 37 minutes ago, Pjatruha said: Вы о ней говорите? да, обычно к ней упражнения в архиве. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба Решил посмотреть осциллографом форму сигнала на ножках ЖКИ. Что-то мне она не очень нравится. Наблюдаются всплески при переключении. А на COM выводах присутствует шум в среднем положении. С чем это может быть связано, со схемотехникой отладочной платы? Пульсации по лини 3.3 вольт в пределах 0,002 вольт(осцоллограф их не видит) пробовал запитывал плату от USB ноутбука, от повербанка и от программатора ST-Link. Результат во всех случаях одинаковый. Но есть и положительный момент. Частота совпадает с частотой в паяльнике. 😊 Спойлер Осциллограмма по питанию 3.3 вольта. Предел осциллографа выставлен на 0,01В\дел Осциллограмма на COM выводе Осциллограмма на SEG выводе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба On 9/29/2023 at 4:55 PM, Pjatruha said: Решил посмотреть осциллографом форму сигнала на ножках ЖКИ. Что-то мне она не очень нравится. Наблюдаются всплески при переключении. А на COM выводах присутствует шум в среднем положении. С чем это может быть связано, со схемотехникой отладочной платы? Пульсации по лини 3.3 вольт в пределах 0,002 вольт(осцоллограф их не видит) пробовал запитывал плату от USB ноутбука, от повербанка и от программатора ST-Link. Результат во всех случаях одинаковый. Теплый ламповый осциллограф На одно канале не очень информативно. Не видно как переключаются SEG относительно COM. Всплески на фронтах - не согласованный щуп. Шум в среднем положении - как как у вас это среднее положение организовано ? Резистивный делитель ? Выключите паяльник. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 29 сентября, 2023 Опубликовано 29 сентября, 2023 (изменено) · Жалоба 12 часов назад, dimka76 сказал: Не видно как переключаются SEG относительно COM. Что есть, то есть. Но судя по тому, что на ЖКИ отображается то, что было задумано, то переключение SEG и COM относительно друг друга корректное. 12 часов назад, dimka76 сказал: Всплески на фронтах - не согласованный щуп. Почему тогда осциллограммы снятые этим же щупом щупом в схеме паяльника таких всплесков не имеют(см. осциллограммы на стр.5 этого форума)? Возможно дело в том, что в схеме паяльника осциллограммы я снимал без ЖКИ? Осциллограммы снятые с макетной платы были сделаны с подключенным ЖКИ. На сколько я понял, ЖКИ это конденсатор. Наверное поэтому и всплески. А вот про шум на COM линиях объяснений у меня пока нет. Средняя точка образована резистивными делителями с такими же номиналами, как и в оригинальной схеме(см. стр. 4) Спойлер Фото отладочной платы Изменено 30 сентября, 2023 пользователем Pjatruha опечатки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба 1 hour ago, Pjatruha said: Что есть, то есть. Но судя по тому, что на ЖКИ отображается то, что было задумано, то переключение SEG и COM относительно друг друга корректное. Почему тогда осциллограммы снятые этим же щупом щупом в схеме паяльника таких всплесков не имеют(см. осциллограммы на стр.5 этого форума). Возможно дело в том, что в схеме паяльника осциллограммы я снимал без ЖКИ. Осциллограммы снятые с макетной платы были сделаны с подключенным ЖКИ. На сколько я понял, ЖКИ это конденсатор. Наверное поэтому и всплески. А вот про шум на COM линиях объяснений у меня пока нет. Средняя точка образована резистивными делителями с такими же номиналами, как и в оригинальной схеме(см. стр. 4) элементы исходной схемы и макетной схемы - одинаковы? Схема соединения и номиналы одинаковы? в чем отличие? ... пучек проводов + разъемы макета - против коротких соединений исходной схемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба 12 минут назад, izerg сказал: пучек проводов + разъемы макета - против коротких соединений исходной схемы? Да, отличия только в этом. Ну и схема питания МК отличается. Отличаются линейные стабилизаторы на 3.3 вольта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 29 сентября, 2023 Опубликовано 29 сентября, 2023 · Жалоба On 9/29/2023 at 9:59 PM, Pjatruha said: Да, отличия только в этом. Ну и схема питания МК отличается. Отличаются линейные стабилизаторы на 3.3 вольта. Извините, лень перечитывать всю тему. А что у вас за микроконтроллер ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 30 сентября, 2023 Опубликовано 30 сентября, 2023 · Жалоба dimka76, тема действительно разрослась. 🙂 В схеме паяльника установлен STM8S003F3P6, а на отладочной плате стоит STM8S103F3P6. Если я не ошибаюсь, отличаются они только количеством циклов перезаписи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 30 сентября, 2023 Опубликовано 30 сентября, 2023 · Жалоба 14 часов назад, Pjatruha сказал: Осциллограммы снятые с макетной платы были сделаны с подключенным ЖКИ. Да, дело было именно в этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pjatruha 10 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба Настало время вывода осмысленной информации на ЖКИ. 🙂 Спойлер Эту программу я написал как благодарность всем неравнодушным к моему рвению. Большое вам спасибо, за то что поделились со мной своими знаниями. Спойлер #include "IOSTM8S103F3.h" volatile int x=0; volatile char i=1,j=0,k=1; void interrupt_init(void); #pragma vector=TIM1_OVR_UIF_vector __interrupt void Pin6_interrupt(void) { x++; k++; if (k == 9) { k=1; } j=k-1; if (x == 10000) { x=0; } TIM1_SR1_bit.UIF = 0; //Cброс флага прерывания } void com_D12() { if (PC_DDR_bit.DDR3 == 1) { PC_DDR_bit.DDR3 = 0; // Вход com D9 PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен } PC_DDR_bit.DDR6 = 1; // Выход com D12 PC_ODR_bit.ODR6 = 1; // Высокий уровень на выходе PC_CR1_bit.C16 = 1; // push-pull } void com_D12_() { PC_ODR_bit.ODR6 = 0; // Низкий уровень на выходе com D12 } void com_D11() { PC_DDR_bit.DDR5 = 1; // Выход com D11 PC_ODR_bit.ODR5 = 1; // Высокий уровень на выходе PC_CR1_bit.C15 = 1; // push-pull PC_DDR_bit.DDR6 = 0; // Вход com D12 PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен } void com_D11_() { PC_ODR_bit.ODR5 = 0; // Низкий уровень на выходе com D11 } void com_D10() { PC_DDR_bit.DDR4 = 1; // Выход com D10 PC_ODR_bit.ODR4 = 1; // Высокий уровень на выходе PC_CR1_bit.C14 = 0; // push-pull PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен } void com_D10_() { PC_ODR_bit.ODR4 = 0; // Низкий уровень на выходе com D10 } void com_D9() { PC_DDR_bit.DDR3 = 1; // Выход com D9 PC_ODR_bit.ODR3 = 1; // Высокий уровень на выходе PC_CR1_bit.C13 = 1; // push-pull PC_DDR_bit.DDR4 = 0; // Вход com D10 PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен } void com_D9_() { PC_ODR_bit.ODR3 = 0; // Низкий уровень на выходе com D9 } void COM() { if (k == 1) { com_D12(); } if (k == 2) { com_D12_(); } if (k == 3) { com_D11(); } if (k == 4) { com_D11_(); } if (k == 5) { com_D10(); } if (k == 6) { com_D10_(); } if (k == 7) { com_D9(); } if (k == 8) { com_D9_(); } if (j == (k-2)) { j=k-1; } } char DIGIT_PUSTO[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {1,0, 1,0, 1,0, 1,0}, // (0) {1,0, 1,0, 1,0, 1,0}, // (1) }; char DIGIT_C[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {0,1, 1,0, 1,0, 1,0}, //14 (1) {0,1, 1,0, 0,1, 0,1}, //13 (0) }; char DIGIT_P[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {0,1, 0,1, 0,1, 1,0}, //14 (1) {0,1, 1,0, 0,1, 1,0}, //13 (0) }; char DIGIT_A[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {0,1, 0,1, 0,1, 1,0}, //14 (1) {0,1, 0,1, 0,1, 1,0}, //13 (0) }; char DIGIT_I[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {1,0, 0,1, 0,1, 1,0}, //14 (1) {0,1, 1,0, 0,1, 0,1}, //13 (0) }; char DIGIT_B[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {0,1, 1,0, 0,1, 1,0}, //14 (1) {0,1, 0,1, 0,1, 0,1}, //13 (0) }; char DIGIT_O[2][8] = { //0 1 2 3 4 5 6 7 //1 2 3 4 5 6 7 8 //12 11 10 09 {0,1, 0,1, 0,1, 1,0}, //14 (1) {0,1, 1,0, 0,1, 0,1}, //13 (0) }; int main (void) { PC_DDR_bit.DDR3 = 0; // Вход com D9 PC_CR1_bit.C13 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C23 = 0; // Прерывая запрещены PC_DDR_bit.DDR4 = 0; // Вход com D10 PC_CR1_bit.C14 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C24 = 0; // Прерывая запрещены PC_DDR_bit.DDR5 = 0; // Вход com D11 PC_CR1_bit.C15 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C25 = 0; // Прерывая запрещены PC_DDR_bit.DDR6 = 0; // Вход com D12 PC_CR1_bit.C16 = 0; // Подтягивающий резистор отключен PC_CR2_bit.C26 = 0; // Прерывая запрещены PC_DDR_bit.DDR7 = 1; // Выход SEG D13 PC_CR1_bit.C17 = 1; // push-pull PC_CR2_bit.C27 = 0; // Cкорость переключения 2МГц PD_DDR_bit.DDR2 = 1; // Выход SEG D14 PD_CR1_bit.C12 = 1; PD_CR2_bit.C22 = 0; PD_DDR_bit.DDR6 = 1; // Выход SEG D5 PD_CR1_bit.C16 = 1; PD_CR2_bit.C26 = 0; PA_DDR_bit.DDR1 = 1; // Выход SEG D6 PA_CR1_bit.C11 = 1; PA_CR2_bit.C21 = 0; PA_DDR_bit.DDR2 = 1; // Выход SEG D7 PA_CR1_bit.C12 = 1; PA_CR2_bit.C22 = 0; PA_DDR_bit.DDR3 = 1; // Выход SEG D8 PA_CR1_bit.C13 = 1; PA_CR2_bit.C23 = 0; PB_DDR_bit.DDR5 = 1; // Настройка 5-го бита порта B на вывод. PB_ODR_bit.ODR5 = 1; // Гашение светодиода. PB_CR1_bit.C15 = 1; // Переключение порта в режим push-pull. PB_CR2_bit.C25 = 0; // Cкорость переключения до 2 МГц //Частота переполнений = 2000000Гц / 4 / 500 = 1000 Гц(1 мс) TIM1_PSCRH = 0x00;//записываем 2 старших байта числа 3(4-1) в hex формате в регистр предделителя TIM1_PSCRL = 0x03;//записываем 2 младших байта числа 3(4-1)в hex формате в регистр предделителя TIM1_ARRH = 0x01; //записываем 2 старших байта числа 500 в hex формате в регистр автоперезагруски TIM1_ARRL = 0xF4; //записываем 2 младших байта числа 500 в hex формате в регистр автоперезагруски TIM1_CR1_bit.DIR = 0; // Cчет вверх TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика TIM1_EGR_bit.UG = 1; //Вызываем Update Event для загрузки предделителя TIM1_IER_bit.UIE = 1; //Разрешаем прерывание TIM1_CR1_bit.CEN = 1; //Запускаем таймер asm("rim"); while(1) { if (x < 1000) // _ _ С { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_C[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_PUSTO[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_PUSTO[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_PUSTO[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D7 } if (x >= 1000 && x < 2000) // _ С П { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_P[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_P[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_C[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_C[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_PUSTO[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D7 } if (x >= 2000 && x < 3000) // С П А { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_A[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_A[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_P[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_P[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_C[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D7 } if (x >= 3000 && x < 4000) // П А С { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_C[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_A[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_A[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_P[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_P[i][j]; // seg D7 } if (x >= 4000 && x < 5000) // А С И { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_I[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_I[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_C[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_C[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_A[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_A[i][j]; // seg D7 } if (x >= 5000 && x < 6000) // С И Б { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_B[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_B[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_I[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_I[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_C[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_C[i][j]; // seg D7 } if (x >= 6000 && x < 7000) // И Б О { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_O[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_O[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_B[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_B[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_I[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_I[i][j]; // seg D7 } if (x >= 7000 && x < 8000) // Б О _ { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_PUSTO[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_O[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_O[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_B[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_B[i][j]; // seg D7 } if (x >= 8000 && x < 9000) // О _ _ { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_PUSTO[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_PUSTO[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_PUSTO[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_O[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_O[i][j]; // seg D7 } if (x >= 9000 && x < 10000) // _ _ _ { COM(); // DIGIT_1 i=!i; PD_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D14 i=!i; PC_ODR_bit.ODR7 = DIGIT_PUSTO[i][j]; // seg D13 // DIGIT_2 i=!i; PD_ODR_bit.ODR6 = DIGIT_PUSTO[i][j]; // seg D5 i=!i; PA_ODR_bit.ODR1 = DIGIT_PUSTO[i][j]; // seg D6 // DIGIT_3 i=!i; PA_ODR_bit.ODR3 = DIGIT_PUSTO[i][j]; // seg D8 i=!i; PA_ODR_bit.ODR2 = DIGIT_PUSTO[i][j]; // seg D7 } } } 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izerg 9 4 октября, 2023 Опубликовано 4 октября, 2023 · Жалоба 24 minutes ago, Pjatruha said: Настало время вывода осмысленной информации на ЖКИ. 🙂 ::) а Цифры то - где ?:) раз уже буквы получились, то с цифрами то вообще проблемы не должно было быть ?:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться