Start
Experimente
- R8C/15
- R8C-Oszi
- R8C/13
Grundlagen
Produkte
Neues
Impressum
|
Speicherscope mit dem R8C/15
Eine praktische Anwendung des R8C/15 ist ein kleines
Speicher-Oszilloskop für den PC. Der Controller besitzt einen 10-Bit-AD-Wandler
und 1 KB RAM. Dieses Projekt speichert 250 Integer-Messwerte vom Eingang
AN8 = P1_0.
Download des Projekts Oszi_15 (R8C-Projekt
und VB-Projekt, 90 KB)
Das Programm wartet jeweils auf ein beliebiges Byte vom PC. Dann werden
250 Messungen durchgeführt und zwischengespeichert. Diese Werte werden
dann mit 19200 Baud jeweils als Highbyte und Lowbyte an den PC gesandt.
Das VB-Programm sendet bei jedem Druck auf die Start-Schaltfläche
ein Byte und empfängt dann insgesamt 500 Bytes. Die 10-Bit-Messwerte
werden hier nur mit einer Auflösung von 8 Bit am Bildschirm angezeigt.
Das Oszillogramm im Bild zeigt die Messung an einem 1-kHz-Sinussignal.
Die effektive Abtastrate beträgt ca. 40 kHz bei einem Quarz mit 10
MHz. Man kann ohne weitere Änderungen auch 20 MHz einsetzen und erreicht
dann 80 kS/s und eine Baudrate von 38400.
|
/***********************************************************************/
/* */
/* FILE :oszi_15.c */
/* DATE :Wed, Oct 26, 2005 */
/* DESCRIPTION :Main Program */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.0). */
/* */
/* Einkanal-Scope, R8C/15, 10 MHz, 19200 Baud, 10 Bit, 250 Messungen */
/* */
/***********************************************************************/
#include "sfr_r815.h";
unsigned int ad_buf[250];
void sfr_init(void){
/* Setting port registers */
p1 = p1 | 0x10;
/* Setting port direction registers */
pd1 = pd1 | 0x10;
pd1 = pd1 & 0xdf;
/* Clock synchronous serial I/O setting */
u0mr = 0x05;
u0c0 = 0x00;
u0rrm = 0;
u0brg = 32-1;
re_u0c1 = 1;
}
void sendTxd0(unsigned char data)
{
while (ti_u0c1 == 0); //Wait for transmission buffer emty
u0tbl = data; // Set transmission data
te_u0c1 = 1; // Transmission enabled
}
unsigned char receiveRxd0 (void)
{
unsigned char data;
unsigned char dummy;
while (ir_s0ric == 0); //Wait for received data
ir_s0ric = 0; //Clear serial reception flag
data = u0rbl; // Get reception data
dummy = u0rbh; // Get error
re_u0c1 = 1; // Reception enabled
return data;
}
unsigned int ad_in(unsigned char ch)
{
/* Set A/D control registers */
adcon0 = 0x94 + ch; //ADN8...AN11 an P1_0...P1_3
adcon1 = 0x28; /* 10-bit mode */
adst = 1; /* Conversion start */
while(adst == 1){} /* Wait A/D conversion */
return ad; /* return AD value */
}
void messung(void)
{
unsigned int adr;
for (adr = 0; adr < 250; adr++)
{
ad_buf[adr] = ad_in(0);
}
for (adr = 0; adr < 250; adr++)
{
sendTxd0(ad_buf[adr] >> 8);
sendTxd0(ad_buf[adr] & 0xff);
}
}
void main(void)
{
/*-------------------------------------------------
- Change on-chip oscillator clock to Main clock -
-------------------------------------------------*/
prc0 = 1; /* Protect off */
cm13 = 1; /* Xin Xout */
cm15 = 1; /* XCIN-XCOUT drive capacity HIGH */
cm05 = 0; /* Xin on */
cm16 = 0; /* Main clock = No division mode */
cm17 = 0;
cm06 = 0; /* CM16 and CM17 enable */
asm("nop"); /* Waiting for stable of oscillation */
asm("nop");
asm("nop");
asm("nop");
ocd2 = 0; /* Main clock change */
prc0 = 0; /* Protect on */
sfr_init();
while (1)
{
receiveRxd0();
messung();
}
}
|
Für das Oszilloskop sind folgende Hardware-Voraussetzungen
nötig:
10 MHz Quarz für 19200 Baud
TXD0 und RXD1 über Inverter an der RS232
VREF an +5V
Eingang P1_0 über 10 kOhm an den Analogeingang
Die serielle Schnittstelle erfordert zwei zusätzliche Leitungen,
die hier parallel zu den Anschlüssen für die Debug-Schnittstelle
betrieben werden. Es hat sich gezeigt, dass ein Download mit FDT auch funktioniert,
wenn TXD0 und RXD0 parallel liegen. Bei der Entwicklung des Programms braucht
man daher nur eine COM-Schnittstelle und ein Leitungsinterface für
das Flashen und den Betrieb.
|
Das VB-Programm verwendet die ELEXS-DLL
für den Zugriff auf die serielle Schnittstelle. Ein ähnliches
Oszilloskop wurde bereits für das SIOS-Interface
vorgestellt.
Das C-Projekt für der R8C/15 wurde mit dem C-Compiler NC30 entwickelt.
Das MOT-File läuft ganz ohne Änderungen auch auf dem R8C/13,
der dem Dezemberheft von Elektor kostenlos beiliegen wird. Einen Überblick
über die verfügbare Entwicklungssoftware gibt der Startartikel
"R8C
und seine Familie" auf der Elektor-Homepage.
|
Auf der Elektor-Homepage: Infoseite
zum R8C/13, Umgang mit dem Compiler
|