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

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

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

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

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

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

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

 
Опции темы
Непрочитано 15.12.2013, 13:38  
harry7777
Частый гость
 
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
harry7777 на пути к лучшему
По умолчанию Переделка кода attini 2313 в atmega8

/************************************************** ***
This program was produced by the
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 31.05.2010
Author : NeVaDa
Company : Microsoft
Comments:
It was here Coviraylhik
Chip type : ATtiny2313
AVR Core Clock frequency: 8,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
************************************************** ***/
#include ‹tiny2313.h›
#include ‹delay.h›
int i;
unsigned char razrad=0b00100000;
bit start=0;
unsigned char cloc[6]={0,0,0,0,0,0};
unsigned char tik=0;
unsigned char des_tik=0;
unsigned char sec=0;
unsigned char des_sec=0;
unsigned char min=0;
unsigned char des_min=0;
unsigned char x=0;
unsigned char znak [10] = {0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111};//знакогенератор OA.
//unsigned char znak [10] = {0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000};//знакогенератор OK.
//****************************** динамическая индикация ************************************
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTD = razrad^0xFF ;
// PORTD = razrad;
PORTB = znak [cloc[x]];
if ((x==2) || (x==4)) {PORTB.7 =1;} else PORTB.7 =0;
razrad››= 1; x++;
if (x==4) {x=0; razrad=0b00001000;}
// if (x==4) {x=0; razrad=0b0001000;}
}
//******************************** отсчет времени ************************************
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
if (start==0) goto m1;
tik++;
if (tik==10) {tik=0; des_tik++;}
if (des_tik==10) {des_tik=0; sec++;}
if (sec==10) {sec=0; des_sec++;}
if (des_sec==6) {des_sec=0; min++;}
if (min==10) {min=0; des_min++;}
if (des_min==10) {des_min=0;}
cloc[0] = sec;
cloc[1] = des_sec;
cloc[2] = min;
cloc[3] = des_min;


m1:
}
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTA=0x00;DDRA=0x00;
PORTB=0x00;DDRB=0xFF;
PORTD=0x40;DDRD=0x3F;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x03;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x04;
OCR1AL=0xE2;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK=0x42;
ACSR=0x80;
#asm("sei")
while (1)
{

if (PIND.6==0)
{start++;
delay_ms(200);}
else
for (i=0;i‹9000;i++)
{
delay_ms(9000);
}
};
}
--------------------------------------------------

#include ‹io.h›
#include ‹mega8.h›
#include ‹delay.h›
int i;
unsigned char razrad=0b00100000;
bit start=0;
unsigned char cloc[6]={0,0,0,0,0,0};
unsigned char tik=0;
unsigned char des_tik=0;
unsigned char sec=0;
unsigned char des_sec=0;
unsigned char min=0;
unsigned char des_min=0;
unsigned char x=0;
unsigned char znak [10] = {0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111};//знакогенератор OA.
//unsigned char znak [10] = {0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000};//знакогенератор OK.
//****************************** динамическая индикация ************************************
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTD = razrad^0xFF ;
// PORTD = razrad;
PORTB = znak [cloc[x]];
if ((x==2) || (x==4)) {PORTB.7 =1;} else PORTB.7 =0;
razrad››= 1; x++;
if (x==4) {x=0; razrad=0b00001000;}
// if (x==4) {x=0; razrad=0b0001000;}
}
//******************************** отсчет времени ************************************
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
if (start==0) goto m1;
tik++;
if (tik==10) {tik=0; des_tik++;}
if (des_tik==10) {des_tik=0; sec++;}
if (sec==10) {sec=0; des_sec++;}
if (des_sec==6) {des_sec=0; min++;}
if (min==10) {min=0; des_min++;}
if (des_min==10) {des_min=0;}
cloc[0] = sec;
cloc[1] = des_sec;
cloc[2] = min;
cloc[3] = des_min;


m1:
}
void main(void)
{

PORTC=0x00;DDRC=0x00;
PORTB=0x00;DDRB=0xFF;
PORTD=0x40;DDRD=0x3F;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x04;
OCR1AL=0xE2;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK=0x42;
ACSR=0x80;
#asm("sei")


while (1)
{

if (PIND.6==0)
{start++;
delay_ms(200);}
else
for (i=0;i‹9000;i++)
{
delay_ms(9000);
}
};
}
-------------------------------
переделал код из attiny2313,
не понимаю почему в atmega8 секундомер не работает
Реклама:
harry7777 вне форума  
Непрочитано 15.12.2013, 14:23  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: переделка кода attini 2313 в atmega8

Добрый день.
Может здесь:
для ATTiny
Код:
// Compare A Match Interrupt: On
а для Mega8
Код:
// Compare A Match Interrupt: Off
Вы взяли значение TIMSK с одного, и прикрепили к другому, вот прерывания и нет.
В ATTiny: Bit 6 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
A Mega8: Bit 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
В TIMSK вставьте 0х10, например.
andries5 вне форума  
Непрочитано 15.12.2013, 15:49  
harry7777
Частый гость
 
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
harry7777 на пути к лучшему
По умолчанию Re: переделка кода attini 2313 в atmega8

Сообщение от andries5 Посмотреть сообщение
Добрый день.
Может здесь:
для ATTiny
Код:
// Compare A Match Interrupt: On
а для Mega8
Код:
// Compare A Match Interrupt: Off
Вы взяли значение TIMSK с одного, и прикрепили к другому, вот прерывания и нет.
В ATTiny: Bit 6 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
A Mega8: Bit 4 – OCIE1A: Timer/Counter1, Output Compare A Match Interrupt Enable
В TIMSK вставьте 0х10, например.
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
TCCR0=0x03;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
#asm("sei")

ПОМЕНЯЛ ПОД ATMEGA8 ИЗ ГОТОВОГО ГЕНЕРАТОРА

ВСЕ РАВНО НЕ РАБОТАЕТ(
harry7777 вне форума  
Непрочитано 15.12.2013, 18:27  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: Переделка кода attini 2313 в atmega8

Ну тогда и присвойте
OCR1AH=0x04;
OCR1AL=0xE2;
а не 0.
Выложите весь проект, чудес не бывает.
И чему равен TIMSK?
andries5 вне форума  
Непрочитано 15.12.2013, 20:42  
harry7777
Частый гость
 
Регистрация: 10.04.2009
Адрес: Санкт-Петербург
Сообщений: 43
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
harry7777 на пути к лучшему
По умолчанию Re: Переделка кода attini 2313 в atmega8

Сообщение от andries5 Посмотреть сообщение
Ну тогда и присвойте
OCR1AH=0x04;
OCR1AL=0xE2;
а не 0.
Выложите весь проект, чудес не бывает.
И чему равен TIMSK?

TIMSK=11;

разобрался спасибо большое


единственное что когда поменял индикатор с общим катодом с которым работало все нормально на общий анод возникли проблемы,секунды почему то стали идти не на первом индикаторе а на втором
harry7777 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ATmega8 и 19кбайт hex кода ??? pirat_os Микроконтроллеры, АЦП, память и т.д 4 18.02.2007 23:53


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


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