Zeile 1: | Zeile 1: | ||
<!-- be kind, this is just a test --> | <!-- be kind, this is just a test --> | ||
− | < | + | <script language="JavaScript"> |
+ | |||
+ | var form; | ||
+ | |||
+ | var win_ubrr, fosc, baud; | ||
+ | var row, ubrr, err; | ||
+ | |||
+ | function init() | ||
+ | { | ||
+ | form = document.forms["data"]; | ||
+ | |||
+ | form.fosc.value="1.000000"; | ||
+ | } | ||
+ | |||
+ | function round (x, n) | ||
+ | { | ||
+ | n = Math.pow (10, n); | ||
+ | x = Math.round (n*x)/n; | ||
+ | return x; | ||
+ | } | ||
+ | |||
+ | function get_ubrr (baud, m) | ||
+ | { | ||
+ | var f = 1000000*fosc; | ||
+ | var ubrra, bauda, erra; | ||
+ | var ubrrb, baudb, errb; | ||
+ | |||
+ | ubrr = f/(m*baud)-1; | ||
+ | ubrra = Math.floor (ubrr); | ||
+ | ubrrb = Math.ceil (ubrr); | ||
+ | bauda = f/(m*(ubrra+1)); | ||
+ | baudb = f/(m*(ubrrb+1)); | ||
+ | erra = bauda/baud-1; | ||
+ | errb = baudb/baud-1; | ||
+ | |||
+ | if (Math.abs (erra) < Math.abs (errb)) | ||
+ | { | ||
+ | err = erra; | ||
+ | ubrr = ubrra; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | err = errb; | ||
+ | ubrr = ubrrb; | ||
+ | } | ||
+ | |||
+ | err = round (err*100, 1); | ||
+ | if (ubrr >= 10) | ||
+ | ubrr += "=0x" + ubrr.toString(16); | ||
+ | |||
+ | if (Math.abs (err) < 0.21) | ||
+ | { | ||
+ | err = "<b>"+err+"</b>"; | ||
+ | ubrr = "<b>"+ubrr+"</b>"; | ||
+ | } | ||
+ | else if (Math.abs (err) > 10) | ||
+ | { | ||
+ | err = "–"; | ||
+ | ubrr = err; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function get_row (baud) | ||
+ | { | ||
+ | var color = ((row & 1) == 0) ? "#ffffff" : "#f0f0ff"; | ||
+ | var html = "<tr bgcolor=\""+color+"\">"; | ||
+ | var baudstr = baud; | ||
+ | var ubrr0, err0; | ||
+ | var ubrr1, err1; | ||
+ | |||
+ | row++; | ||
+ | |||
+ | if (baud > 9600) | ||
+ | { | ||
+ | baudstr = "" + (baud / 1000) + "k"; | ||
+ | } | ||
+ | |||
+ | if (baud > 250000) | ||
+ | { | ||
+ | baudstr = "" + (baud / 1000000) + "M"; | ||
+ | } | ||
+ | |||
+ | get_ubrr (baud, 16); | ||
+ | ubrr0 = ubrr; | ||
+ | err0 = err; | ||
+ | |||
+ | get_ubrr (baud, 8); | ||
+ | ubrr1 = ubrr; | ||
+ | err1 = err; | ||
+ | |||
+ | html += "<td>"+baudstr+"</td>"; | ||
+ | html += "<td align=\"center\">"+ubrr0+"</td>"; | ||
+ | html += "<td align=\"center\">"+err0+"</td>"; | ||
+ | html += "<td align=\"center\">"+ubrr1+"</td>"; | ||
+ | html += "<td align=\"center\">"+err1+"</td>"; | ||
+ | html += "</tr>\n"; | ||
+ | |||
+ | return html; | ||
+ | } | ||
+ | |||
+ | function write_ubrr_table () | ||
+ | { | ||
+ | var html = "<center>"; | ||
+ | row = 0; | ||
+ | |||
+ | html += "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n"; | ||
+ | html += "<tr><td rowspan=3><b>Baud<br>Rate<br>(bps)</b></td>"; | ||
+ | html += "<td colspan=4 align=\"center\"><b>f<sub>osc</sub> = "+fosc+" MHz</b></td></tr>\n"; | ||
+ | html += "<tr><td colspan=2 align=\"center\"><b>U2X = 0</b></td><td colspan=2 align=\"center\"><b>U2X = 1</b></td></tr>\n"; | ||
+ | html += "<tr><td align=\"center\"><b>UBRR</b></td><td align=\"center\"><b>Error (%)</b></td>"; | ||
+ | html += "<td align=\"center\"><b>UBRR</b></td><td align=\"center\"><b>Error (%)</b></td></tr>\n"; | ||
+ | html += get_row (2400); | ||
+ | html += get_row (4800); | ||
+ | html += get_row (9600); | ||
+ | html += get_row (14400); | ||
+ | html += get_row (19200); | ||
+ | html += get_row (28800); | ||
+ | html += get_row (38400); | ||
+ | html += get_row (57600); | ||
+ | html += get_row (76800); | ||
+ | html += get_row (115200); | ||
+ | html += get_row (230400); | ||
+ | html += get_row (250000); | ||
+ | html += get_row (500000); | ||
+ | html += get_row (1000000); | ||
+ | html += "</table></center>\n"; | ||
+ | |||
+ | // alert (html); | ||
+ | |||
+ | win_ubrr.document.writeln (html); | ||
+ | } | ||
+ | |||
+ | function open_ubrr_window (val) | ||
+ | { | ||
+ | fosc = parseFloat (val); | ||
+ | |||
+ | if (win_ubrr) | ||
+ | win_ubrr.close(); | ||
+ | win_ubrr = window.open ("about:blank", "ubrr", "toolbar=no, menubar=no, width=400"); | ||
+ | win_ubrr.focus(); | ||
+ | win_ubrr.document.close(); | ||
+ | // win_ubrr.document.open(); | ||
+ | // win_ubrr.document.location.href = "about:blank"; | ||
+ | |||
+ | var html = "<html>\n"; | ||
+ | html += "<head>\n" | ||
+ | html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n"; | ||
+ | html += "<meta name=\"Author\" content=\"Georg-Johann Lay\">\n"; | ||
+ | html += "<title>ATMega8 Baudrate, fosc = "+fosc+" MHz</title>\n"; | ||
+ | html += "</head>\n" | ||
+ | win_ubrr.document.writeln (html); | ||
+ | |||
+ | html = "<body bgcolor=\"white\" text=\"black\">\n"; | ||
+ | win_ubrr.document.writeln (html); | ||
+ | write_ubrr_table (fosc, baud); | ||
+ | html = "</body>\n"; | ||
+ | html += "</html>\n"; | ||
+ | win_ubrr.document.writeln (html); | ||
+ | win_ubrr.document.close(); | ||
+ | } | ||
+ | |||
+ | function write_freq_button (frq) | ||
+ | { | ||
+ | html = "<input type=submit onclick=\"open_ubrr_window("+frq+")\" SIZE=\"120\" VALUE=\" "+frq+" MHz \">"; | ||
+ | |||
+ | document.writeln (html); | ||
+ | } | ||
+ | |||
+ | |||
+ | </script> |
Version vom 4. Dezember 2005, 01:57 Uhr
<script language="JavaScript">
var form;
var win_ubrr, fosc, baud; var row, ubrr, err;
function init() { form = document.forms["data"];
form.fosc.value="1.000000"; }
function round (x, n) { n = Math.pow (10, n); x = Math.round (n*x)/n; return x; }
function get_ubrr (baud, m) { var f = 1000000*fosc; var ubrra, bauda, erra; var ubrrb, baudb, errb;
ubrr = f/(m*baud)-1; ubrra = Math.floor (ubrr); ubrrb = Math.ceil (ubrr); bauda = f/(m*(ubrra+1)); baudb = f/(m*(ubrrb+1)); erra = bauda/baud-1; errb = baudb/baud-1;
if (Math.abs (erra) < Math.abs (errb)) { err = erra; ubrr = ubrra; } else { err = errb; ubrr = ubrrb; }
err = round (err*100, 1); if (ubrr >= 10) ubrr += "=0x" + ubrr.toString(16);
if (Math.abs (err) < 0.21) { err = ""+err+""; ubrr = ""+ubrr+""; } else if (Math.abs (err) > 10) { err = ""; ubrr = err; } }
function get_row (baud) { var color = ((row & 1) == 0) ? "#ffffff" : "#f0f0ff"; var html = "<tr bgcolor=\""+color+"\">"; var baudstr = baud; var ubrr0, err0; var ubrr1, err1;
row++;
if (baud > 9600) { baudstr = "" + (baud / 1000) + "k"; }
if (baud > 250000) { baudstr = "" + (baud / 1000000) + "M"; }
get_ubrr (baud, 16); ubrr0 = ubrr; err0 = err;
get_ubrr (baud, 8); ubrr1 = ubrr; err1 = err;
html += "<td>"+baudstr+"</td>"; html += "<td align=\"center\">"+ubrr0+"</td>"; html += "<td align=\"center\">"+err0+"</td>"; html += "<td align=\"center\">"+ubrr1+"</td>"; html += "<td align=\"center\">"+err1+"</td>"; html += "</tr>\n";
return html; }
function write_ubrr_table () {
var html = "row = 0;
html += "Baud Rate (bps) | ";
html += "fosc = "+fosc+" MHz | |||
U2X = 0 | U2X = 1 | |||
UBRR | Error (%) | "; html += "UBRR | Error (%) |
// alert (html);
win_ubrr.document.writeln (html); }
function open_ubrr_window (val) { fosc = parseFloat (val);
if (win_ubrr) win_ubrr.close(); win_ubrr = window.open ("about:blank", "ubrr", "toolbar=no, menubar=no, width=400"); win_ubrr.focus(); win_ubrr.document.close(); // win_ubrr.document.open(); // win_ubrr.document.location.href = "about:blank";
var html = "<html>\n"; html += "<head>\n" html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n"; html += "<meta name=\"Author\" content=\"Georg-Johann Lay\">\n"; html += "<title>ATMega8 Baudrate, fosc = "+fosc+" MHz</title>\n"; html += "</head>\n" win_ubrr.document.writeln (html);
html = "<body bgcolor=\"white\" text=\"black\">\n"; win_ubrr.document.writeln (html); write_ubrr_table (fosc, baud); html = "</body>\n"; html += "</html>\n"; win_ubrr.document.writeln (html); win_ubrr.document.close(); }
function write_freq_button (frq) { html = "<input type=submit onclick=\"open_ubrr_window("+frq+")\" SIZE=\"120\" VALUE=\" "+frq+" MHz \">";
document.writeln (html); }
</script>