|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.65 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Pon Jun 09, 2014 7:14 pm Naslov sporočila: Atmega8 USART |
|
|
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 |
|
|
BorisK Član
Pridružen-a: Sre 02 Apr 2008 23:43 Prispevkov: 239 Aktiv.: 1.22 Kraj: Ljubljana
|
Objavljeno: Pon Jun 09, 2014 10:40 pm Naslov sporočila: |
|
|
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 |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.17 Kraj: Črnomelj
|
Objavljeno: Pon Jun 09, 2014 10:43 pm Naslov sporočila: |
|
|
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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.65 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Tor Jun 10, 2014 7:46 am Naslov sporočila: |
|
|
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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.60
|
Objavljeno: Tor Jun 10, 2014 2:41 pm Naslov sporočila: |
|
|
Namesto 16MHz kvarca daj 14.7456 in bo stvar začela čudežno delovat.
Za domačo nalogo pa razmisli, zakaj...
btw s spreminjanjem F_CPU ne boš uničil mege. _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
mucek Član
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5342 Aktiv.: 24.67 Kraj: Domzale
|
Objavljeno: Tor Jun 10, 2014 2:58 pm Naslov sporočila: |
|
|
Ali 11.059200
LP, g _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.65 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Tor Jun 10, 2014 6:18 pm Naslov sporočila: |
|
|
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 |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2068 Aktiv.: 9.25 Kraj: Ljubljana
|
Objavljeno: Tor Jun 10, 2014 6:49 pm Naslov sporočila: |
|
|
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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.65 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Tor Jun 10, 2014 6:55 pm Naslov sporočila: |
|
|
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 |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2068 Aktiv.: 9.25 Kraj: Ljubljana
|
Objavljeno: Tor Jun 10, 2014 8:06 pm Naslov sporočila: |
|
|
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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.65 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Čet Jun 12, 2014 4:13 pm Naslov sporočila: |
|
|
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 |
|
|
lojzek Član
Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3356 Aktiv.: 16.91
|
Objavljeno: Pet Jun 13, 2014 6:29 am Naslov sporočila: |
|
|
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 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 |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.60
|
Objavljeno: Pet Jun 13, 2014 7:03 am Naslov sporočila: |
|
|
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 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 |
|
|
drVrh Član
Pridružen-a: Sre 20 Feb 2008 20:17 Prispevkov: 918 Aktiv.: 4.65 Kraj: Slovenija-Koroska-Prevalje-Lese
|
Objavljeno: Ned Jun 15, 2014 12:09 pm Naslov sporočila: |
|
|
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 |
|
|
tilz0R Član
Pridružen-a: Čet 31 Maj 2012 15:39 Prispevkov: 898 Aktiv.: 6.17 Kraj: Črnomelj
|
Objavljeno: Ned Jun 15, 2014 12:20 pm Naslov sporočila: |
|
|
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 |
|
|
|
|
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: 93 dni
Powered by phpBB © 2001, 2005 phpBB Group
|