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 

Atmega8 USART
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Pon Jun 09, 2014 7:14 pm    Naslov sporočila:  Atmega8 USART Odgovori s citatom

Pozdrav,

začenjam z Atmego8 in njenim USART-om, nikakor se ne znajdem v AtmelStudio in s programiranjem, programator je mk2 (VolkD).

Tukaj je koda, pomagal sem si z Datasheetom, ne vem ali sem pravilno nastavil F_OSC saj ne vem kako in koliko ga naj nastavim. Preko USART pošilja na Bluetooth modul in mu želi spremeniti ime. Toda ne gre.

Prosim za pomoč, prevede mi jo normalno brez napak sprogramiram lahko prav tako, vse skupaj imam na 3V3 napajanju, modul in čip se napajata iz programatorja.

Koda:
/*
 * USART_BT.c
 *
 * Created: 9.6.2014 17:43:43
 *  Author: Grega
 */

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

#define BAUDRATE 115200UL
#define BAUD_PRESCALER ((F_CPU / (BAUDRATE * 16UL)) - 1)

char StartBT[] = "$$$";
char ParitetaBT[] = "SL,N\r";
char Mode[] = "[slovenščina je zame španska vas],0\r";
char ImeBT[] = "SN,Atmega8\r";
char Konec[] = "---\r";

void USART_init(void){
   UBRRH = (uint8_t)(BAUD_PRESCALER >> 8);
   UBRRL = (uint8_t)(BAUD_PRESCALER);
   UCSRB = (1<<RXEN)|(1<<TXEN);               //vklop receiver in transmitter
   UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}

void USART_send(unsigned char data){
   while(!(UCSRA & (1<<UDRE)));
   UDR = data;
}

void USART_potisniString(char* StringPtr){
   while(*StringPtr != 0x00){
      USART_send(*StringPtr);
      StringPtr++;
   }
}

int main(void)
{
   USART_init();
   //_delay_ms(5000);
   while(1)
    {
      _delay_ms(500);
      USART_potisniString(StartBT);
      _delay_ms(500);
      USART_potisniString(ParitetaBT);
      _delay_ms(500);
      USART_potisniString(Mode);
      _delay_ms(500);
      USART_potisniString(ImeBT);
      _delay_ms(500);
      USART_potisniString(Konec);
      _delay_ms(5000);
    }
}

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
BorisK
Član
Član



Pridružen-a: Sre 02 Apr 2008 23:43
Prispevkov: 239
Aktiv.: 1.23
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jun 09, 2014 10:40 pm    Naslov sporočila:   Odgovori s citatom

Jaz bi pogledal z osciloskopom signal Tx, če se na njem kaj dogaja.

In ali si prepričan, da je hitrost 115200 bps tista prava, ki jo bo modul znal sprejeti? Nekam visoka vrednost se mi zdi.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Pon Jun 09, 2014 10:43 pm    Naslov sporočila:   Odgovori s citatom

Ponavadi je v defaultu 9600baud, prepričaj se da usart dela, na terminal na računalniku izpiši kakšen znak.
_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Tor Jun 10, 2014 7:46 am    Naslov sporočila:   Odgovori s citatom

115200 hitrost je prava ker ima bluetooth modul po default nastavljeno to vrednost, modul je RN42. Če se z njim povežem z računalnikom s to hitrostjo dela brez problema.
Sem poskusil tudi z nižjo 9600 pa dela ravno tako.

Osciloskopa nimam da bi pogledal, za računalnik pa tudi nimam pri roki kaj da bi sprobal preko comporta, nivoji so 3.3 napajanje je iz mk2 za mikroprocesor in za modul.

Očitno sem včeraj ko sem spreminjal F_CPU še Atmego uničil, sedaj ne dela več.

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
gumby
Član
Član



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

PrispevekObjavljeno: Tor Jun 10, 2014 2:41 pm    Naslov sporočila:   Odgovori s citatom

Namesto 16MHz kvarca daj 14.7456 in bo stvar začela čudežno delovat.
Za domačo nalogo pa razmisli, zakaj... Wink

btw s spreminjanjem F_CPU ne boš uničil mege.

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5327
Aktiv.: 24.78
Kraj: Domzale

PrispevekObjavljeno: Tor Jun 10, 2014 2:58 pm    Naslov sporočila:   Odgovori s citatom

Ali 11.059200 Smile

LP, g

_________________
...lahko pa se tudi motim ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Tor Jun 10, 2014 6:18 pm    Naslov sporočila:   Odgovori s citatom

V kolikor prav razumem zaradi tega ker je Error najmanjši oz. nič %.

Ne razumem pa kako je mogoče ko sem spreminjal Clock mi Atmego ne prepozna več. Je mogoče da sem ga kako zaklenil ali kako? In kaj narediti?

Ko dam Read pri Device Signature v AtmelStudio mi napiše:

Koda:
Unable to enter programming mode.

Please verify device selection, interface settings, target power and connections to the target device.

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2066
Aktiv.: 9.30
Kraj: Ljubljana

PrispevekObjavljeno: Tor Jun 10, 2014 6:49 pm    Naslov sporočila:   Odgovori s citatom

Kje si spreminjal clock ?

V *.pdf-ju pod "Serial Downloading" med drugim piše:
Citiram:
Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods
for the Serial Clock (SCK) input are defined as follows:
Low:> 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck 12 MHz
High:> 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck 12 MHz
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Tor Jun 10, 2014 6:55 pm    Naslov sporočila:   Odgovori s citatom

Ja nekaj sem spreminjal v nastavitvah Device programimng nekaj pa ročno v kodi.
Sam niti ne vem kaj sem nastavil.

Ne razumem pa tega stavka ki piše v pdf. Mi lahko razložiš kaj si hotel s tem povedati.

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2066
Aktiv.: 9.30
Kraj: Ljubljana

PrispevekObjavljeno: Tor Jun 10, 2014 8:06 pm    Naslov sporočila:   Odgovori s citatom

Max. frekvenca CLK signala pri ISP načinu programiranja je odvisna od hitrosti oscilatorja uC-ja.

Če si spreminjal fuse bite, ali "hitrost" programatorja, je lahko to vzrok ( niso izpolnjeni zgoraj citirani pogoji).
Poskusi programatorju nastavit clock na cca 200kHz, oz. čim nižjo frekvenco.

Če še vedno ne deluje, odstrani kristal in na vhod oscilatorja pripelji zunanji clock signal, z vsaj 4x višjo frekvenco, kot si jo nastavil programatorju. In ne več kot zmore uC.

Če tudi to ne deluje, rabiš paralelni programator.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Čet Jun 12, 2014 4:13 pm    Naslov sporočila:   Odgovori s citatom

Sem naredil spremenil clock spravil čip k življenju (imel sem nastalvjeno premajhen ISP Clock za programiranje). Toda program ne deluje.

Sem preveril z Ociloskopom na izhodu TX pa ni prišlo iz MCU nič.

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3352
Aktiv.: 17.02

PrispevekObjavljeno: Pet Jun 13, 2014 6:29 am    Naslov sporočila:   Odgovori s citatom

Na žalost ne morem prenesti programa na drugi komp, kjer imam WinAvr da bi še sam preizkusil.

Se mi pa malce zdi čudno tole:
Koda:
#define BAUDRATE 115200UL
#define BAUD_PRESCALER ((F_CPU / (BAUDRATE * 16UL)) - 1)


Ne vem, kaj izračuna. in kaj mu pomeni tisti 16UL, kolikšno vrednost ima. Poleg tega da pa res ne vem, kako se deli številka, ki ima na koncu črke Think No, jaz "na peš" sicer znam, kako pa to računalnik naredi...

Jaz bi to prescaler postavil ročno, in sicer moraš za želeno hitrost komunikacije v UBRRH vpisati 0, v UBRRL pa 8 ali 16 - odvisno od vrste komunikacije (tabela št. 63, na strani 163 PDFja AtMege)

S simulacijo v WinAVRju preveri, če se ti to res zgodi..
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



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

PrispevekObjavljeno: Pet Jun 13, 2014 7:03 am    Naslov sporočila:   Odgovori s citatom

lojzek je napisal/a:
Ne vem, kaj izračuna. in kaj mu pomeni tisti 16UL, kolikšno vrednost ima. Poleg tega da pa res ne vem, kako se deli številka, ki ima na koncu črke Think No, jaz "na peš" sicer znam, kako pa to računalnik naredi...

C se nauči, ne ostane drugo...

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
drVrh
Član
Član



Pridružen-a: Sre 20 Feb 2008 20:17
Prispevkov: 918
Aktiv.: 4.68
Kraj: Slovenija-Koroska-Prevalje-Lese

PrispevekObjavljeno: Ned Jun 15, 2014 12:09 pm    Naslov sporočila:   Odgovori s citatom

Zdravo,

se ne spoznam preveč toda ali moram nastaviti še isti Clock v Fusebitih, tam ne najdem tegale specifićnega #define F_CPU 14745600UL; rad bi imel interni clock.

_________________
Iz dneva v dan sem se spraševal kaj je to elektrika, vendar nisem našel odgovora ... in še vedno si postavljam to vprašanje
LP
Grega
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
tilz0R
Član
Član



Pridružen-a: Čet 31 Maj 2012 15:39
Prispevkov: 898
Aktiv.: 6.24
Kraj: Črnomelj

PrispevekObjavljeno: Ned Jun 15, 2014 12:20 pm    Naslov sporočila:   Odgovori s citatom

Atmega8 ima 1, 2, 4, 8 MHz internal RC oscilator.

Izberi fusebite iz seznama, ki so na voljo, izmeri enega izmed "Int. RC Osc".

_________________
Knowledge sharing is caring.
majerle.eu | stm32f4-discovery.net
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group