Статистика
Время:
Зарегистрированных: 88403
Последним зарегистрирован: 777KVP777
Рекорд посещаемости: 12585
Групп пользователей: 4
 Группы:
[Admin] [Cоучастник] [Автор] [Модератор]
 Сейчас на сайте
 Всего: 914
 Гостей: 907
 Анонимных: 0
 Пользователей: 7
 Зарегистрированные:
viktoras 117 NICK_BNP Wolfianet vaneok Bashla ded alexx_57
Forum Rules Внимание!

Внимание! Перед тем как создавать тему на форуме, воспользуйтесь поиском! Пользователь создавший тему, которая уже была, будет немедленно забанен! Читайте правила названия тем. Пользователи создавшие тему с непонятными заголовками, к примеру: "Помогите, Схема, Резистор, Хелп и т.п." также будут заблокированны навсегда. Пользователь создавший тему не по разделу форума будет немедленно забанен! Уважайте форум, и вас также будут уважать!

Страницы: (10) [1] 2 3 4 5 6 7 8 9 10  ( Перейти к первому непрочитанному сообщению ) Ответить Новая тема Новый опрос

> rda5807М еще один приемник, на семисегментнике
bulat
Сообщение: # 764504   Jan 20 2018, 12:05 AM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



Возможно кому то будет интересно...
МК atmega8,индикация на 4-х разрядном семисегментном индикаторе ОК
Из органов управления только энкодер,перестройка по частоте только ручная,31 запоминаемый в еепром канал

Алгоритм-первое включение-частота 88,0 МГц,поворот энкодера вправо/влево=изменение частоты вверх/вниз ,если нажать и крутить энкодер частота меняется с шагом 1 МГц,отпутили-шаг 100 кГц

набрали нужную частоту,нажимаем кнопку энкодера и удерживаем,через 3 сек частота запишется в еепром в канал 1 (на экране кратковременно загорится CH 1),снова выбираем частоту и снова сохраняем так же,всего сохраненных частот не более 31

если кратковременно нажимать кнопку энкодера то переключаемся по каналам,нажали-кратковременно светится номер канала (например СН 5),затем частота

если надо удалить частоту из памяти выбираем ее кратковременным нажатием энкодера,выключаем приемник,нажимаем кнопку энкодера и удерживая ее нажатой включаем приемник,на экране будет "- - - -",отпускаем кнопку энкодера,частота сотрется из памяти,если есть записанные частоты выше стертого канала то они перепишутся на канал ниже

фузы- HIGH=C9 LOV=C3
на плате и в схеме предусмотрены кнопки но они пока не задействованы,планируется переход на атмега88 и расширение функционала
Жду предложения и замечания здесь

Присоединённый файл ( Кол-во скачиваний: 979 )
Присоединённый файл  __________________________________________.zip
PMEmail Poster
Top
bulat
Сообщение: # 764814   Jan 21 2018, 10:25 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



дальнейшее развитие,теперь все по новому...

Из органов управления энкодер (скнопкой) и еще 2 кнопки (STEREO и BASS)

При первом включении частота 88,0 МГц,вращение энкодера=перестройка частоты с шагом 100 кгц

Короткое нажатие на кнопку энкодера-переходим в регулировку громкости,на экране ГР08(громкость=8)

Еще одно нажатие-переход обратно на перестройку по частоте

Кнопки-

1) кнопка BASS-короткое нажатие включение/выключение басов,длинное нажатие(более 2 сек)-переход из режима перестройки частоты в режим перестройки по каналам (если хоть одна частота записана в память),на экране CHAN,крутим энкодер-перестраиваемся по записанным в память каналам,короткое нажатие на энкодер-регулировка громкости,еще короткое нажатие на энкодер-обратно перестройка по каналам,короткое нажатие BASS=вкл/выкл басов,нажатие более 2 сек-переход из режима перестройки по каналам в режим перестройки по частоте

2) кнопка STEREO-короткое нажатие включение/выключение стерео,длинное нажатие(более 2 сек)-в зависимости от того в каком режиме (перестройка по частотам/по каналам) находимся-

если в режиме перестройки по частотам то запись частоты в память

если в режиме перестройки по каналам то стирание частоты из памяти

включение приемника (когда приемник выключен) коротким нажатием энкодера,выкл приемника длинным нажатием энкодера

поддержка индикаторов с ОК и ОА,выбор -если PORTC.3 никуда не подключен то общий анод,если подключен к минусу то общий катод

Программа базовая,мк ATMEGA8 (HIGH FUSE= C9 LOW FUSE=83 )
Индикатор-любой с общим катодом или анодом
Энкодер-с кнопкой любой,RDA5807M,Стаб 3,3 в-xc6206p332mr





Присоединённый файл ( Кол-во скачиваний: 677 )
Присоединённый файл  vers_001.zip
PMEmail Poster
Top
bulat
Сообщение: # 764914   Jan 22 2018, 08:30 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



прошивка 76-108 МГц,шаг 100 кгц

во всех прошивках использован RDA5807M ,за другие 5807 не скажу-не юзал

Это сообщение отредактировал bulat - Jan 22 2018, 09:21 PM

Присоединённый файл ( Кол-во скачиваний: 909 )
Присоединённый файл  programm_76_108_003.hex
PMEmail Poster
Top
bulat
Сообщение: # 765154   Jan 24 2018, 07:52 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



прошивка 76-108 мгц общий анод и катод (если PORTC.3 никуда не подключен то общий анод,если подключен к минусу то общий катод,прошивка постом выше ок)

Присоединённый файл ( Кол-во скачиваний: 960 )
Присоединённый файл  programm_76_108_oa_ok.hex
PMEmail Poster
Top
bulat
Сообщение: # 765169   Jan 24 2018, 08:54 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



ну и напоследок прошивка с отключением индикации,подробнее в файле тхт

Присоединённый файл ( Кол-во скачиваний: 857 )
Присоединённый файл  programm_88_108_oa_ok_sleep_12.hex
PMEmail Poster
Top
bulat
Сообщение: # 765170   Jan 24 2018, 08:55 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



тхт

Присоединённый файл ( Кол-во скачиваний: 507 )
Присоединённый файл  programm_88_108_oa_ok_sleep_12.txt
PMEmail Poster
Top
bulat
Сообщение: # 765172   Jan 24 2018, 08:55 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



исходник BASCOM AVR 2.0.7.8


Присоединённый файл ( Кол-во скачиваний: 818 )
Присоединённый файл  programm_88_108_oa_ok_sleep_12.bas
PMEmail Poster
Top
sonyyy
Сообщение: # 765184   Jan 24 2018, 10:19 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



Может, подскажешь, есть сетка частот, как сделать, чтоб после выкл вкл включалось последняя станция? Сейчас все работает, но после выкл и вкл через раз возвращается последняя включенная станция.

#define F_CPU 8000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <avr/eeprom.h>

#include "i2c.h"

#define ST_UP (PINC & (1<<0)) //кнопки
#define ST_DN (PINC & (1<<1))

unsigned char station=1;
uint8_t station_ee EEMEM ;

static uint8_t writeBuf[9];

void I2C_write (void) {

i2c_start_cond();
i2c_send_byte(0x20);
i2c_send_byte(writeBuf[0]);
i2c_send_byte(writeBuf[1]);
i2c_send_byte(writeBuf[2]);
i2c_send_byte(writeBuf[3]);
i2c_send_byte(writeBuf[4]);
i2c_send_byte(writeBuf[5]);
i2c_send_byte(writeBuf[6]);
i2c_send_byte(writeBuf[7]);
i2c_stop_cond();
}

void FM__init (void) {
writeBuf[0] = 0b11110000;
writeBuf[1] = 0b10000101;
writeBuf[2] = 0;
writeBuf[3] = 0;
writeBuf[4] = 0b01000011;
writeBuf[5] = 0b00000000;
writeBuf[6] = 0b00001000;
writeBuf[7] = 0b10001111;
I2C_write();
return;
}
//******************************************************************** сетка частоты
void set_station (uint8_t st) {
if (st==1) {writeBuf[2] = 0b11101010; writeBuf[3] = 0b10110011;}
if (st==2) {writeBuf[2] = 0b11101010; writeBuf[3] = 0b11110011;}
if (st==3) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b00110011;}
if (st==4) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b01110011;}
if (st==5) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b10110011;}
if (st==6) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b11110011;}
if (st==7) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b00110011;}
if (st==8) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b01110011;}
if (st==9) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b10110011;}
if (st==10) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b11110011;}
if (st==11) {writeBuf[2] = 0b11101101; writeBuf[3] = 0b00110011;}

eeprom_write_byte(&station_ee, st);
I2C_write();
return;
}

int main (void)
{
DDRC &= ~((1<<0)|(1<<1)|(1<<2)|(1<<3));//Настройка кнопок
PORTC|=(1<<0)|(1<<1)|(1<<2)|(1<<3);
i2c_init();
FM__init();

sei();// прерывания

station=eeprom_read_byte(&station_ee);
set_station(station);

while(1){
if (!ST_UP) {station++; if (station>11) {station=1;} set_station(station); _delay_ms(200);}
if (!ST_DN) {station--; if (station<1) {station=11;} set_station(station); _delay_ms(200);}
}
} // end main
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765185   Jan 24 2018, 10:28 PM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Последняя выбранная станция, или последняя в списке?
PMEmail Poster
Top
sonyyy
Сообщение: # 765186   Jan 24 2018, 10:38 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



последняя выбранная.
Я еще добавил 1-а сегментный индикатор от 0 и до 9 соответственно 1-11канал. Включаю, ставлю 4канал все работает, принимает индикатор показывает 4 выключаю, включаю индикатор показывает 4 но приема нет (шипение) не та частота нажимаю 1 верх и 1 вниз все норм 4канал, просто не удобно так надо чтоб при выключение сохранялся канал, а не каждый раз щелкать вверх в низ по диапазону.

Еще, наверное, косяк я записываю так понял сразу по очереди все каналы при включение.

void set_station (uint8_t st) {
if (st==1) {writeBuf[2] = 0b11101010; writeBuf[3] = 0b10110011;}
if (st==2) {writeBuf[2] = 0b11101010; writeBuf[3] = 0b11110011;}
if (st==3) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b00110011;}
if (st==4) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b01110011;}
if (st==5) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b10110011;}
if (st==6) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b11110011;}
if (st==7) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b00110011;}
if (st==8) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b01110011;}
if (st==9) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b10110011;}
if (st==10) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b11110011;}
if (st==11) {writeBuf[2] = 0b11101101; writeBuf[3] = 0b00110011;}

eeprom_write_byte(&station_ee, st);
I2C_write();
return;
}

Это сообщение отредактировал sonyyy - Jan 24 2018, 10:59 PM
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765189   Jan 24 2018, 10:59 PM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Не всегда возвращается то, что было до выключения, так?
PMEmail Poster
Top
sonyyy
Сообщение: # 765190   Jan 24 2018, 11:02 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



QUOTE
Не всегда возвращается то, что было до выключения, так?

да все правильно чего то не хватает, вроде работает но криво..
Если выключить и подождать больше 3-4сек, то при включение встает не понятная частота, предполагаю либо первая или последняя, но если быстро выл-вкл то встает именно последняя включенная. А главное индикатор сохраняется по показанием четко...

Это сообщение отредактировал sonyyy - Jan 24 2018, 11:10 PM
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765191   Jan 24 2018, 11:10 PM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Трудно сказать, много уязвимых мест в коде, которые могут вызвать подобное поведение.

Полный код на текущий момент не помешает, крайне желательно zip архивом. Не понятно, в каком месте программы индикатор сохраняется. Может фигню на приемник кидает уже после того как вывелось на экран.

Это сообщение отредактировал vitalik_b - Jan 24 2018, 11:13 PM
PMEmail Poster
Top
sonyyy
Сообщение: # 765194   Jan 24 2018, 11:31 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



проект

Это сообщение отредактировал sonyyy - Jan 24 2018, 11:32 PM

Присоединённый файл ( Кол-во скачиваний: 484 )
Присоединённый файл  __________RDA.rar
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765195   Jan 24 2018, 11:37 PM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Камень ATmega328p?
PMEmail Poster
Top
sonyyy
Сообщение: # 765196   Jan 24 2018, 11:40 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



Да пока, ATmega328p потом чего нибудь попроще, после отладки.
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765205   Jan 25 2018, 02:34 AM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Попробовать так что ли. Я там еще посмотрел бегло, библиотека i2c кривейшая до ужаса, так что возможно некие проблемы могут быть еще и с ней.

#define F_CPU 8000000L
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <avr/eeprom.h>

#include "i2c.h"


#define ST_UP (PINC & (1<<0)) //кнопки
#define ST_DN (PINC & (1<<1))

#define MAX_INIT_DATA 8
uint8_t TABLE__init[MAX_INIT_DATA] PROGMEM = {
0b11110000,
0b10000101,
0,
0,
0b01000011,
0b00000000,
0b00001000,
0b10001111
};


#define MAX_CHANNELS 7
uint8_t TABLE__channels[MAX_CHANNELS*2] PROGMEM = {
0b11101011, 0b01010011,/*110.550MHz*/
0b11101011, 0b10010011,/*110.575MHz*/
0b11101011, 0b11010011,/*110.600MHz*/
0b11101100, 0b00010011,/*110.625MHz*/
0b11101100, 0b01010011,/*110.650MHz*/
0b11101100, 0b10010011,/*110.675MHz*/
0b11101100, 0b11010011 /*110.700MHz*/
};


uint8_t TABLE__display[MAX_CHANNELS] PROGMEM = {
0b10011110,//1 индикатор.
0b00100100,//2
0b00001100,//3
0b10011000,//4
0b01001000,//5
0b01000000,//6
0b00011110//7
};

uint8_t station;

uint8_t station_ee EEMEM;

static uint8_t writeBuf[MAX_INIT_DATA];


void I2C_write (void) {
i2c_start_cond();
i2c_send_byte(0x20);
for(uint8_t i = 0; i < MAX_INIT_DATA; i++) {
i2c_send_byte(writeBuf[i]);
}
i2c_stop_cond();
}


//******************************************************************** сетка частоты
void set_station (uint8_t channel) {
if(channel < MAX_CHANNELS) {
writeBuf[2] = pgm_read_byte(&TABLE__channels[(channel * 2)+0]);
writeBuf[3] = pgm_read_byte(&TABLE__channels[(channel * 2)+1]);
I2C_write();

PORTD = pgm_read_byte(&TABLE__display[channel]);

eeprom_write_byte(&station_ee, channel);
}
}


#define KEYS_LATCH_DEPTH 10
void keys__check(void) {
uint8_t noiseCanceller = 0;
if(!ST_UP) {
for(uint8_t i = 25; i > 0; i--) {
if(!ST_UP) {
noiseCanceller++;
}
_delay_ms(1);
}
if(noiseCanceller > KEYS_LATCH_DEPTH) {
station++;
if (station >= MAX_CHANNELS) station = 0;
set_station(station);
_delay_ms(200);
return;
}
}

noiseCanceller = 0;
if(!ST_DN) {
for(uint8_t i = 25; i > 0; i--) {
if(!ST_DN) {
noiseCanceller++;
}
_delay_ms(1);
}
if(noiseCanceller > KEYS_LATCH_DEPTH) {
station--;
if (station >= MAX_CHANNELS) station = MAX_CHANNELS-1;
set_station(station);
_delay_ms(200);
return;
}
}
}


int main (void) {
PORTC = (1<<0)|(1<<1);
DDRD = 0xFF;

for(uint8_t i = 0; i < MAX_INIT_DATA; i++) {
writeBuf[i] = pgm_read_byte(&TABLE__init[i]);
}

uint8_t tmp = eeprom_read_byte(&station_ee);
if(tmp < MAX_CHANNELS) {
station = tmp;
set_station(station);
}

while(1) {
keys__check();
}
}


Присоединённый файл ( Кол-во скачиваний: 372 )
Присоединённый файл  main.c.zip
PMEmail Poster
Top
bulat
Сообщение: # 765208   Jan 25 2018, 05:37 AM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



Было такое. После включения пауза 1 секунда,потом инициализация rda5807,или отключайте программно,питание от рда не отключать
PMEmail Poster
Top
vitalik_b
Сообщение: # 765209   Jan 25 2018, 05:54 AM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Кстати да, вроде и это тоже было. Не помню задержки, но 100 мс точно хватает, а так думаю и 10-20 мс вполне хватит.

Так же следует обращать внимание на правильное снятия и поднятие напряжений питания. Т.е. подниматься должно за время не более 10 мс, опускаться тоже, и обязательно до нуля. Обычно для этого ставят специальные discharge цепи, но для низкого бюджета хватит и резистора параллельно питанию 100 кОм - 1 МОм.
PMEmail Poster
Top
AMOZZZ
Сообщение: # 765214   Jan 25 2018, 08:49 AM
Quote Post


Соучастник
***

Группа: Cоучастник
Сообщений: 347
Пользователь №: 106199
Регистрация: 22-April 14




В основном даташите на RDA5807M не все данные отражены. Я кое что использовал из даташита на RDA5807HS. А процесс инициализации и программирования с необходимыми задержками (очень уж капризная в этом) описан в RAD5807P_ProgManual_1.0.

Присоединённый файл ( Кол-во скачиваний: 626 )
Присоединённый файл  RAD5807P_ProgManual_1.0.pdf
PMEmail Poster
Top
sonyyy
Сообщение: # 765248   Jan 25 2018, 02:11 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



по коду ругается на
uint8_t TABLE__init[MAX_INIT_DATA] PROGMEM
на
uint8_t TABLE__channels[MAX_CHANNELS*2] PROGMEM =
и на
uint8_t TABLE__display[MAX_CHANNELS] PROGMEM = {

по питанию на шине еще унч стоит. да и касяк проявляется какраз если напряжение полностью уходит (конденсаторы по питанию) ноесть если выключить и подождать некое время 100% при повторном включение включится не то, в тоже время если быстро вкл вкл то норм. попробую задержку и резистор в питание...



Это сообщение отредактировал sonyyy - Jan 25 2018, 02:12 PM

Присоединённое изображение (Нажмите для увеличения)
Присоединённое изображение
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765250   Jan 25 2018, 02:49 PM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Ну const добавить в начало на все три таблицы перед uint8_t. У атмеловского компилятора свои заморочки.
PMEmail Poster
Top
sonyyy
Сообщение: # 765253   Jan 25 2018, 03:10 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва



сделал, прошил. абсолютно тоже самое. значит надо задержки пробовать..
PMEmail PosterICQ
Top
vitalik_b
Сообщение: # 765256   Jan 25 2018, 03:21 PM
Quote Post


Дедушка
*******

Группа: Автор
Сообщений: 7625
Пользователь №: 35582
Регистрация: 3-August 08
Место жительства: Украина, Харьков



Значит в main перед чтением из eeprom добавить задержку 100 мс. Должно нормально после этого заработать.

Но я просто ставлю на ногу Reset RC цепь. Оно и правильнее, и не нужно заморачиваться с кодом.

Это сообщение отредактировал vitalik_b - Jan 25 2018, 03:24 PM
PMEmail Poster
Top
sonyyy
Сообщение: # 765258   Jan 25 2018, 03:47 PM
Quote Post


Соучастник
*****

Группа: Cоучастник
Сообщений: 1050
Пользователь №: 4008
Регистрация: 13-January 06
Место жительства: Москва




vitalik_b post-97.gif получилось, правда 1-й задержкой в 100мс не обошлось. вроде работает, правда долго включается ну и ладно. smile.gif главное работает, огромное спосибище vitalik_b
за 3 часа практически новый код написал я тот дня 4 ковырял icon_lol.gif






int main (void) {
_delay_ms(400);
PORTC = (1<<0)|(1<<1);
DDRD = 0xFF;
_delay_ms(200);
for(uint8_t i = 0; i < MAX_INIT_DATA; i++) {
_delay_ms(200);
writeBuf[i] = pgm_read_byte(&TABLE__init[i]);
}
_delay_ms(200);
uint8_t tmp = eeprom_read_byte(&station_ee);
_delay_ms(200);
if(tmp < MAX_CHANNELS) {
station = tmp;
set_station(station);
}

while(1) {
keys__check();
}
}
PMEmail PosterICQ
Top
Zlodey
Сообщение: # 765268   Jan 25 2018, 05:38 PM
Quote Post


Фанат
******

Группа: Автор
Сообщений: 3767
Пользователь №: 39917
Регистрация: 30-November 08
Место жительства: Архангельская область



eeprom_read_byte на AVR работает без задержек. Ищите косяк.


--------------------
=> Zlodey <=
PMEmail PosterUsers Website
Top
bulat
Сообщение: # 765276   Jan 25 2018, 05:56 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



я ж написал-включили,подождали 1 сек,потом инициализация RDA5807

тоже так нарвался,приемник включаю-на индикаторе последняя частота,а на деле не та частота,но если быстро выкл и вкл приемник то частота та которая должна быть,для эксперимента сделал в программе так-вкл приемник,инициализазия,потом считал с RDA все что можно,там такая белиберда была,начал делать задержку между вкл приемника и инициализацией RDA5807,при 700 мсек заработал как надо но время от времени опять вылезал этот косяк,сейчас 1 секунда и работает отлично!
вкл/выкл приемника имеется ввиду именно питание
PMEmail Poster
Top
bulat
Сообщение: # 765444   Jan 27 2018, 06:17 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



итоговая прошивка,вроде все поправил,проверял с индикаторами ОК,с индикаторами ОА испытывал ув vbrt с сайта схем.нет за что ему огромная благодарность
прошивка энкодер реверс отличается тем что направление вращения энкодера изменено программно (вдруг энкодер при вращении по часовой уменьшает частоту или громкость,чтоб не перепаивать или резать дорожки прошивка с реверсом-не знаю как правильнее назвать ))) )
исходник в баском авр

Это сообщение отредактировал bulat - Jan 27 2018, 06:20 PM

Присоединённый файл ( Кол-во скачиваний: 865 )
Присоединённый файл  programm_88_108_oa_ok_03.bas
PMEmail Poster
Top
bulat
Сообщение: # 765445   Jan 27 2018, 06:17 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



обычная прошивка

Присоединённый файл ( Кол-во скачиваний: 963 )
Присоединённый файл  programm_88_108_oa_ok_03.hex
PMEmail Poster
Top
bulat
Сообщение: # 765446   Jan 27 2018, 06:18 PM
Quote Post


Фанат
******

Группа: Cоучастник
Сообщений: 4554
Пользователь №: 91830
Регистрация: 5-April 12
Место жительства: башкортостан



прошивка с реверсом энкодера


Присоединённый файл ( Кол-во скачиваний: 991 )
Присоединённый файл  programm_88_108_oa_ok_03_______________.hex
PMEmail Poster
Top

Настройки темыСтраницы: (10) [1] 2 3 4 5 6 7 8 9 10  Ответить Шустрый ответ Новая тема Новый опрос


 




  banner DIPTRACE - САМЫЙ ЛУЧШИЙ ТАКСИРОВЩИК ПЕЧАТНЫХ ПЛАТ
Portal-X