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

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

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

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

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

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

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

 
Опции темы

Помогите найти ошибку AVR asm

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

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

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

Зачем в в приборе подпрограмма определения адресов - она ж мертвым грузом будет лежать, после определения и прописывании адресов.
Реклама:
Boba_spb вне форума  
Непрочитано 28.01.2013, 13:10  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
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  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

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

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

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

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

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

Сообщение от Boba_spb Посмотреть сообщение
Красота программы - вторична, главное что б все работало.
Сделал и забыл.
Это не мой хлеб, такшта всё наоборот.
omercury вне форума  
Непрочитано 28.01.2013, 17:25  
Serg1977
Частый гость
 
Регистрация: 01.09.2006
Сообщений: 12
Сказал спасибо: 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  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Помогите найти ошибку AVR asm

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

Пора объявить конкурс на самую замысловатую работающую программу с DS18B20, и DS18S20.
Еще через UART есть работающие.
Boba_spb вне форума  
Непрочитано 28.01.2013, 20:39  
domowoj
Почётный гражданин KAZUS.RUN
 
Аватар для domowoj
 
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,019
Сказал спасибо: 10
Сказали Спасибо 71 раз(а) в 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, время: 04:05.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.