Anonymní profil Mark – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Mark – Programujte.comAnonymní profil Mark – Programujte.com

 

Příspěvky odeslané z IP adresy 81.19.5.–

Mark
Mikrokontroléry › Obsluha inkrementálního rota…
9. 11. 2010   #135712

To xhans69 :
Dík za radu, já myslím že mi to bude stačit tak jak to řešíš ty, potřebuju pouze inkrementovat nebo dekrementovat hodnotu, kterou pak použiji ve výpočtu pro nastavení PWM.

Mark
Mikrokontroléry › Obsluha inkrementálního rota…
9. 11. 2010   #135709

Věděl by někdo jak naprogramovat obsluhu tohoto http://www.gme.cz/_dokumentace/dokumenty/532/532-087/dsh.532-087.1.pdf v C??? Nebo alespoň nastínit jak ošetřit aby uživatel stihnul otočit tím knoflíkem než program poběží dále. bude se tím nepřímo nastavovat konstanta pro nastavení PWM.

Dík za rady

Opteron
Mikrokontroléry › Teplotní čidlo TMP100 a Code…
1. 11. 2010   #135254

Zdravím kolegové,
začínám s AVR v CodeVision a snažím se rozchodit teplotní čidlo TMP100 od texas instruments komunikující pomocí I2C. Čidlo je připojeno na ATmega32, ke které je připojen LCD displej a na I2C sběrnici společně s čidlem ještě EEPROM 24LC16. V EEPROM jsou uložené znaky abecedy, které se vypisují na LCD (slouží to pouze pro ověření že I2C sběrnice komunikuje). Problém je ale když chci komunikovat s čidlem, nějak z toho nemůžu dostat tu hodnotu teploty na LCD (teplota se musí podle datasheetu přepočítat ale to zatím není třeba, nejde mi vytáhnout to binární slovo a nějak jej zobrazit na LCD). Přikládám tedy ještě zdroják, snad si s tím někdo bude vědět rady, já totiž nevím jestli číslo, které posílám na LCD není moc vysoké a proto se na LCD zobrazuje celý znak 8x5bodů nebo jestli to I2C vůbec nefunguje. Nevím jak to převést aby to na tom LCD zobrazovalo převedenou binární hodnotu do desítkového čísla, příkaz lcd_putchar(); mi bere pouze bin a pomocí funkce itoa to převést zase nejde.


/*****************************************************
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 : 1.11.2010
Author : NeVaDa
Company :
Comments:


Chip type : ATmega32
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*****************************************************/

#include <mega32.h>
#include <delay.h>
#include <stdlib.h>
#include <bcd.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x1B ;PORTA
.equ __sda_bit=7
.equ __scl_bit=0
#endasm
#include <i2c.h>
unsigned char d;
unsigned char t1;
unsigned char t2;
int i;
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=FFFFh
// 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=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

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

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

// I2C Bus initialization
i2c_init();

// LCD module initialization
lcd_init(20);
lcd_gotoxy(0,0);
for(i=0;i<32;i++)\\Výpis dat z EEPROM na LCD (funguje)
{
i2c_init();
i2c_start();
i2c_write(0xA0);
i2c_write(i);
i2c_start();
i2c_write(0xA1);
d=i2c_read(0);
i2c_stop();
lcd_putchar(d);


};
while (1)
{

i2c_init();
i2c_start();
i2c_write(0x9C); \\Adresa čidla je 9C pro zápis
i2c_write(0x00); \\Výběr registru s hodnotou teploty
i2c_write(0x9D); \\Adresa čipu pro čtení (9D)
t1=i2c_read(0); \\Uložení MSB slova
t2=i2c_read(0); \\Uložení LSB slova
i2c_stop();

lcd_gotoxy(15,2);
lcd_putchar(t1); \\Zde se rozsvítí celý znak
lcd_gotoxy(15,3);
lcd_putchar(t2); \\Zde se rozsvítí celý znak
lcd_gotoxy(0,3);
lcd_puts("Teplota:");
delay_ms(100);
// Place your code here

};
}


Díky za rady

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý