проблема с буфером
Re: проблема с буфером
хочу щас добавить 6 вольтметров и закрыть в корпус ,будет супер прибор для работы с шим контроллерами)
у экрана при 50 перепрошиваниях сгорает 7 строка выбросить жалко ,а так ещё послужит)
из за 7 строки 2 текстовая строка без верхушки ,так что 1 текстовую заделать под частоту ,нижние в 2столбика 6 вольтметров
у экрана при 50 перепрошиваниях сгорает 7 строка выбросить жалко ,а так ещё послужит)
из за 7 строки 2 текстовая строка без верхушки ,так что 1 текстовую заделать под частоту ,нижние в 2столбика 6 вольтметров
- Реклама
Re: проблема с буфером
ток с фьюзяшками помощь потребуется , так как обычно игры с кварцами кончаются плачевно у меня последний раз отказался от всего тактоватся( поэтому 8 мгц мне раньше хватало)
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
При кварце 16 МГц будет занижать в двое с той же прошивкой..формула будет правильной при кварце 16мгц).
Можете freq.cof и freq.hex файл скинуть, тот что уже работает нормально?
Re: проблема с буфером
вобщем , для разных дисплеев , если что ,пиши,подправлю
ещёб добавить кгц сокращение когда всё в 5 разрядов забиты ,надо приставку какую то придумать
ещёб добавить кгц сокращение когда всё в 5 разрядов забиты ,надо приставку какую то придумать
Последний раз редактировалось CS16AMX Пт мар 18, 2011 17:45:17, всего редактировалось 1 раз.
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
И настройки в проекте такие же?
Или я что то не до понимаю, или одно из двух 
- Реклама
Re: проблема с буфером
не 8 , а 4 мгц стоит остальное не трогал с установки проги
у тебя 2. какая то ,а надо 1..... они даже вместе на компе стоять могут,но принцип работы другой ,менее капризен первый, 2 версии компактней компилит
у тебя 2. какая то ,а надо 1..... они даже вместе на компе стоять могут,но принцип работы другой ,менее капризен первый, 2 версии компактней компилит
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
Думаю объяснять не нужно почему в двое меньше считалне 8 , а 4 мгц стоит
Re: проблема с буфером
я и забыл что давно под 4 пишу
мой касяк)
если переделаем на 8 то получим ещё 2 разряда?)
если переделаем на 8 то получим ещё 2 разряда?)
Re: проблема с буфером
#include <n3310lcd.c>
typedef unsigned char byte;
typedef unsigned long ulong;
flash byte txt[]="freq:";
byte ovf; //Счетчик переполнений таймера
byte i;
byte buff[17]; //Буфер LCD
ulong freq;
interrupt [TIM1_OVF] void tmr1_ovf() {
ovf++; //Считаем сколько было переполнений
}
void main(){
TCCR1A=0;
TCCR1B=0;
TIMSK=4;
ACSR=0x80;
LcdInit();
#asm("sei")
LcdClear();
while (1) {
ovf=0; //Обнуляем
TCNT1=0;
TCCR1B=7; //Включаем счетчик с внешним генератором, пин T1
delay_ms(999);
delay_us(239);
TCCR1B=0; //Выключаем счетчик
freq=ovf;
freq*=65536;
freq+=TCNT1;
i=14;//unsigned char lcd_buf[14];
while(i--)
{
lcd_buf=' ';// в место нолика пробел
if (freq) lcd_buf=freq%10+0x30; //если не равен нулю
freq/=10;
}
i=5;// 5 символов freq:
while(i--)
{
lcd_buf[i+1]=txt;// txt[]="freq:";
}
LcdString(1,5);
LcdUpdate();
}
}
эта под 8 и без деления,а моя на 4 без деления
теперь понял)
typedef unsigned char byte;
typedef unsigned long ulong;
flash byte txt[]="freq:";
byte ovf; //Счетчик переполнений таймера
byte i;
byte buff[17]; //Буфер LCD
ulong freq;
interrupt [TIM1_OVF] void tmr1_ovf() {
ovf++; //Считаем сколько было переполнений
}
void main(){
TCCR1A=0;
TCCR1B=0;
TIMSK=4;
ACSR=0x80;
LcdInit();
#asm("sei")
LcdClear();
while (1) {
ovf=0; //Обнуляем
TCNT1=0;
TCCR1B=7; //Включаем счетчик с внешним генератором, пин T1
delay_ms(999);
delay_us(239);
TCCR1B=0; //Выключаем счетчик
freq=ovf;
freq*=65536;
freq+=TCNT1;
i=14;//unsigned char lcd_buf[14];
while(i--)
{
lcd_buf=' ';// в место нолика пробел
if (freq) lcd_buf=freq%10+0x30; //если не равен нулю
freq/=10;
}
i=5;// 5 символов freq:
while(i--)
{
lcd_buf[i+1]=txt;// txt[]="freq:";
}
LcdString(1,5);
LcdUpdate();
}
}
эта под 8 и без деления,а моя на 4 без деления
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
Не совсем понял 8 чего , 2разряда где?если переделаем на 8 то получим ещё 2 разряда?)
Я поэтому просил проверить на 1 ГЦ потому как он не мог бы их вывести.
Класс точности был 2 Гц , Теперь можно и 1 Гц (на 8 МГц в компиляторе и вреале). Пример было 1000 .. 1002 .. 1004 станет 1001 .. 1002 .. 1003
Re: проблема с буфером
в компиляторе под 4 мгц моя версия давала 5 цифр,твоя 6 под 8мгц , тобиш я подгонял по макс и 1.2гц на обновку надо, тобиш 1 сек счёт , 0.2 на вывод информации
на железе я всегда ставлю 8 мгц забыл что у компилятора тоже есть
на железе я всегда ставлю 8 мгц забыл что у компилятора тоже есть
Re: проблема с буфером
вот ета правильная почти ,только нехватает отчистки экрана ,если частота была 10004 то меряя 10 будет постоянно 10004phanis писал(а):Подправил частоту умножать не нужно, в cvavr и протеусе выставлять одинаковую частоту проца
ставлю отчистку и посравнению с моей версией он выводит картинку со скоростю в 2 раза медленнее но разрядов больше
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
Это где проверялось в реале?вот ета правильная почти ,только нехватает отчистки экрана ,если частота была 10004 то меряя 10 будет постоянно 10004
ставлю отчистку и посравнению с моей версией он выводит картинку со скоростю в 2 раза медленнее но разрядов больше
Re: проблема с буфером
Это где проверялось в реале?[/quote]phanis писал(а):
да , только что перезалил , без отчистки 1.5раза медленней моего варианта
и ещё ,тот отступ должен быть короче, у меня 1 пробелтам пол экрана в право смещает
надо такой :lcd_buf='';
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
Это уже дело вкуса, Выравнивание по левому или правому.
Re: проблема с буфером
касяк в том что в реале , ты увидиш 256 кгц в виде |freq........25|, по моему варианту
|freq256.........|,
|freq256.........|,
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: проблема с буфером
Ну и славненько что разобрались с темой проблема с буфером.
Добавлю файл
Добавлю файл
Последний раз редактировалось phanis Пт мар 18, 2011 20:32:24, всего редактировалось 2 раза.
Re: проблема с буфером
закрывать ещё рано) есть ещё вопросы по rc5 для телевизоров протокоолов валяется куча но в чём сложность !!!!! буфер не даёт информацию в основную программу, нету объявления её результата сейчас отрою, там задачка потруднее
Re: проблема с буфером
сей пакет rc5 протокола , проблема с выводом буфера , отлучусь на 50 мин и продолжу учится с етим работать
- Вложения
-
- rc5.rar
- (108.86 КБ) 136 скачиваний
Re: проблема с буфером
//Chip type : ATmega8
//AVR Core Clock frequency: 4.000000 MHz
#include <n3310lcd.c>
#include <mega8.h>
#include <stdio.h>
typedef unsigned char byte;
typedef unsigned int word;
byte evnt; //Счетчик событий
word pkv; //Тут зранятся принятые биты
bit start; //Первый бит
void keypress(byte toggle,byte address,byte command) {
//Здесь пишим код, для события
printf("KEY: %u,%u,%u\r",toggle,address,command);
}
void tmr_reset() {
TCCR0=0; //Выключаем счетчик
TCNT0=0; //Сбрасивые счетчик
evnt=0;
pkv=0;
}
interrupt [EXT_INT0] void ext_int0_isr(void) { //Внешнее прерывание
if (evnt==0) { //Первое событие
TCCR0=4; //Включаем счетчик 15,625КГц
start=PIND.2; //Записываем первый бит
}
if ((evnt&1)!=0&&TCNT0>18) evnt++;
if (evnt>0&&(evnt&1)==0) {
if (evnt==2) {
if (start!=PIND.2) tmr_reset(); //Если первый бит не равен второму, заканчиваем обработку
start=!start; //Инвертируем бит
}else{
pkv<<=1; //Сдвигаем на бит вправо
pkv|=PIND.2^start; //Сохраняем принятый бит
}
}
if (TCCR0!=0) { //Если счетчик не выключен
if (evnt==26) keypress((pkv>>11)&1,(pkv>>6)&31,pkv&63);
evnt++; //Инкриминируем событие
TCNT0=0; //Сбрысываем счетчик
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
tmr_reset(); //Если счетчик переполнен, выключаем и обнуляем его
}
void main(void) {
DDRD=0;
PORTD=4;
LcdInit();
LcdMode(2);
TIMSK=1; //Прерывание для Счетчика 1
//Разрешаем внешнее прерывание, на любое изменение
GICR=0x40;
MCUCR=0x01;
GIFR=0x40;
tmr_reset();
//Настраиваем UART 19200 бод 8 бит
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
//Пишем в терминал
{sprintf (lcd_buf, "KEY: %u,%u,%u\r");
LcdString(1,6);
LcdUpdate();}
putsf("TEST PHILIPS RC5:\r");
//Разрешаем рерывания
#asm("sei")
}
что ненравится в этом,та то что он только передатчику высылает принятые числа, ставя экран получаем что посылка его обходит, бывает беру простой буфер ,так число его стоит на месте (
а прерываение асм недаёт коректно циклировать , может кто сталкивался с такими проблемами rc5 ,ведь видел как некоторые нагрузки включают ,на 7 сигментов выводят, но вот на 3310 опять касяк
//AVR Core Clock frequency: 4.000000 MHz
#include <n3310lcd.c>
#include <mega8.h>
#include <stdio.h>
typedef unsigned char byte;
typedef unsigned int word;
byte evnt; //Счетчик событий
word pkv; //Тут зранятся принятые биты
bit start; //Первый бит
void keypress(byte toggle,byte address,byte command) {
//Здесь пишим код, для события
printf("KEY: %u,%u,%u\r",toggle,address,command);
}
void tmr_reset() {
TCCR0=0; //Выключаем счетчик
TCNT0=0; //Сбрасивые счетчик
evnt=0;
pkv=0;
}
interrupt [EXT_INT0] void ext_int0_isr(void) { //Внешнее прерывание
if (evnt==0) { //Первое событие
TCCR0=4; //Включаем счетчик 15,625КГц
start=PIND.2; //Записываем первый бит
}
if ((evnt&1)!=0&&TCNT0>18) evnt++;
if (evnt>0&&(evnt&1)==0) {
if (evnt==2) {
if (start!=PIND.2) tmr_reset(); //Если первый бит не равен второму, заканчиваем обработку
start=!start; //Инвертируем бит
}else{
pkv<<=1; //Сдвигаем на бит вправо
pkv|=PIND.2^start; //Сохраняем принятый бит
}
}
if (TCCR0!=0) { //Если счетчик не выключен
if (evnt==26) keypress((pkv>>11)&1,(pkv>>6)&31,pkv&63);
evnt++; //Инкриминируем событие
TCNT0=0; //Сбрысываем счетчик
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
tmr_reset(); //Если счетчик переполнен, выключаем и обнуляем его
}
void main(void) {
DDRD=0;
PORTD=4;
LcdInit();
LcdMode(2);
TIMSK=1; //Прерывание для Счетчика 1
//Разрешаем внешнее прерывание, на любое изменение
GICR=0x40;
MCUCR=0x01;
GIFR=0x40;
tmr_reset();
//Настраиваем UART 19200 бод 8 бит
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
//Пишем в терминал
{sprintf (lcd_buf, "KEY: %u,%u,%u\r");
LcdString(1,6);
LcdUpdate();}
putsf("TEST PHILIPS RC5:\r");
//Разрешаем рерывания
#asm("sei")
}
что ненравится в этом,та то что он только передатчику высылает принятые числа, ставя экран получаем что посылка его обходит, бывает беру простой буфер ,так число его стоит на месте (
а прерываение асм недаёт коректно циклировать , может кто сталкивался с такими проблемами rc5 ,ведь видел как некоторые нагрузки включают ,на 7 сигментов выводят, но вот на 3310 опять касяк


