Сообщение от AR_Favorit
|
Это форум так корёжит текст при выкладывании. Причем тег code может тоже не особо помочь.
|
Проверяю:
#include ‹avr/io.h›
#include ‹avr/interrupt.h› //cli()
#include ‹util/delay.h›
#include ‹stdlib.h›
//
// Определение подключений выводов
//
#define HWDDR DDRA
#define HWPORT PORTA
#define LED PA0 // LED PIN20
#define BATADC PA1 // ADC1 - Ubat, PIN19
#define PowerOn PA2 // 1 - Power On PIN18
#define BUTTON PA3 // BUTTON1 PIN17
#define Discharge PA4 // 1 - разряд PIN14
#define Charge PA5 // 0 - заряд PIN13
#define COMPLUS PA6 // Comparator +In PIN12
#define COMMINUS PA7 // Comparator -In PIN11
//порт - подключение LCD
#define TICDDR DDRB
#define TICPORT PORTB
#define MOSI PB0
#define MISO PB1
#define SCK PB2
#define PWMOUT PB3
#define DIN PB4
#define DCLK PB5
#define LOAD PB6
#define RESET PB7
#include "TIC.c" // Библиотека TIC I/O
// Включение модулей:
//#define PwmUse // разрешение работы pwm
#define TestCharge // проверка зарядом
volatile uint8_t num[10];
// константы - коды цифр LCD 0..9 + пробел
unsigned char Digits[] = {Dig0, Dig1, Dig2, Dig3, Dig4, Dig5, Dig6, Dig7, Dig8, Dig9};
#ifdef TestCharge // проверка зарядом
#define MAXOVERFLOW 0x04 // TCNT0 Max Overflows до вывода "- Short -"
volatile unsigned char Tcnt0ovf; // TCNT0 - overflows, volatile - иначе портится
#endif
//================================================== ========
// Прерывания
//================================================== ========
#ifdef TestCharge // проверка зарядом
ISR(TIMER0_OVF0_vect)
{
Tcnt0ovf++;
if (Tcnt0ovf › MAXOVERFLOW)
{
ACSR |= (1‹‹ACBG); //"+"вход - на 1.18 В - компаратор сработает, т.к. "-" вход 0.2/0.4 В
}
}
//ISR(ANA_COMP_vect) //{ //}
#endif
//************************************************** ************
// Функции
//************************************************** ************
//************************************************** ********
// Main program
//************************************************** ********
int main(void)
{
// Declare your local variables here
#ifdef TestCharge // проверка зарядом
// volatile unsigned char Tcharge1, num0, num1, num2, num3, num4;
// volatile unsigned char Count1 = 0x00;
// volatile unsigned int Tsum = 0x0000;
unsigned char Tcharge1, num0, num1, num2, num3, num4;
unsigned char Count1, State;
unsigned int Tsum, T100, T300;
#endif
cli();
SP = RAMEND; //Stack
// TIMSK = 0x00; // запрет прерываний таймеров, initial =0x00
//************************************************** **********
// Инициализация периферии
//************************************************** **********
//выходы: A2 - P_ON, A4 - Discharge, A5 - Charge
HWDDR = (1‹‹LED) | (1‹‹PowerOn) | (1‹‹Charge) | (1‹‹Discharge);
//при старте - Charge - off(1), Discharge - on(1), Mode - PullUp, Power - On (1), D0 - PullUp
HWPORT = (1‹‹BUTTON) | (1‹‹ Discharge) | (1‹‹ Charge);
// TICPORT PB0,1,2 - n/u (programming), RESET PB7; outputs: PWMOUT PB3, DIN PB4, DCLK PB5, LOAD PB6
TICDDR = (1‹‹MISO) | (1‹‹DCLK) | (1‹‹DIN) | (1‹‹LOAD) | (1‹‹PWMOUT); // 1 - OUT
TICPORT = (1‹‹MOSI) | (1‹‹RESET); // 1: OUT -› 1, IN -›PullUp R - On (1)
//=======================================
#ifdef PwmUse
// CK (CPU clock) used
PLLCSR = 0x00;
// Max Value of TCNT1 in PWM:
OCR1C = 250;
// OCR1B - compare match, OC1B, (inv)OC1B changed
OCR1B = 15; // Vcc = 5V -› Uex = 0.3V
// OCR1B = 10; // Vcc = 5V -› Uex = 0.2V
// OCR1B = 5; // Vcc = 5V -› Uex = 0.1V
// OCR1B = 24 ; // 12-0.2V, 24-0.4V (при 3.3В!)
// PWMOUT: PB3/OC1B, mode - PWM1
TCCR1A = (1‹‹COM1B1) | (1‹‹PWM1B); // TCNT1 = OCR1B =› OC1B -› 0, CTC1 = 0
TCCR1B = (1‹‹CS10); //старт ШИМ F = CK
#endif
//=======================================
#ifdef TestCharge
// TCCR0 - прогон 1 временного цикла счетчика для правильного 1-го отсчета
Tcnt0ovf = 0x00;
TIMSK = (1‹‹TOIE0); // TCNT0 Overflow Interrupt Enable
//#define SHORT // 1-й отсчет - Short - при 9000 uF
#ifndef SHORT
TCCR0 = (1‹‹CS01) | (1‹‹CS00); //Start Timer0 CK/64
sei();
while(!(Tcnt0ovf)); // ждем прерывание
#endif
// При С 9000 uF отключение этой строки - 1-е измерение будет - Short -
TCCR0 = 0x00; // Stop Timer0 TCNT0
Tsum = 0x0000;
Count1 = 0x00;
State = 0x00;
HWPORT |= (1‹‹PowerOn);
#endif
Тупо Ctrl-C/Ctrl-V.
Пустых строчек с #include не наблюдаю. "Пропадания" скобок тоже. Что я делаю не так?
UPDATED: а #include РЕАЛЬНО стали пустыми, хотя в предпросмотре все было хорошо. Забавно...
Корежит не по-детски. Не замечал (не пихал код). Пардоньте...
Ну и вывод - вкладывать исходник в zip или что еще из архиваторов, чтобы видно было РЕАЛЬНЫЙ код.
А то ФИГНЯ полная на выходе... Ничего не разобрать...