Datum: 10.03.2008 11:29
Hallo zusammen,
ich verzweifle nun schon 2 Tage am folgenden Problem.
Ich bekomme einfach keine Verbindug zwischen PC und uC hin.
Mein Programm sieht folgendermaßen aus:
void main(void)
{
asm("FCLR I"); /* Global Interrupt disabled */
init_Ports(); /* Ports Initialization */
init_UART0();
asm("FSET I"); /* Global Interrupt enable */
te_u0c1 |= 1; /* Transmit operation enabled */
re_u0c1 |= 1; /* Receive operation enabled */
u0tb = 97; /* a */
ti_u0c1 &= 0;
while(1)
{
}
}
void init_Ports(void)
{
/* Port 6 (UART0) Initialization */
pd6_2 &= 0; /* Port Direction: 0=Input 1=Output */
/* P6.2 = Input (RxD0) */
pd6_3 |= 1; /* P6.3 = Output (TxD0) */
}
void init_UART0(void)
{
u0mr = 0x05; /* UART mode, 8 bit data length */
/* Internal Clock */
/* 1 Stop Bit */
/* no Parity */
u0smr = 0x00;
u0smr2 = 0x00;
u0smr3 = 0x00;
u0smr4 = 0x00;
u0c0 = 0x00; /* f1 selected */
crd_u0c0 |= 1; /* CTS function disabled */
u0brg = 0xCF; /* Baudrate: 9615 */
u0c1 = 0x00;
// u0irs_u0c1 |= 1; /* transmit interrupt is generated */
s0tic = 0x06; /* Interrupt priority level */
s0ric = 0x06; /* Interrupt priority level */
}
Immoment versuche ich erst einmal das Zeichen a an den Pc zu senden ..
Da ich mich mit der UART Verbindung vertraut machen will...
Mir fällt auf, dass die Register u0brg und u0tb einfach nicht de Wert
zugeordnet bekommen ... bei ausführung der befehle tut sich einfach
nichts und ich weiß nicht wieso.
Hoffe nun einfach auf Hilfe
Gruß Timo
Datum: 10.03.2008 11:34
Hallo Scheint das selbe Problem zu sein wie ich habe (Titel: I2C auf dem R8C1B) Bei mir hat auch noch niemand genantwortet.. der M32 ist doch auch ein Renesas? Steht bei dir auch "Use the MOV instruction"?
Datum: 10.03.2008 12:07
Funktioniert UART überhaupt nicht, d.h. kommt nichts aus dem TX-Pin des µC raus oder geht es unterwegs verloren oder versteht der PC das Signal nicht? Hast du Möglichkeiten mit einem LED-Vorwiderstand-Spion oder gar mit einem Oszilloskop die TX-Leitung zu beobachten? Dabei nicht nur ein zeichen schicken, sondern dauerhaft Zeichen schicken und zwischendurch immer schön warten, bis die UART das nächste Zeichen auf den Weg bringen kann. Vgl. auch Codebeispiel "Serielle Übertragung beim R8C" http://www.mikrocontroller.net/articles/R8C_Codebe...
Datum: 10.03.2008 12:18
> Scheint das selbe Problem zu sein wie ich habe (Titel: I2C auf dem > R8C1B) Naja, zwischen I2C und UART gibt es in den Dingern doch mal grosse Unterschiede. Ich kenne weder den M32 noch habe ich bisher was mit dem R8C1B gemacht, aber ich habe beim M16 weder mit I2C, SPI noch UART irgendein Problem gehabt. Man muss halt nur das Datenblatt sehr aufmerksam lesen und wirklich alle Register durchgehen. Und nicht vergessen das Kleingedruckte zu lesen. Es kann sein das man bei manchen Registern ein PRC Bits setzen bevor man da reinschreiben kann. Und ich wuerde beim Uart noch empfehlen sich genau Gedanken zu machen aus welcher der vielen moeglichen Quellen der Basistakt fuer die Baudrate herkommt. Nicht das man da einen Oszillator benutzt der garnicht laeuft... Und bei manchen Prozessoren, z.B bei meinem M16C kann man auch noch ueber ein Bit festlegen welche Ausgangspins der UART verwenden soll. Waere natuerlich dumm wenn alles geht aber aus dem falschen Pin rauskommt. :-) Olaf
Datum: 10.03.2008 12:19
Hallo, ja M32C ist auch von Renesas. Ich habe mir nun ein Oszi besorgt und wollte nun auch mal testen ob aus Tx etwas rauskommt. Gruß
Datum: 10.03.2008 13:08
Am Oszi bekomm ich nichts angezeigt ... mich wundert ja echt wieso bei
u0brg = 0xCF; /* Baudrate: 9615 */ |
einfach nichts ins Register geschrieben wird. Habe auch Assemblercode (MOV.B #CFH,369H) überprüft. DIe Zieladresse 0369h stimmt. Auch bei dem Befehl schreibt er nichts rein
u0tb = 0x55; /* Sendepuffer beschreiben */ |
Geht das nur unter bestimmten Vorraussetzungen?! Aber bei der Baudrate des wundert mich echt und Protection liegt meines Wissens auch net drauf. Gruß Timo
Datum: 10.03.2008 14:09
> einfach nichts ins Register geschrieben wird.
Woher weisst du das?
Kann man das Register lesen? Ich weiss jetzt nicht wie es bei genau
deinen Registern ist, aber man muss nicht aus allen Registern lesen
koennen und wie schon gesagt, manche muessen zum schreiben
erstmal freigeschaltet werden.
Olaf
Datum: 10.03.2008 14:20
Function Select Register PS0 und PSL0
Datum: 10.03.2008 14:25
Ja bei der HEW umgebung kann man per IO maps alle Register des uC in echtzeit beobachten.. Ich habe das selbe Problem beim I2C, mir ist klar, dass das nicht das selbe ist, aber es geht ja hier um das Problem dass sich die Register zum Teil nicht so beschreiben lassen wie sie sollten..
Datum: 10.03.2008 14:30
Function Select Register habe ich mir nun noch einmal angeschaut .... Ja die Reg. kann man Echtzeit auslesen...Oder kann es eben sein, da das Register nur write only ist, dass man deswegen den wert nicht sieht? Dafür kenn ich Renesas zu wenig. Habe des Board erst die Woche und zuvor immer TI MSP430 Gruß
Datum: 10.03.2008 14:50
Bin nun immerhin etwas weiter...hatte ein Special Function Register vergessen...nun kommt zumindest schon etwas an. Nur egal ob ich 'A' oder 'a' übertrage es kommt immer ein ö an. Denk zwar die Einstellungen sind korrekt aber werde noch einmal drüber schaun... Anscheinend ist es echt so, dass die write only Register dann einfach net ausgelesen werden von der HEW Software .. oder die Übertragungsrate ist nun einfach falsch und deswegen kommt das falsche Zeichen an, das kann nat+rlöich auch gut sein, da das brg reg mit 0x01 init. ist und ich ja 0xCF reinschreiben muss. Gruß
Datum: 10.03.2008 15:45
Problem gefunden ... im Datenblatt war falscher Quarz abgebildet ... Baudrate neu ausgerechnet und nun geht alles... Und HEW kann den Wert einfach nicht auslesen ... des hat mich ja am meisten verwundert, da ich immer dachte, der schreibt es nicht rein Gruß an alle
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel