Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

Закрытая тема
Опции темы
Непрочитано 28.01.2013, 12:57   #31
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Понятно.
А если датчик отвалился и заменить его?

Проще, наверное, на столе с каждого адрес считать командой Read ROM,
а затем их просто прописать в EEPROM.

Зачем в в приборе подпрограмма определения адресов - она ж мертвым грузом будет лежать, после определения и прописывании адресов.
Реклама:
Boba_spb вне форума  
Непрочитано 28.01.2013, 13:10   #32
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Сообщение от Boba_spb Посмотреть сообщение
А если датчик отвалился и заменить его?
Просто подключается датчик с новым ID и старые сбрасываются и он записывается первым. Уже сам подумал, что неудобно сделал - для замены понадобится 2 датчика и лишний цикл переинициализации. Надо просто сделать сброс старых адресов, а на следующем цикле уже записывать - ну это просто.
Сообщение от Boba_spb Посмотреть сообщение
Зачем в в приборе подпрограмма определения адресов - она ж мертвым грузом будет лежать, после определения и прописывании адресов.
Ну байт 50 оно занимает, ну пусть 100. Ну и фиг с ним. Счаз всё, ещё не домученное под 2 кило скомпилированного коду, правда с отладочной индикацией и ещё кой-какой мелочёвкой.

Последний раз редактировалось omercury; 28.01.2013 в 13:13.
omercury вне форума  
Непрочитано 28.01.2013, 13:36   #33
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Ну если 2 кило, то тогда разговор ни о чем.
Boba_spb вне форума  
Непрочитано 28.01.2013, 13:53   #34
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Сообщение от Boba_spb Посмотреть сообщение
ни о чем.
Ну, типа, да.
Вчера, пока болтали, целых 4 байта уже соптимизировал...
omercury вне форума  
Непрочитано 28.01.2013, 14:05   #35
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Если память длинная и скорострельность устраивает - не тратьте время время зря. Красота программы - вторична, главное что б все работало.

Сделал и забыл.
Boba_spb вне форума  
Непрочитано 28.01.2013, 14:17   #36
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Весь смысл как раз в том, чтоб оно не сильно отвлекало от основной работы - оттуда и объём получается.

Сообщение от Boba_spb Посмотреть сообщение
Красота программы - вторична, главное что б все работало.
Сделал и забыл.
Это не мой хлеб, такшта всё наоборот.
omercury вне форума  
Непрочитано 28.01.2013, 17:25   #37
Serg1977
Частый гость
 
Регистрация: 01.09.2006
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
Serg1977 на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

/*
author YSA
date 08.03.07
AVR
master Microline
delay taimer0
freq = 7372800 Hz
lengh slot = 70 us
full reset = 630 us
*/
#include ‹avr/io.h›
#include ‹stdio.h›
#include ‹avr/delay.h›
#include "Microline.h"
unsigned char MicrolineCheck(void)
{
unsigned char uc_l_MicrlineCheck;
in_Microline;
while (!pin_Microline); //check line +5V
out_Microline; //if V = 0 V while
TCCR0 = 3; // 7372800/64 = 8,68 us
TCNT0 = 255 - 80; //overflow 80 - 694 us
TIFR = 1 ‹‹ TOV0; // clear TOV0
PORTD=out0_Microline; //0V = 651 us
while (!(TIFR & (1 ‹‹ TOV0))); //wait set TOV0
in_Microline; //Microline = in
TCNT0 = 255 - 7;
TIFR = 1 ‹‹ TOV0;
while (!(TIFR & (1 ‹‹ TOV0)));
if(pin_Microline) uc_l_MicrlineCheck = 0; //check line +5V
else uc_l_MicrlineCheck = 1;
TCNT0 = 255 - 35;
TIFR = 1 ‹‹ TOV0;
while (!(TIFR & (1 ‹‹ TOV0)));
return uc_l_MicrlineCheck;
}


void MicrolineWriteByte(unsigned char uc_l_MicrolineTxByte)
{
unsigned char uc_l_MicrolineCountBit;
while(!pin_Microline);
out_Microline;
TCCR0=2; // 7372800/8 = 1,085 us
for(uc_l_MicrolineCountBit=0; uc_l_MicrolineCountBit!=8; uc_l_MicrolineCountBit++)
{
out0_Microline; //time lets begin transmit SLOT
TCNT0 = 255 - 1; //7372800/8 1 us = 1 takt
TIFR = 1 ‹‹ TOV0; //clear TOV0
while(!(TIFR & (1 ‹‹ TOV0)));
TIFR = 1 ‹‹ TOV0; //clear TOV0
TCNT0 = 255 - 60; //7372800/8 delay 60 us = 60 takt
ML_port = (uc_l_MicrolineTxByte & 1) ‹‹ number_ML_port; //sdvig in port
uc_l_MicrolineTxByte = uc_l_MicrolineTxByte ›› 1;
while(!(TIFR & (1 ‹‹ TOV0)));
out1_Microline;
TCNT0 = 255 - 1;
TIFR = 1 ‹‹ TOV0;
while(!(TIFR & (1 ‹‹ TOV0)));
}
in_Microline;
TCNT0 = 255 - 105;
TIFR = 1 ‹‹ TOV0;
while(!(TIFR & (1 ‹‹ TOV0)));
out_Microline;
}
unsigned char MicrolineReadByte(void)
{
unsigned char uc_l_MicrolineRxByte;
unsigned char uc_l_MicrolineCountBit;
unsigned char uc_l_MicrolineRxByteTemp;
while(!pin_Microline);
uc_l_MicrolineRxByte = 0;
TCCR0 = 2; // 7372800/8 = 1,085 us
for(uc_l_MicrolineCountBit = 0; uc_l_MicrolineCountBit != 8; uc_l_MicrolineCountBit++)
{
out_Microline;
out0_Microline;
TIFR = 1 ‹‹ TOV0;
TCNT0 = 255 - 1; // 7372800/8 delay 1 us = 1 takt
while(!(TIFR & (1 ‹‹ TOV0))); //time between bits
TCNT0 = 255 - 5; //wait 10 us
TIFR = 1 ‹‹ TOV0;
in_Microline; //Microline = IN
while(!(TIFR & (1 ‹‹ TOV0)));
TCNT0 = 255 - 50; //wait 55 us
TIFR = 1 ‹‹ TOV0; //read bit
uc_l_MicrolineRxByteTemp = (pin_Microline) ›› number_ML_port;
uc_l_MicrolineRxByte = (uc_l_MicrolineRxByteTemp ‹‹ uc_l_MicrolineCountBit) | uc_l_MicrolineRxByte;
while(!(TIFR & (1 ‹‹ TOV0)));
}
TCNT0 = 255 - 60;
TIFR = 1 ‹‹ TOV0;
while(!(TIFR & (1 ‹‹ TOV0)));
out_Microline;
return uc_l_MicrolineRxByte;
}

void main(void)
{
//static unsigned char uc_l_drob;
//static unsigned char uc_l_celoe;
static unsigned char ucm_l_MoutData[11];

unsigned char uc_l_count;
static unsigned char uc_l_outString[12];




while(1)
{
MicrolineCheck();
MicrolineWriteByte(0x33);

for(uc_l_count=0;uc_l_count!=10;uc_l_count++)
ucm_l_MoutData[uc_l_count]=MicrolineReadByte();
// lcd_clear();
// DelayMs(50);
}


}

Вот это реально рабочий код
Serg1977 вне форума  
Непрочитано 28.01.2013, 18:12   #38
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Сообщение от Serg1977 Посмотреть сообщение
void main(void)
Оба-на.
Началось.
omercury вне форума  
Непрочитано 28.01.2013, 19:54   #39
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

Пора объявить конкурс на самую замысловатую работающую программу с DS18B20, и DS18S20.
Еще через UART есть работающие.
Boba_spb вне форума  
Непрочитано 28.01.2013, 20:39   #40
domowoj
Почётный гражданин KAZUS.RU
 
Аватар для domowoj
 
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,021
Сказал спасибо: 10
Сказали Спасибо 70 раз(а) в 63 сообщении(ях)
domowoj на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

sibiryak983
есть у радиодеда хорошо расписанная на asm программа,
с комментариями,
посмотрите.
__________________
И на камнях растут деревья!
domowoj вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку barbuss Микроконтроллеры, АЦП, память и т.д 9 16.10.2013 18:05
Помогите найти ошибку в моделировании 172senator Proteus 0 22.12.2010 14:18
Помогите найти ошибку в исходнике (+) Don_Ambrosio Микроконтроллеры, АЦП, память и т.д 1 29.04.2008 18:30
Помогите найти ошибку в PROTEUS maxNTF Proteus 2 29.11.2007 10:26
Помогите найти ошибку в схеме с двумя симисторами lisergin Автоматика и аппаратура связи 7 07.08.2005 00:39


Часовой пояс GMT +4, время: 02:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot