Atmega8, ADC -> UART, kontrola kódu – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Atmega8, ADC -> UART, kontrola kódu – Mikrokontroléry – Fórum – Programujte.comAtmega8, ADC -> UART, kontrola kódu – Mikrokontroléry – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
serafin0
Duch
22. 10. 2010   #1
-
0
-

Ahoj všem,

s programováním procesorů mám nulové zkušenosti. Moc Vás prosím o kontrolu zdrojového kódu pro ATmega8. Procesor by měl fungovat tak, že hned po připojení napájení začne ADC převádět analogový signál na digitální a výsledek převodu bude posílat přes UART do počítače. Dokud bude připojené napájení, bude se převádět a posílat. Připojená bude krystal 8 MHz.

Děkuji moc za pomoc.



#include <avr/io.h>
#include <inttypes.h>

void InitADC()
{
//reference je napájecí napětí, zarovnání doprava (rozlišení bude 8bit)
ADMUX|= (1<<REFS0)|(1<<ADLAR);

//zapne adc, dělící poměr je 64
ADCSRA|= (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);
}

uint8_t ReadADC()
{
// spustí první konverzi a pokračuje ve free running modu
ADCSRA|= (1<<ADSC)|(1<<ADFR);

return (ADCH);
}

void InitUSART(uint16_t ubrr_value)
{
//nastaví přenosovou rychlost na 9600baud
UBRRL= ubrr_value;
UBRRH= (ubrr_value >>8);


//nastaví formát rámce, asynchronní mode, bez parity, 1 stopbit, délak slova 8bit
UCSRC= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

// povolí vysílač
UCSRB= (1<<TXEN);
}

void USARTWriteChar(char data)
{
// počká, dokud vysálač není připraven
while(!(UCSRA & (1<<UDRE)))
{
//nedělá nic
}

// vynuluje bit TxC
UCSRA|= (1<<TXC);

// zapíše data do buffru USARTu
UDR= data;
}

void main()
{
char data;

// inicializace USART
InitUSART(51);

// inicializace ADC
InitADC();

do{

// přečte data z ADC
data= ReadADC(0);

// odešle data z ADC skrz TxD
USARTWriteChar(data);
}
while(1);
}

Nahlásit jako SPAM
IP: 89.103.64.–
Reklama
Reklama
durmitor
~ Redaktor
0
Věrný člen
22. 10. 2010   #2
-
0
-

A problém je v čem? (Co nefunguje)

řekl bych že nemůže fungovat téměř nic, kde vracíš hodnotu z funkce ReadADC?

Nahlásit jako SPAM
IP: 77.236.208.–
Nejhorší není nemít práci. Nejhorší je nechtít práci...
serafin0
Duch
23. 10. 2010   #3
-
0
-

durmitor: Děkuji za reakci. Funkci ReadADC jsem opravil, vypadl mi řádek, asi chyba při kopírování. Zatím ještě nemám možnost to vyzkoušet, ale rád bych ještě předtím věděl, jestli by to takhle mohlo fungovat, jestli to není úplná pitomost, protože je to můj první kód pro mikroprocesor. Tak jsem se tady obrátil na zkušenější :-).

Nahlásit jako SPAM
IP: 89.103.64.–
Deko
~ Anonymní uživatel
17 příspěvků
17. 3. 2011   #4
-
0
-

Hele postup: vize -> programování -> ladění (už na hotovém HW anebo alespoň SW simulace) -> odladěný program

Nahlásit jako SPAM
IP: 80.188.27.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Zaciatocnik - kontrola kodu — založil jonhnw

Problémy s UART — založil marpit

 

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