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 

LPC2378 (MCB2300) ter UART težava
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
RGorazd
Član
Član



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

PrispevekObjavljeno: Ned Nov 01, 2009 3:03 pm    Naslov sporočila:  LPC2378 (MCB2300) ter UART težava Odgovori s citatom

Živjo!

Spet sem se "spotaknil", z glavo večkrat udaril, a nič dosegel.

Stvar je taka. Iz primera Blinky sem pobral datoteko serial.c, ki naj bi inicializiral UART0 in UART1, ter naredil en zelo kratek testni program, ki naj bi s pomočjo printf funkcije pošiljal vsebino prek rs232. Vendar se to ne zgodi. Tudi če stvar zaženem v simulatorju, ne pride do inicializacije, medtem ko v Blinky primeru pa ?! V samem blinky sem pregledal vse datoteke od začetka do konca, pa nisem našel nič takega eksplicitnega, kar bi še botrovalo k delovanju, tako da sedaj se obračam na sstrokovnjake. Še kode...

To je v bistvu main :

Koda:

#include <LPC23XX.H>
#include "serial.c"
#include <stdio.h>

int main(void){
int x;
short y;
init_serial();   
    while(1){
    y++;
    for(x=0;x<55500;x++);
    printf ("Vrednost Y:=%c \n\n", y);   
   
   if (y==255) y=0;
   
   }
}


To pa je cipy/paste iz serial.c

Koda:

/******************************************************************************/
/* SERIAL.C: Low Level Serial Routines                                        */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2006 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/

#include <LPC23xx.H>                     /* LPC23xx definitions               */

#define UART0                          /* Use UART 0 for printf             */

/* If UART 0 is used for printf                                               */
#ifdef UART0
  #define UxFDR  U0FDR
  #define UxLCR  U0LCR
  #define UxDLL  U0DLL
  #define UxDLM  U0DLM
  #define UxLSR  U0LSR
  #define UxTHR  U0THR
  #define UxRBR  U0RBR
/* If UART 1 is used for printf                                               */
#elif defined(UART1)
  #define UxFDR  U1FDR
  #define UxLCR  U1LCR
  #define UxDLL  U1DLL
  #define UxDLM  U1DLM
  #define UxLSR  U1LSR
  #define UxTHR  U1THR
  #define UxRBR  U1RBR
#endif


void init_serial (void)  {               /* Initialize Serial Interface       */
  #ifdef UART0
    PINSEL0 |= 0x00000050;               /* Enable TxD0 and RxD0              */
  #elif defined (UART1)
    PINSEL0 |= 0x40000000;               /* Enable TxD1                       */
    PINSEL1 |= 0x00000001;               /* Enable RxD1                       */
  #endif
  UxFDR    = 0;                          /* Fractional divider not used       */
  UxLCR    = 0x83;                       /* 8 bits, no Parity, 1 Stop bit     */
  UxDLL    = 78;                         /* 9600 Baud Rate @ 12.0 MHZ PCLK    */
  UxDLM    = 0;                          /* High divisor latch = 0            */
  UxLCR    = 0x03;                       /* DLAB = 0                          */
}


/* Implementation of putchar (also used by printf function to output data)    */
int putchar (int ch)  {                 /* Write character to Serial Port    */

  while (!(UxLSR & 0x20));

  return (UxTHR = ch);
}


int getkey (void)  {                     /* Read character from Serial Port   */

  while (!(UxLSR & 0x01));

  return (UxRBR);
}


Če kdo kaj opazi kje ga streljam mimo...

LP G

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



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

PrispevekObjavljeno: Ned Nov 01, 2009 5:59 pm    Naslov sporočila:   Odgovori s citatom

Hmm...

ugotovil sem, da če vržem ven ukaz printf, se pravi da nebi pošiljal nič na uart, se mi v simulatorju uart lepo inicializira. Čim pa uporabim printf ali kateri drugi ukaz za pošiljanje česarkoli, se ne inicializira več?! Nevem, v čem bi bil lahko problem.

LP G

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



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Ned Nov 01, 2009 6:41 pm    Naslov sporočila:   Odgovori s citatom

Kakšne warninge ti javi toolchain?

A retarget.c prevajaš zraven?
Ta ti med drugim v bistvu zlinka funkcijo sendchar z printf.
Če nisi direktno uporabil retarget.c iz primerov,
seveda enako reč lahko napišeš sam.

_________________
Question is more important than the answer.(Plato)
Nazaj na vrh
Skrit 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: Ned Nov 01, 2009 6:51 pm    Naslov sporočila:   Odgovori s citatom

Ahaaaaaaa...ne tega pa res nisem ne includal, še manj pa uporabil.
Bom poskusil in poročam.


LP G

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



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

PrispevekObjavljeno: Pon Nov 02, 2009 9:15 am    Naslov sporočila:   Odgovori s citatom

No, sem vključil zraven še retarget.c in stvar se je prevedla lepo, tudi v simulatorju lepo dela, UART se inicializira tako kot želim, simulacija terminalskega okna pošilja željeno, vendar na izhodu ne dobim nič. Pregledal sem vse štiri izhode, tako za vsak slučaj (Uart0-3), pa ne dobim na nobenemu izhodu ničesar? Siucer je bilo včeraj že malce pozno za se s tem igrat. Bom popoldne pogledal, kje ga biksam.

LP G

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



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Pon Nov 02, 2009 11:14 am    Naslov sporočila:   Odgovori s citatom

No, če si zadevo poštimal, da ti deluje izpis v simulatorju, bi ti moralo tudi na tvoji plati.
Ali meriš odziv na izhodu MCU-ja ali za kakšnimi RS-232 driver-ji?

_________________
Question is more important than the answer.(Plato)
Nazaj na vrh
Skrit 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: Tor Nov 03, 2009 12:10 am    Naslov sporočila:   Odgovori s citatom

Ufff....znoru bom...

Stvar v simulatroju dobro dela, na plati ne dobim pa nič ven. Meril sem direkt na padu za TxD0. Vse sem pustil tako kot v blinkiju...v simulatorju če odprem UART #1 okno je videti, da pošilja, v resnici se pa nič ne zgodi. Blinky deluje normalno (v kolikor bi kdo sklepal, da je kaj narobe s plato);

Main:

Koda:

#include "retarget.c"
#include "serial.c"
#include <stdio.h>
#include <LPC23XX.H>

//extern       void init_serial    (void);
int main(void){
short y=0;
int bzz;
int byy;
PINSEL10 = 0;
init_serial();   
    while(1){
    y++;
    for(bzz=0;bzz<65000;bzz++){       
       for(byy=0;byy<6;byy++){}
    }
   
    if (y==255) {y=0;}
    //printf ("Vrednost Y: %c \n", y);
    printf ("AD value = 0x%03x\n\r", y);
   }
}



Celo pavzo sem podaljšal, v kolikor bi bila ta sporna, samo ni....

Serial.c

Koda:

/******************************************************************************/
/* SERIAL.C: Low Level Serial Routines                                        */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2006 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/

#include <LPC23xx.H>                     /* LPC23xx definitions               */
#define UART0                            /* Use UART 0 for printf             */

/* If UART 0 is used for printf                                               */
#ifdef UART0
  #define UxFDR  U0FDR
  #define UxLCR  U0LCR
  #define UxDLL  U0DLL
  #define UxDLM  U0DLM
  #define UxLSR  U0LSR
  #define UxTHR  U0THR
  #define UxRBR  U0RBR
/* If UART 1 is used for printf                                               */
#elif defined(UART1)
  #define UxFDR  U1FDR
  #define UxLCR  U1LCR
  #define UxDLL  U1DLL
  #define UxDLM  U1DLM
  #define UxLSR  U1LSR
  #define UxTHR  U1THR
  #define UxRBR  U1RBR
#endif


void init_serial (void)  {               /* Initialize Serial Interface       */
  #ifdef UART0
    PINSEL0 |= 0x00000050;
                                   /* Enable TxD0 and RxD0              */
  #elif defined (UART1)
    PINSEL0 |= 0x40000000;               /* Enable TxD1                       */
    PINSEL1 |= 0x00000001;               /* Enable RxD1                       */
  #endif
  UxFDR    = 0;                          /* Fractional divider not used       */
  UxLCR    = 0x83;                       /* 8 bits, no Parity, 1 Stop bit     */
  UxDLL    = 78;                         /* 9600 Baud Rate @ 12.0 MHZ PCLK    */
  UxDLM    = 0;                          /* High divisor latch = 0            */
  UxLCR    = 0x03;                       /* DLAB = 0                          */
}


/* Implementation of putchar (also used by printf function to output data)    */
int sendchar (int ch)  {                 /* Write character to Serial Port    */

  while (!(UxLSR & 0x20));

  return (UxTHR = ch);
}


int getkey (void)  {                     /* Read character from Serial Port   */

  while (!(UxLSR & 0x01));

  return (UxRBR);
}


in pa retarget.c

Koda:


/******************************************************************************/
/* RETARGET.C: 'Retarget' layer for target-dependent low level functions      */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2006 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/

#include <stdio.h>
#include <rt_misc.h>

#pragma import(__use_no_semihosting_swi)


extern int  sendchar(int ch);  /* in serial.c */


struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;


int fputc(int ch, FILE *f) {
  return (sendchar(ch));
}


int ferror(FILE *f) {
  /* Your implementation of ferror */
  return EOF;
}


void _ttywrch(int ch) {
  sendchar(ch);
}


void _sys_exit(int return_code) {
label:  goto label;  /* endless loop */
}



Če kdo vidi kak feler, se priporočam...

LP G

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



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.04
Kraj: Novo mesto

PrispevekObjavljeno: Tor Nov 03, 2009 12:37 am    Naslov sporočila:   Odgovori s citatom

alessio je napisal/a:
Ali meriš odziv na izhodu MCU-ja ali za kakšnimi RS-232 driver-ji?


+ še vprašanje: S čim meriš?
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: Tor Nov 03, 2009 10:26 am    Naslov sporočila:   Odgovori s citatom

Vse Tx-e sem prevohal z osciloskopom. Dogajanje bi moral videti, tako kot ga vidim, če zaženem tisti Blinky primer, ki pošilja vrednost ADja. TAkrat tudi lepo vidim na UART0 paketke.

LP G

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



Pridružen-a: Pon 04 Dec 2006 8:39
Prispevkov: 363
Aktiv.: 1.61
Kraj: Ljubljana

PrispevekObjavljeno: Tor Nov 03, 2009 11:05 am    Naslov sporočila:   Odgovori s citatom

Hm, saj verjetno to ni problem, samo zakaj v *.c datoteke includaš *.c datoteke?

Koda:
#include "retarget.c"
#include "serial.c"


Includa se (če res ni hudo pametnega razloga za kaj drugačnega) samo header-je, *.h

Daj zazipaj projekt in ga pripni sem gor,
pa bom pogledal ali sprobal na svoji plati.

~Aleš

_________________
Question is more important than the answer.(Plato)
Nazaj na vrh
Skrit 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: Tor Nov 03, 2009 12:24 pm    Naslov sporočila:   Odgovori s citatom

Bom to naredil, ko pridem domov. Trenutno sem v službi.
Drugače so pa to te tri datoteke, ki jih uporabljam.

plata je pa mcb2300

LP G

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



Pridružen-a: Sre 03 Nov 2004 18:09
Prispevkov: 1026
Aktiv.: 4.33

PrispevekObjavljeno: Tor Nov 03, 2009 2:36 pm    Naslov sporočila:   Odgovori s citatom

Poskusi še z UART1:

#define UART1 namesto #define UART0

Lahko, da imaš skurjen TXD0.

_________________
LP, Matjaž
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: Tor Nov 03, 2009 2:55 pm    Naslov sporočila:   Odgovori s citatom

Matjaž...ne pomaga. TXD0 je uredu. Kot pravim, program blinky noramlno deluje s temi nastavitvami. Tudi kak drug program, ki uporablja uart (nekaj primerov je ko je uart v interrupt načinu) in tudi to deluje. HW je ok. Po moje delam samo kaj narobe. Samo ne vem kaj...

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
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: Tor Nov 03, 2009 4:02 pm    Naslov sporočila:   Odgovori s citatom

Pripni kompleten UV projekt in lahko preizkusim na moji MCB2300.
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: Tor Nov 03, 2009 8:03 pm    Naslov sporočila:   Odgovori s citatom

Evo RAR datoteka.

Skratka stvar ne deluje ne z UART0 in ne z UART1...

LP G



COMtest.rar
 Opis:

Download
 Ime datoteke:  COMtest.rar
 Velikost datoteke:  69.15 KB
 Downloadano:  14 krat


_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
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 -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
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