roboforum.ru

Технический форум по робототехнике.

Бортовой компьютер на инжектор

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Бортовой компьютер на инжектор

Сообщение setar » 14 сен 2009, 10:47

У меня просто информация

Если требуется получить бОльшую информацию про автомобильные контроллеры, датчики, законы управления
обращайтесь к коллегам http://www.ctlab.ru
Ребята знают наш ресурс, используют некоторые наши наработки (OR модули) и вообще Проффи своего дела.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Бортовой компьютер на инжектор

Сообщение blindman » 14 сен 2009, 12:25

Master писал(а):А зачем третий?

Основание системы счисления.
itoa(10, buf, 10) => "10"
itoa(10, buf, 2) => "1010"
itoa(10, buf, 16) => "A"
itoa(10, buf, 8) => "12"
itoa(10, buf, 7) => "13"
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Бортовой компьютер на инжектор

Сообщение grek » 16 сен 2009, 15:51

А для какого контроллера написана программа в архиве МК.Почему то у меня когда я ставлю atmega644 вылетает ошибка,что в этом контроллере нет таких регистров.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 16 сен 2009, 20:44

Error: undefined symbol 'TCNT1'
действительно нет такого регистра, зато есть TCNT1L и TCNT1H
что это может значить не могу сказать, но думаю гуру подскажут :)
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение Master » 16 сен 2009, 22:57

TCNT1L и TCNT1H это по сути одна переменная TCNT1, просто в H хранятся старшие биты, а в L младшие.
К примеру TCNT1=0987654321 (это номера битов), так вот в
TCNT1L=87654321
TCNT1H=09
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 16 сен 2009, 23:26

а как обойти ошибки? вот эту например: Error: undefined symbol 'TCNT1'
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение galex1981 » 16 сен 2009, 23:35

Просто раздели слово побайтно и все тут
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Бортовой компьютер на инжектор

Сообщение Master » 16 сен 2009, 23:40

Если компилятор CVavr, то он умеет работать с TCNT1 как с одним целым, по крайней мере с шимом он может так работать.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Бортовой компьютер на инжектор

Сообщение grek » 17 сен 2009, 08:31

Ну а тогда если ставлю atmega644 где у нее вот такие регистры.Может все же контроллер не тот?
Error: C:\MK\MK\mk_644.c(149): undefined symbol 'WDCE'
Error: C:\MK\MK\mk_644.c(151): undefined symbol 'WDE'
Error: C:\MK\MK\mk_644.c(168): undefined symbol 'TCNT1'
Error: C:\MK\MK\mk_644.c(169): undefined symbol 'TCNT1'
Error: C:\MK\MK\mk_644.c(170): undefined symbol 'TCNT1'
Error: C:\MK\MK\mk_644.c(197): a value of type 'eeprom struct eeprom_structure [100] *' can't be assigned to an entity of type 'eeprom struct eeprom_structure *'
Error: C:\MK\MK\mk_644.c(212): a value of type 'eeprom struct eeprom_structure [100] *' can't be assigned to an entity of type 'eeprom struct eeprom_structure *'
Warning: C:\MK\MK\mk_644.c(395): overflow is possible in 16 bit multiplication, casting to 'long' may be required
Да компилятор действительно CV, но что то регистры мне кажется не те.Да компилятор может работать как с одним целым, но если честно у меня этого никогда не получалось, и приходилось обращаться по одиночки к младшему и старшему.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Бортовой компьютер на инжектор

Сообщение galex1981 » 17 сен 2009, 08:41

Естесственно другие регистры присутствуют H и L части (байты) нужно предварительно смотреть даташит... А потом разделять слова на байты
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Бортовой компьютер на инжектор

Сообщение grek » 17 сен 2009, 09:12

Нет я просто к тому что в этом контроллере вообще нет регистра Error: C:\MK\MK\mk_644.c(149): undefined symbol 'WDCE'.То есть его описания нигде нет.По этому я и спрашиваю может эта программа написана под другой контроллер?
sfrb PINA=0;
sfrb DDRA=1;
sfrb PORTA=2;
sfrb PINB=3;
sfrb DDRB=4;
sfrb PORTB=5;
sfrb PINC=6;
sfrb DDRC=7;
sfrb PORTC=8;
sfrb PIND=9;
sfrb DDRD=0xa;
sfrb PORTD=0xb;
sfrb TIFR0=0x15;
sfrb TIFR1=0x16;
sfrb TIFR2=0x17;
sfrb PCIFR=0x1b;
sfrb EIFR=0x1c;
sfrb EIMSK=0x1d;
sfrb GPIOR0=0x1e;
sfrb EECR=0x1f;
sfrb EEDR=0x20;
sfrb EEARL=0x21;
sfrb EEARH=0x22;
sfrw EEAR=0X21; // 16 bit access
sfrb GTCCR=0x23;
sfrb TCCR0A=0x24;
sfrb TCCR0B=0x25;
sfrb TCNT0=0x26;
sfrb OCR0A=0x27;
sfrb OCR0B=0x28;
sfrb GPIOR1=0x2a;
sfrb GPIOR2=0x2b;
sfrb SPCR0=0x2c;
sfrb SPSR0=0x2d;
sfrb SPDR0=0x2e;
sfrb ACSR=0x30;
sfrb OCDR=0x31;
sfrb SMCR=0x33;
sfrb MCUSR=0x34;
sfrb MCUCR=0x35;
sfrb SPMCSR=0x37;
sfrb RAMPZ=0x3b;
sfrb SPL=0x3d;
sfrb SPH=0x3e;
sfrb SREG=0x3f;
#pragma used-

#define WDTCSR (*(unsigned char *) 0x60)
#define CLKPR (*(unsigned char *) 0x61)
#define PRR (*(unsigned char *) 0x64)
#define OSCCAL (*(unsigned char *) 0x66)
#define PCICR (*(unsigned char *) 0x68)
#define EICRA (*(unsigned char *) 0x69)
#define PCMSK0 (*(unsigned char *) 0x6b)
#define PCMSK1 (*(unsigned char *) 0x6c)
#define PCMSK2 (*(unsigned char *) 0x6d)
#define TIMSK0 (*(unsigned char *) 0x6e)
#define TIMSK1 (*(unsigned char *) 0x6f)
#define TIMSK2 (*(unsigned char *) 0x70)
#define PCMSK3 (* (unsigned char *) 0x73)
#define ADCL (*(unsigned char *) 0x78)
#define ADCH (*(unsigned char *) 0x79)
#define ADCW (*(unsigned int *) 0x78) // 16 bit access
#define ADCSRA (*(unsigned char *) 0x7a)
#define ADCSRB (*(unsigned char *) 0x7b)
#define ADMUX (*(unsigned char *) 0x7c)
#define DIDR0 (*(unsigned char *) 0x7e)
#define DIDR1 (*(unsigned char *) 0x7f)
#define TCCR1A (*(unsigned char *) 0x80)
#define TCCR1B (*(unsigned char *) 0x81)
#define TCCR1C (*(unsigned char *) 0x82)
#define TCNT1L (*(unsigned char *) 0x84)
#define TCNT1H (*(unsigned char *) 0x85)
#define ICR1L (*(unsigned char *) 0x86)
#define ICR1H (*(unsigned char *) 0x87)
#define OCR1AL (*(unsigned char *) 0x88)
#define OCR1AH (*(unsigned char *) 0x89)
#define OCR1BL (*(unsigned char *) 0x8a)
#define OCR1BH (*(unsigned char *) 0x8b)
#define TCCR2A (*(unsigned char *) 0xb0)
#define TCCR2B (*(unsigned char *) 0xb1)
#define TCNT2 (*(unsigned char *) 0xb2)
#define OCR2A (*(unsigned char *) 0xb3)
#define OCR2B (*(unsigned char *) 0xb4)
#define ASSR (*(unsigned char *) 0xb6)
#define TWBR (*(unsigned char *) 0xb8)
#define TWSR (*(unsigned char *) 0xb9)
#define TWAR (*(unsigned char *) 0xba)
#define TWDR (*(unsigned char *) 0xbb)
#define TWCR (*(unsigned char *) 0xbc)
#define TWAMR (*(unsigned char *) 0xbd)
#define UCSR0A (*(unsigned char *) 0xc0)
#define UCSR0B (*(unsigned char *) 0xc1)
#define UCSR0C (*(unsigned char *) 0xc2)
#define UBRR0L (*(unsigned char *) 0xc4)
#define UBRR0H (*(unsigned char *) 0xc5)
#define UDR0 (*(unsigned char *) 0xc6)

может я все же чего то не понимаю?
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 17 сен 2009, 09:49

Разделить побайтно конечно можно, но у автора в таком виде компилилась как мне кажется :)
автора в студию, в общем :beer: :friends:
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение grek » 17 сен 2009, 10:09

А у меня создается впечатление,что написано для на другом компиляторе отличном от CodeVisionAvr.Посмотрел даташит на Atmega644 все эти регистры на которые написана ошибка имеются в этом контроллере.
(0x85) TCNT1H Timer/Counter1 - Counter Register High Byte 131
(0x84) TCNT1L Timer/Counter1 - Counter Register Low Byte 131
0x60) WDTCSR WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 55
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Бортовой компьютер на инжектор

Сообщение Sun-dey » 17 сен 2009, 10:13

#include <mega644.h>
вот этот файлик "mega644.h" попробуй другой поискать.
Sun-dey
 
Сообщения: 106
Зарегистрирован: 23 апр 2009, 14:12
Откуда: Курская обл.

Re: Бортовой компьютер на инжектор

Сообщение grek » 17 сен 2009, 11:00

не нашел я этого файла,поставил версию посвежее CodeVision 2.03.9.Все таки надо уточнить на каком компиляторе написано??? :(
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13