Страница 235 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 23, 2013 13:36:59
Marchello
Вот я в кучу собрал все глобальные переменные:
#include <mega16.h>
#asm
.equ __w1_port=0x12 ;PORTD
.equ __w1_bit=3
#endasm
#include <1wire.h>
#include <ds18b20.h>
#asm
.equ __i2c_port=0x15; PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1307.h>
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#define MAX_DS18B20 8
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 23, 2013 13:41:15
radio-kot
Ого!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 23, 2013 15:02:44
unalex
Marchello писал(а):Вот я в кучу собрал все глобальные переменные:
осталось эту кучу немного разгрести
у тебя в коде имеются конструкции #asm.......#endasm это ассемблерные вставки, которых у тебя несколько штук
Код: Выделить всё
#include <mega16.h>
#include <i2c.h>
#include <1wire.h>
#include <ds1307.h>
#include <ds18b20.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __w1_port=0x12 ;PORTD
.equ __lcd_port=0x12 ;PORTD
.equ __i2c_port=0x15; PORTC
.equ __w1_bit=3
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#define MAX_DS18B20 8
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 23, 2013 15:08:12
Marchello
Спасибо! Так гораздо нагляднее и все в едином месте!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 23, 2013 15:30:01
unalex
теперь осталось тело функции main собрать воедино, только смотреть внимательно, чтоб переменные друг с другом не конфликтовали
обрати внимание на
- это бесконечный цикл, необходимый для того чтоб микроконтроллер не отработал один раз и встал, а выполнял работу постоянно, естественно две такие конструкции не могут выполняться, потому что из первой выйти уже нельзя
ну а все что вне этого цикла выполняется естественно 1 раз - это как бы подготовительные процедуры, которые нужны при старте
т.е. тебе нужно соединить все что вне
while и все что внутри
while
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср янв 23, 2013 17:37:38
kotriks
народ кто нить пробывал реализовать через юарт слив данных с eeprom 24с1024 через TeraTerm терминал через x-modem. если кто делал выложите пожалуйста код.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт янв 24, 2013 02:36:21
eduardo
Подскажите пожалста как сделать так,чтобы массив читался с определенного элемента? Ну к примеру,записано в еепром какое-то число и нужно чтобы массив читался с этого числа. Естественно такое же число есть и среди элементов массива. А то я начинающий,неумеющий и не знающий как это сделать. Заранее спасибо.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт янв 24, 2013 04:18:39
unalex
eduardo
Код: Выделить всё
unsigned char flag = 0; //флаг, при нахождении нужного элемента устанавливается в 1
for(unsigned char i = 0; i < arraysize; i++)
{
if(array[i] == etalon) flag = 1;
if(flag == 1) readArray;
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт янв 24, 2013 04:31:46
unalex
или имелось ввиду начать читать с элемента с определенным номером?
тогда проще некуда
Код: Выделить всё
for(unsigned char i = number; i < arraysize; i++) //пробегаем по массиву, начиная с нужного места
{
// ваш код
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт янв 24, 2013 10:35:28
eduardo
Спасибо. Буду пробовать.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт янв 24, 2013 22:43:58
eduardo
unalex писал(а):или имелось ввиду начать читать с элемента с определенным номером?
тогда проще некуда
Код: Выделить всё
for(unsigned char i = number; i < arraysize; i++) //пробегаем по массиву, начиная с нужного места
{
// ваш код
}
Со вторым вариантом разобрался,а вот с первым чтото не получается. Что такое etalon?
Откуда он появился?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт янв 24, 2013 23:20:31
eduardo
Теперь и с первым кодом разобрался. Еще раз спасибо,хотя оно не булькает...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 00:17:11
vitalik_1984
unalex писал(а):eduardo
Код: Выделить всё
unsigned char flag = 0; //флаг, при нахождении нужного элемента устанавливается в 1
for(unsigned char i = 0; i < arraysize; i++)
{
if(array[i] == etalon) flag = 1;
if(flag == 1) readArray;
}
странная конструкция, понятно что она делает, но не понятно как это можно употребить.Я бы лучше сделал функцию, которая возвращает позицию, где найден символ.Хотя, конечно, возможно мой скудный опыт не позволяет в полной мере оценить преимущества вашего метода.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 03:37:40
unalex
имеется число(я назвал его эталон), задача: найти в массиве первое попавшееся число равное эталону и начиная с этого места читать массив
флаг нужен для того чтобы отследить что нужный элемент мы нашли
пробегаем по массиву, сравниваем с эталоном и проверяем флаг, если элемент массива не совпадает и флаг не установлен - идем дальше, если совпало - устанавливаем флаг совпадения, сразу после этого проверяем флаг, если он установлен, значит начиная с этой позиции будем читать(условно обозначил эту процедуру как readArray)
без флага программа будет только отлавливать числа, которые совпадают а остальные пропускать
такая конструкция позволяет использовать только один цикл и для поиска позиции и для чтения(или других процедур, например модификации или стирания)
вариант с возвращением позиции должен состоять из еще одного перебора массива, в котором как раз будет производиться это самое чтение
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 11:29:58
hfelyx
Всем привет! В программировании я полный ноль,только светодиодами моргать умею, но хочется большего( освоить таймеры ,формулы,переменные, массивы...) Подскажите с чего начать осваивание CVAVR и Мк, или может полезную литературу для начала.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 11:37:05
Apparatchik
hfelyx писал(а):Всем привет! В программировании я полный ноль,только светодиодами моргать умею, но хочется большего( освоить таймеры ,формулы,переменные, массивы...) Подскажите с чего начать осваивание CVAVR и Мк, или может полезную литературу для начала.
http://www.123avr.com/ вот например.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 11:51:50
hfelyx
Спасибо за быстрый ответ! Но хотелось бы литературу в книжных форматах и проверенную на которых уже выучились люди(в смысле программисты)....
Главное ,чтоб доступно и понятно обьяснялось,по порядку...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 11:57:31
Apparatchik
Вот
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 12:02:46
hfelyx
Спасибо! Если бедет что-то еще,буду признателен!!!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 25, 2013 15:01:47
unalex
ИМХО это нечто безобразное, во первых привязка в СodeVision и VMLAB во-вторых никакой последовательности(в первом уроке уже предлаают копаться в ШИМ и USART чужого кода) не говоря уже о ляпсистом оформлении и наличию ошибок
кстати хорошая оговорка на сайте
123avr.COM ( то что вы сейчас читаете) - втупление и первые эксперементы
я бы посоветовал просто почитать книги по С, для понимания таких вещей как циклы, массивы, и прочие конструкции, а потом применять это уже к конкретному микроконтроллеру