www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

USART primer

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.20
Kraj: Črnomelj

PrispevekObjavljeno: Pet Mar 30, 2012 9:12 am    Naslov sporočila:  USART primer Odgovori s citatom

Pozdravljeni!

Odločil sem se malo poigrati z USART-om ampak je malo bolj zahtevno kot sem si mislil Neutral. Prosil vas bi, če bi lahko kdo podal primer ter knjižnico USART-a

Najlepša hvala ter lep dan!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
xfce
Član
Član



Pridružen-a: Čet 28 Jul 2011 8:06
Prispevkov: 521
Aktiv.: 3.08

PrispevekObjavljeno: Pet Mar 30, 2012 9:22 am    Naslov sporočila:   Odgovori s citatom

Joj, joj.. to je kot bi rekel, rad bi podrl mašino od avta. Daj mi ključ.

Stvar je lahko rešena hardversko ali softversko.

Vsaj povej kateri mikrokrmilnik imaš, ali pač kje bi to rad imel.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
S53DZ
Član
Član



Pridružen-a: Čet 28 Apr 2011 9:27
Prispevkov: 951
Aktiv.: 5.52
Kraj: Ljubljana

PrispevekObjavljeno: Pet Mar 30, 2012 9:42 am    Naslov sporočila:   Odgovori s citatom

Meni je najbolj pomagalo, ko sem iz UART-a prešel na COM (RS-232) in uredil komunikacijo s terminalskim programom na PC-ju/notesniku. Tako sem najlažje uredil komunikacijo v obeh smereh.
Sicer je pa treba pri UART-u:
- nastaviti hitrost,
- kontrolirati zastavico rx in tx buffer-ja in
- brati ali pisati v data register.

Pri sinhronem imam pa dobre izkušnje samo s SPI.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.20
Kraj: Črnomelj

PrispevekObjavljeno: Pet Mar 30, 2012 12:07 pm    Naslov sporočila:   Odgovori s citatom

uporabil bi ATMEGA324 z čipom max232. Za začetek bi probal izpisati besedo na terminal, potem ko mi bi bilo pa kaj bolj jasno pa visual basic...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.36
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pet Mar 30, 2012 12:28 pm    Naslov sporočila:   Odgovori s citatom

Iz datasheeta tvojega krmilnika poiščeš registre za uart in nastaviš vrednosti kot piše. Verjetno se nastavi največ pet registrov in mora delati.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
siljo
Član
Član



Pridružen-a: Tor 28 Okt 2003 8:08
Prispevkov: 1035
Aktiv.: 4.37
Kraj: Ribn'ca

PrispevekObjavljeno: Pet Mar 30, 2012 1:03 pm    Naslov sporočila:   Odgovori s citatom

C?
BASCOM?
FastAVR?
assembler?
....

_________________
Lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.20
Kraj: Črnomelj

PrispevekObjavljeno: Pet Mar 30, 2012 1:11 pm    Naslov sporočila:   Odgovori s citatom

siljo je napisal/a:
C?
BASCOM?
FastAVR?
assembler?
....


se opravičujem v C jeziku
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Pet Mar 30, 2012 4:31 pm    Naslov sporočila:   Odgovori s citatom

Deluje z atmega8, moralo bi tudi z atmega32...

Pomeči ven, česar ne rabiš, ta program običajno poženem, če kaj preizkušam in je not nametanih že preveč smeti, samo dela pa. Smile

LP G

Koda:

#ifndef F_CPU
   #define F_CPU 11059200UL
#endif

#include <avr/io.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <util/delay.h>

int delay;
int delay1;

//This function is used to initialize the USART
//at a given UBRR value
void USARTInit(uint16_t ubrr_value)
{

   //Set Baud rate

   UBRRL = ubrr_value;
   UBRRH = (ubrr_value>>8);

   /*Set Frame Format


   >> Asynchronous mode
   >> No Parity
   >> 1 StopBit

   >> char size 8

   */

   UCSRC=(1<<URSEL)|(3<<UCSZ0);


   //Enable The receiver and transmitter

   UCSRB=(1<<RXEN)|(1<<TXEN);


}
//******************************************************************************************
int uart_putch(char ch, FILE *stream)
{
   if (ch == '\n')
    uart_putch('\r', stream);

   while (!(UCSRA & (1<<UDRE)));
   UDR=ch;

   return 0;
}

int uart_getch(FILE *stream)
{
   unsigned char ch;

   while (!(UCSRA & (1<<RXC)));
   ch=UDR; 

   /* Echo the output back to the terminal */
   uart_putch(ch,stream);     

   return ch;
}
//*******************************************************************************************

/* Assign I/O stream to UART */
FILE uart_str = FDEV_SETUP_STREAM(uart_putch, uart_getch, _FDEV_SETUP_RW);

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



void CLK_0()
{

    PORTD = 0b00100000;
    for (delay=0; delay < 10;delay++){}
    }
void CLK_1()
{
    PORTD = 0b01000000;
    for (delay=0; delay < 5;delay++){}
    }

int beri_enkoder(){
    uint8_t i;
    uint8_t encoder=0;
     uint8_t j;

     encoder = 0;
        for(i=0;i<9;i++){
          CLK_1();
        if(PIND & (1<<PD4)){
            j = 1; }

        else {
            j = 0; }

        CLK_0();
        encoder = (encoder + j);
       if(i<8){
        encoder = (encoder << 1);
        }
   
   }
   return(encoder);
}

void ADC_init(int channel)
{
   ADMUX = channel;
   //prescaler na 1MHz/8=125khz
   ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);
   channel = ADC_Read();
}

int ADC_Read(void)
{
   char i;
   int ADC_temp;
   int ADCr =0;

//sbi(ADCSRA, ADEN);
ADCSRA |=(1<<ADSC);
   while(!(ADCSRA & 0x10));
      for (i=0;i<8;i++)
      {
         ADCSRA |=(1<<ADSC);   
         while(!(ADCSRA & 0x10));
         ADC_temp = ADCL;
         ADC_temp += (ADCH <<8);
         ADCr +=ADC_temp;
         }
      ADCr = ADCr >> 3;
//cbi(ADCSRA,ADEN);
return ADCr;
}

double Beri_tlak(void)
{
   double ADC_vrednost;
   double Vout;
   double tlak;
   
   ADC_vrednost = ADC_Read();
   Vout = (5*ADC_vrednost) / 1024;

   tlak = ((0.76+Vout) / 0.05295);
   tlak = (tlak*10)+31;
   
   return (tlak);
}



int main() {
//    double tlak;      
    int encoder;
    int *ukaz;
     stdout = stdin = &uart_str; // to poveže uart z STDIO.H !!!!!
    DDRD=0b01101100; //PORTD2 in PORTD3 sta izhoda, ostalo so vhodi
     USARTInit(5);    //UBRR = 5 =11059200mhz & 115200 baud
//    fdevopen(out,0,0); //important if using stdio.h functions    
//    CLK_0();
//    for (delay=0; delay < 2000;delay++){}  // nekaj maleag zakasnitve
   
//   ADC_init(1);

   while(1)
   {
   
//   tlak=Beri_tlak();
//    printf("%f \n",tlak);
//  printf("mBar\n");
   scanf("%i",&ukaz);
//   printf("Vrednost ukaz = %i\n\r", ukaz);
    if (ukaz == 5)
   {
    printf("To je prva vrstica teksta \n\r");
   printf("To je druga vrstica teksta \n\r");
   printf("To je tretja vrstica teksta \n\r");
   printf("To je cetrta vrstica teksta \n\r");
   printf("To je peta vrstica teksta \n\r");
   printf("To je sesta vrstica teksta \n\r");
   printf("To je sedma vrstica teksta \n\r");
   printf("To je osma vrstica teksta \n\r");
   printf("To je deveta vrstica teksta \n\r");
   }

//   encoder = beri_enkoder();   
//   printf("%d \n",encoder);
//    _delay_ms(10000);

   

   }
   

}


_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
tonko
Član
Član



Pridružen-a: Sob 25 Jun 2005 13:45
Prispevkov: 541
Aktiv.: 2.28
Kraj: Črnomelj

PrispevekObjavljeno: Sob Mar 31, 2012 10:17 am    Naslov sporočila:   Odgovori s citatom

Kateri 'C' ?
Če delaš s CodevisionAVR imaš čarovnika, ki ti s par kliki zgenerira cel projekt. Ti moraš samo še v main funkcijo dodati izpis npr. printf("DOBER DAN\n"); , skompajlirati projekt ter ga vpisati v mikrokontroler.
Skratka vse skupaj imaš dela za minuto ali dve.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
juref
Član
Član



Pridružen-a: Tor 15 Dec 2009 11:45
Prispevkov: 226
Aktiv.: 1.20
Kraj: Črnomelj

PrispevekObjavljeno: Tor Apr 03, 2012 12:04 pm    Naslov sporočila:   Odgovori s citatom

hvala lepa vsem!
Ja codevision se moram malo naučit hehe Very Happy drugače pa hvala še enkrat!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
powr
Član
Član



Pridružen-a: Tor 18 Dec 2007 13:20
Prispevkov: 668
Aktiv.: 3.13
Kraj: Postojna

PrispevekObjavljeno: Sre Apr 04, 2012 12:46 am    Naslov sporočila:   Odgovori s citatom

Ampak v free verziji nimas UART i2c in ostalih fines.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.41

PrispevekObjavljeno: Sre Apr 04, 2012 7:10 am    Naslov sporočila:   Odgovori s citatom

Če bi se rad kaj naučil, potem tace stran od čarovnika. Poglej v datasheet, katere registre moraš nastavit. Spisati moraš tudi funkcije za pošiljanje in sprejem znaka.
Sicer pa imaš primere zraven GCC, poglej jih.

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 496 dni


Powered by phpBB © 2001, 2005 phpBB Group