RTV forum PL | NewsGroups PL

Jak dostosować kod termometru cyfrowego do mikrokontrolera ATmega8?

Co zmienić?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak dostosować kod termometru cyfrowego do mikrokontrolera ATmega8?

Gibol
Guest

Thu Nov 23, 2006 10:33 pm   



Co zmienić w programie żeby chulało mi pod ATmega8 (akurat taki mam na
stanie)


/**************************************
thermo.c
Digital Thermometer -55C to +125C
AVR 90S2313 & DS1820

Copyright 2001 by Wichit Sirichote

**************************************/

#include <90s2313.h>
#include <math.h>


// 1 Wire Bus functions
#asm
.equ __w1_port=0x12
.equ __w1_bit=6
#endasm
#include <1wire.h>

// DS1820 temperature sensor functions
#include <ds1820.h>

// Declare your global variables here

unsigned char tick,i,digit;
unsigned char heat[4];
unsigned int xtimer1;
int temp,T,X1,X2,X3,X4,X5; // signed number for negative and positve
temperature manipulating

char key;

unsigned char convert[10] =
{0x3F,0x06,0xdb,0xcf,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

#define segment PORTB
#define LED_digit PORTD


// converts 16-bit data in T to display buffer for both negative and
positive reading

void heatToBuffer()
{
if(T<0){
heat[3] = 0x40; // if negative, put -
heat[0] = 0x39; // C

T = abs(T); // get only amplitude
heat[1] = convert[T%10];
heat[2] = convert[T/10];
if (heat[2] == 0x3f)
heat[2] = 0; // off msd
}
else
{
heat[0] = 0x39; // C

heat[3] = convert[T/100];
temp = T%100;
heat[1] = convert[temp%10];
heat[2] = convert[temp/10];
// off msd
if (heat[3] == 0x3f)
{
heat[3] = 0;
if(heat[2] == 0x3f)
heat[2] = 0;
}
}
}


LPF() // performs five-point moving average
{
X5=X4;
X4=X3;
X3=X2;
X2=X1;
X1= T;
T = (X1+X2+X3+X4+X5)/5;
}


read_temp()
{
if(++xtimer1 >=5)
{
xtimer1 = 0;
segment = 0xff;
T = ds1820_temperature_10(0)/10; // read DS1820 every 5 sec.
LPF(); // enter filter
heatToBuffer(); // convert it
}
}

// Timer 0 overflow interrupt service routine
// timer interrupt every 1/15 sec provides foreground task to be run
periodically.

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
switch (++tick){
case 15: tick = 0;
read_temp(); //second_task();
}

}

void scanLED() /* scan 4-digit LED and 4-key switch, if key pressed key =
0-3
else key = -1 */
// adapted from 89C2051 project if needs scan key, find one bit input port
{
char i;
digit = 0x20;
key = -1;
for( i = 0; i < 4; i++) /* 4-DIGIT scanning */
{
LED_digit = ~digit; /* send complement[digit] */
segment = ~heat[i]; /* send complement[segment] */
delay_ms(1); /* delay a while */
segment = 0xff; /* off LED */
// if ((PORTD & 0x10) == 0) /* if key pressed P3.4 became low */
// key = i; /* save key position to key variable */
digit>>=1; /* next digit */
}
}

void main(void)
{

DDRB=0xFF;
PORTB=0x00;

DDRD=0x7F;
PORTD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Output Compare
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

// 1 Wire Bus initialization
w1_init();

// Global enable interrupts
#asm("sei")

// 1 Wire Bus initialization
w1_init();

T = 34;
heatToBuffer();

while (1)
{
scanLED(); // run background task forever
}

mIrO
Guest

Thu Nov 23, 2006 11:04 pm   



Użytkownik "Gibol" napisał w wiadomości
Quote:
Co zmienić w programie żeby chulało mi pod ATmega8 (akurat taki mam na
stanie)

Programiste ;P

MSPANC

--
Pzdr,
mIrO

Gibol
Guest

Thu Nov 23, 2006 11:09 pm   



Quote:
Programiste ;P


Mam juz ten projekt na 8051, tylko to nie ma isp i nie che mi sie motać z
programatorem. Znalazlem wiec na tego AVRa tyle ze mam mege 8 i na niej
chciałbym to postawić a moje umiejetnosci programowania sa na poziomie
bardzo początkującym. Mniej wiecej kojaze o co chodzi Razz

mIrO
Guest

Thu Nov 23, 2006 11:20 pm   



Użytkownik "Gibol" napisał w wiadomości

Quote:
a moje umiejetnosci programowania sa na poziomie bardzo początkującym.
Mniej wiecej kojaze o co chodzi Razz

To warto sobie cos w asmie napisac - pozwala na nauczenie sie zasady
dzialania rodziny kontrolerow ;)

--
Pzdr,
mIrO

Wmak
Guest

Thu Nov 23, 2006 11:41 pm   



mIrO <miro@spamowi_mowie_nie.pl> napisał(a):

Quote:
Użytkownik "Gibol" napisał w wiadomości
Co zmienić w programie żeby chulało mi pod ATmega8 (akurat taki mam na
stanie)

Programiste ;P

MSPANC

I słownik ortograficzny...


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Gibol
Guest

Fri Nov 24, 2006 12:06 am   



Quote:
mIrO <miro@spamowi_mowie_nie.pl> napisał(a):

Użytkownik "Gibol" napisał w wiadomości
Co zmienić w programie żeby hulało mi pod ATmega8 (akurat taki mam na
stanie)

Programiste ;P

MSPANC

I słownik ortograficzny...

Dobra, dzięki za cenne rady, ale moze jednak ktoś mi powie, czy musze cos
zmieniac oprócz <90s2313.h> ?

Artur M. Piwko
Guest

Fri Nov 24, 2006 12:40 pm   



In the darkest hour on Thu, 23 Nov 2006 23:20:06 +0100,
mIrO <miro@spamowi_mowie_nie.pl> screamed:
Quote:
a moje umiejetnosci programowania sa na poziomie bardzo początkującym.
Mniej wiecej kojaze o co chodzi :P

To warto sobie cos w asmie napisac - pozwala na nauczenie sie zasady
dzialania rodziny kontrolerow ;)


Szkoda tracić na pisanie w 100% asm czasu.

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:212B ]
[ 12:11:58 user up 11170 days, 0:06, 1 user, load average: 0.06, 0.06, 0.06 ]

The butler is innocent.

Robgold
Guest

Fri Nov 24, 2006 1:12 pm   



Użytkownik "Gibol" <gibol@skrzynka_w_goglach.com> napisał w wiadomości news:ek56ck$cq7$1@nemesis.news.tpi.pl...
Quote:


Programiste ;P


Mam juz ten projekt na 8051, tylko to nie ma isp i nie che mi sie motać z
programatorem. Znalazlem wiec na tego AVRa tyle ze mam mege 8 i na niej
chciałbym to postawić a moje umiejetnosci programowania sa na poziomie
bardzo początkującym. Mniej wiecej kojaze o co chodzi Razz

Napisz sobie to samemu w Bascom'ie. Wieksza radosc bedzie a caly program termometru to zaledwie kilka linijek Smile


mIrO
Guest

Fri Nov 24, 2006 1:27 pm   



Użytkownik " Wmak" napisał w wiadomości
Quote:
Użytkownik "Gibol" napisał w wiadomości
Co zmienić w programie żeby chulało mi pod ATmega8 (akurat taki mam na
stanie)

Programiste ;P

MSPANC

I słownik ortograficzny...

Tego nawet nie zauwazylem Smile
A onegdaj w szkolach nawet wierszyka uczyli, zeby lepiej pisownie takich
wyrazow zapamietac ;)

--
Pzdr,
mIrO

mIrO
Guest

Fri Nov 24, 2006 1:30 pm   



Użytkownik " Wmak" napisał w wiadomości
Quote:
Użytkownik "Gibol" napisał w wiadomości
Co zmienić w programie żeby chulało mi pod ATmega8 (akurat taki mam na
stanie)

Programiste ;P

MSPANC

I słownik ortograficzny...

Tego nawet nie zauwazylem Smile
A onegdaj w szkolach nawet wierszyka takiego uczyli:

Kłopotliwe samo h, Dość szczególną skłonność ma,
lubi hałaśliwe słowa:
hak, harmider, hałasować,
heca, hurmem, hej, hop,
hura, hola, horda, hejnał,
hulać, hasać, halo, hop,
wataha ...
W tych wypadkach się nie wahaj.

;)

--
Pzdr,
mIrO

Marcin Stanisz
Guest

Sat Nov 25, 2006 6:04 am   



Dnia Fri, 24 Nov 2006 00:06:25 +0100, Gibol napisał(a):
Quote:
Dobra, dzięki za cenne rady, ale moze jednak ktoś mi powie, czy musze cos
zmieniac oprócz <90s2313.h> ?

Nie każ nam grzebać po manualach procków Wink Znajdź w kodzie fragmenty
zależne od sprzętu (na pierwszy rzut oka inicjalizacja timera i
komparatora, fuse bity też będą inaczej ustawione) i posprawdzaj, czy żeby
osiągnąć opisany w programie efekt nie trzeba przypadkiem wstawić innyh
wartości.

Pozdrawiam
Marcin Stanisz
--

"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"

mIrO
Guest

Mon Nov 27, 2006 7:18 pm   



Użytkownik "Artur M. Piwko" napisał w wiadomości
Quote:
Szkoda tracić na pisanie w 100% asm czasu.

Na pisanie szkoda czasu, na nauke architektury kontrolera wcale.

--
Pzdr,
mIrO

elektroda NewsGroups Forum Index - Elektronika Polska - Jak dostosować kod termometru cyfrowego do mikrokontrolera ATmega8?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map