From 50d5098b135d0f304da04602aa68777e517a10a9 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Wed, 20 Jul 2016 21:47:19 +0000 Subject: [PATCH] Empfang eingebaut und Programm verbessert --- Laminator-GUI/Laminator-GUI.v11.suo | Bin 61440 -> 70656 bytes Laminator-GUI/Laminator-GUI/App.config | 6 +- Laminator-GUI/Laminator-GUI/Form1.Designer.cs | 400 +- Laminator-GUI/Laminator-GUI/Form1.cs | 88 +- .../bin/x86/Release/Laminator-GUI.exe | Bin 19968 -> 22016 bytes .../bin/x86/Release/Laminator-GUI.exe.config | 6 +- .../bin/x86/Release/Laminator-GUI.pdb | Bin 36352 -> 50688 bytes .../Release/Laminator-GUI.vshost.exe.config | 6 +- .../bin/x86/Release/temperatur.ini | 6 +- ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7386 -> 7462 bytes .../Laminator-GUI.csproj.FileListAbsolute.txt | 10 + ...aminator-GUI.csproj.GenerateResource.Cache | Bin 975 -> 975 bytes .../obj/x86/Release/Laminator-GUI.exe | Bin 19968 -> 22016 bytes .../obj/x86/Release/Laminator-GUI.pdb | Bin 36352 -> 50688 bytes Laminator-GUI/Laminator-GUI/temperatur.ini | 6 +- Laminator/Laminator.atsuo | Bin 12288 -> 12800 bytes USBLaminator/USBLaminator.atsuo | Bin 17408 -> 16384 bytes .../USBLaminator/Debug/USBLaminator.elf | Bin 74109 -> 80222 bytes .../USBLaminator/Debug/USBLaminator.hex | 727 +- .../USBLaminator/Debug/USBLaminator.lss | 8420 ++++++++++------- .../USBLaminator/Debug/USBLaminator.map | 360 +- .../USBLaminator/Debug/USBLaminator.srec | 727 +- USBLaminator/USBLaminator/USBLaminator.cpp | 39 +- USBLaminator/USBLaminator/io/ADC.hpp | 4 +- USBLaminator/USBLaminator/io/Usart.hpp | 31 +- 25 files changed, 6134 insertions(+), 4702 deletions(-) diff --git a/Laminator-GUI/Laminator-GUI.v11.suo b/Laminator-GUI/Laminator-GUI.v11.suo index b8df70abad00372ae01ba1070200d4b5799fc118..68f5b9b94bc1138e15931ac2f40d23e3c0922a73 100644 GIT binary patch delta 5115 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 - 32 + 25 - 10 + 20 - COM7 + COM9 1000 diff --git a/Laminator-GUI/Laminator-GUI/Form1.Designer.cs b/Laminator-GUI/Laminator-GUI/Form1.Designer.cs index ab5dff7..12780dd 100644 --- a/Laminator-GUI/Laminator-GUI/Form1.Designer.cs +++ b/Laminator-GUI/Laminator-GUI/Form1.Designer.cs @@ -28,211 +28,244 @@ /// private void InitializeComponent() { - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series(); - this.label1 = new System.Windows.Forms.Label(); - this.Temp = new System.Windows.Forms.Label(); - this.chart = new System.Windows.Forms.DataVisualization.Charting.Chart(); - this.debug = new System.Windows.Forms.Label(); - this.heater = new System.Windows.Forms.Label(); - this.motor = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.tempbox = new System.Windows.Forms.NumericUpDown(); - this.motorbox = new System.Windows.Forms.NumericUpDown(); - this.heizungSoll = new System.Windows.Forms.Label(); - this.motorSoll = new System.Windows.Forms.Label(); - this.panel1 = new System.Windows.Forms.Panel(); - ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.tempbox)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.motorbox)).BeginInit(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 9); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(61, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Temperatur"; - // - // Temp - // - this.Temp.AutoSize = true; - this.Temp.Font = new System.Drawing.Font("Microsoft Sans Serif", 72F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Temp.ForeColor = System.Drawing.Color.Red; - this.Temp.Location = new System.Drawing.Point(12, 22); - this.Temp.Name = "Temp"; - this.Temp.Size = new System.Drawing.Size(208, 108); - this.Temp.TabIndex = 1; - this.Temp.Text = "0°C"; - // - // chart - // - chartArea1.Name = "ChartArea1"; - this.chart.ChartAreas.Add(chartArea1); - this.chart.Location = new System.Drawing.Point(13, 134); - this.chart.Name = "chart"; - series1.ChartArea = "ChartArea1"; - series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; - series1.Color = System.Drawing.Color.Red; - series1.IsVisibleInLegend = false; - series1.Name = "Temp"; - series2.ChartArea = "ChartArea1"; - series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; - series2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); - series2.Name = "Motor"; - series3.ChartArea = "ChartArea1"; - series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; - series3.Color = System.Drawing.Color.Blue; - series3.Name = "Heizung"; - this.chart.Series.Add(series1); - this.chart.Series.Add(series2); - this.chart.Series.Add(series3); - this.chart.Size = new System.Drawing.Size(359, 122); - this.chart.TabIndex = 2; - this.chart.Text = "chart1"; - // - // debug - // - this.debug.AutoSize = true; - this.debug.Location = new System.Drawing.Point(258, 9); - this.debug.Name = "debug"; - this.debug.Size = new System.Drawing.Size(35, 13); - this.debug.TabIndex = 3; - this.debug.Text = "label2"; - // - // heater - // - this.heater.AutoSize = true; - this.heater.Font = new System.Drawing.Font("Microsoft Sans Serif", 13F, System.Drawing.FontStyle.Bold); - this.heater.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); - this.heater.Location = new System.Drawing.Point(256, 23); - this.heater.Name = "heater"; - this.heater.Size = new System.Drawing.Size(82, 22); - this.heater.TabIndex = 4; - this.heater.Text = "Heizung"; - // - // motor - // - this.motor.AutoSize = true; - this.motor.Font = new System.Drawing.Font("Microsoft Sans Serif", 13F, System.Drawing.FontStyle.Bold); - this.motor.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); - this.motor.Location = new System.Drawing.Point(256, 48); - this.motor.Name = "motor"; - this.motor.Size = new System.Drawing.Size(60, 22); - this.motor.TabIndex = 5; - this.motor.Text = "Motor"; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(322, 76); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(50, 47); - this.button1.TabIndex = 8; - this.button1.Text = "OK"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // tempbox - // - this.tempbox.Location = new System.Drawing.Point(261, 77); - this.tempbox.Maximum = new decimal(new int[] { + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series5 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series(); + this.label1 = new System.Windows.Forms.Label(); + this.Temp = new System.Windows.Forms.Label(); + this.chart = new System.Windows.Forms.DataVisualization.Charting.Chart(); + this.debug = new System.Windows.Forms.Label(); + this.heater = new System.Windows.Forms.Label(); + this.motor = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.tempbox = new System.Windows.Forms.NumericUpDown(); + this.motorbox = new System.Windows.Forms.NumericUpDown(); + this.heizungSoll = new System.Windows.Forms.Label(); + this.motorSoll = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.Temp1 = new System.Windows.Forms.Label(); + this.Temp2 = new System.Windows.Forms.Label(); + this.TempDiff = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.chart)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.tempbox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.motorbox)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(61, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Temperatur"; + // + // Temp + // + this.Temp.AutoSize = true; + this.Temp.Font = new System.Drawing.Font("Microsoft Sans Serif", 65F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Temp.ForeColor = System.Drawing.Color.Red; + this.Temp.Location = new System.Drawing.Point(12, 22); + this.Temp.Name = "Temp"; + this.Temp.Size = new System.Drawing.Size(191, 98); + this.Temp.TabIndex = 1; + this.Temp.Text = "0°C"; + // + // chart + // + chartArea2.Name = "ChartArea1"; + this.chart.ChartAreas.Add(chartArea2); + this.chart.Location = new System.Drawing.Point(12, 155); + this.chart.Name = "chart"; + series4.ChartArea = "ChartArea1"; + series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; + series4.Color = System.Drawing.Color.Red; + series4.IsVisibleInLegend = false; + series4.Name = "Temp"; + series5.ChartArea = "ChartArea1"; + series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; + series5.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + series5.Name = "Motor"; + series6.ChartArea = "ChartArea1"; + series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; + series6.Color = System.Drawing.Color.Blue; + series6.Name = "Heizung"; + this.chart.Series.Add(series4); + this.chart.Series.Add(series5); + this.chart.Series.Add(series6); + this.chart.Size = new System.Drawing.Size(459, 122); + this.chart.TabIndex = 2; + this.chart.Text = "chart1"; + // + // debug + // + this.debug.AutoSize = true; + this.debug.Location = new System.Drawing.Point(10, 280); + this.debug.Name = "debug"; + this.debug.Size = new System.Drawing.Size(35, 13); + this.debug.TabIndex = 3; + this.debug.Text = "label2"; + // + // heater + // + this.heater.AutoSize = true; + this.heater.Font = new System.Drawing.Font("Microsoft Sans Serif", 13F, System.Drawing.FontStyle.Bold); + this.heater.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.heater.Location = new System.Drawing.Point(357, 22); + this.heater.Name = "heater"; + this.heater.Size = new System.Drawing.Size(82, 22); + this.heater.TabIndex = 4; + this.heater.Text = "Heizung"; + // + // motor + // + this.motor.AutoSize = true; + this.motor.Font = new System.Drawing.Font("Microsoft Sans Serif", 13F, System.Drawing.FontStyle.Bold); + this.motor.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.motor.Location = new System.Drawing.Point(357, 47); + this.motor.Name = "motor"; + this.motor.Size = new System.Drawing.Size(60, 22); + this.motor.TabIndex = 5; + this.motor.Text = "Motor"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(423, 75); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(50, 47); + this.button1.TabIndex = 8; + this.button1.Text = "OK"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // tempbox + // + this.tempbox.Location = new System.Drawing.Point(362, 76); + this.tempbox.Maximum = new decimal(new int[] { 250, 0, 0, 0}); - this.tempbox.Minimum = new decimal(new int[] { + this.tempbox.Minimum = new decimal(new int[] { 1, 0, 0, -2147483648}); - this.tempbox.Name = "tempbox"; - this.tempbox.Size = new System.Drawing.Size(55, 20); - this.tempbox.TabIndex = 9; - this.tempbox.Value = new decimal(new int[] { + this.tempbox.Name = "tempbox"; + this.tempbox.Size = new System.Drawing.Size(55, 20); + this.tempbox.TabIndex = 9; + this.tempbox.Value = new decimal(new int[] { 1, 0, 0, -2147483648}); - // - // motorbox - // - this.motorbox.Location = new System.Drawing.Point(261, 104); - this.motorbox.Maximum = new decimal(new int[] { - 10, + // + // motorbox + // + this.motorbox.Location = new System.Drawing.Point(362, 103); + this.motorbox.Maximum = new decimal(new int[] { + 20, 0, 0, 0}); - this.motorbox.Minimum = new decimal(new int[] { + this.motorbox.Minimum = new decimal(new int[] { 1, 0, 0, -2147483648}); - this.motorbox.Name = "motorbox"; - this.motorbox.Size = new System.Drawing.Size(55, 20); - this.motorbox.TabIndex = 10; - this.motorbox.Value = new decimal(new int[] { + this.motorbox.Name = "motorbox"; + this.motorbox.Size = new System.Drawing.Size(55, 20); + this.motorbox.TabIndex = 10; + this.motorbox.Value = new decimal(new int[] { 1, 0, 0, -2147483648}); - // - // heizungSoll - // - this.heizungSoll.AutoSize = true; - this.heizungSoll.Location = new System.Drawing.Point(337, 32); - this.heizungSoll.Name = "heizungSoll"; - this.heizungSoll.Size = new System.Drawing.Size(16, 13); - this.heizungSoll.TabIndex = 11; - this.heizungSoll.Text = "-1"; - // - // motorSoll - // - this.motorSoll.AutoSize = true; - this.motorSoll.Location = new System.Drawing.Point(337, 53); - this.motorSoll.Name = "motorSoll"; - this.motorSoll.Size = new System.Drawing.Size(16, 13); - this.motorSoll.TabIndex = 12; - this.motorSoll.Text = "-1"; - // - // panel1 - // - this.panel1.Location = new System.Drawing.Point(378, 12); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(94, 244); - this.panel1.TabIndex = 13; - // - // Form1 - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(484, 262); - this.Controls.Add(this.panel1); - this.Controls.Add(this.motorSoll); - this.Controls.Add(this.heizungSoll); - this.Controls.Add(this.motorbox); - this.Controls.Add(this.tempbox); - this.Controls.Add(this.button1); - this.Controls.Add(this.motor); - this.Controls.Add(this.heater); - this.Controls.Add(this.debug); - this.Controls.Add(this.chart); - this.Controls.Add(this.Temp); - this.Controls.Add(this.label1); - this.MaximizeBox = false; - this.MaximumSize = new System.Drawing.Size(500, 300); - this.MinimumSize = new System.Drawing.Size(500, 300); - this.Name = "Form1"; - this.Text = "Laminator GUI"; - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.close); - ((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.tempbox)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.motorbox)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + // + // heizungSoll + // + this.heizungSoll.AutoSize = true; + this.heizungSoll.Location = new System.Drawing.Point(438, 31); + this.heizungSoll.Name = "heizungSoll"; + this.heizungSoll.Size = new System.Drawing.Size(16, 13); + this.heizungSoll.TabIndex = 11; + this.heizungSoll.Text = "-1"; + // + // motorSoll + // + this.motorSoll.AutoSize = true; + this.motorSoll.Location = new System.Drawing.Point(438, 52); + this.motorSoll.Name = "motorSoll"; + this.motorSoll.Size = new System.Drawing.Size(16, 13); + this.motorSoll.TabIndex = 12; + this.motorSoll.Text = "-1"; + // + // panel1 + // + this.panel1.Location = new System.Drawing.Point(478, 9); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(94, 268); + this.panel1.TabIndex = 13; + // + // Temp1 + // + this.Temp1.AutoSize = true; + this.Temp1.Location = new System.Drawing.Point(15, 124); + this.Temp1.Name = "Temp1"; + this.Temp1.Size = new System.Drawing.Size(24, 13); + this.Temp1.TabIndex = 14; + this.Temp1.Text = "0°C"; + // + // Temp2 + // + this.Temp2.AutoSize = true; + this.Temp2.Location = new System.Drawing.Point(98, 124); + this.Temp2.Name = "Temp2"; + this.Temp2.Size = new System.Drawing.Size(24, 13); + this.Temp2.TabIndex = 15; + this.Temp2.Text = "0°C"; + // + // TempDiff + // + this.TempDiff.AutoSize = true; + this.TempDiff.Location = new System.Drawing.Point(183, 124); + this.TempDiff.Name = "TempDiff"; + this.TempDiff.Size = new System.Drawing.Size(21, 13); + this.TempDiff.TabIndex = 16; + this.TempDiff.Text = "0%"; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(584, 302); + this.Controls.Add(this.TempDiff); + this.Controls.Add(this.Temp2); + this.Controls.Add(this.Temp1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.motorSoll); + this.Controls.Add(this.heizungSoll); + this.Controls.Add(this.motorbox); + this.Controls.Add(this.tempbox); + this.Controls.Add(this.button1); + this.Controls.Add(this.motor); + this.Controls.Add(this.heater); + this.Controls.Add(this.debug); + this.Controls.Add(this.chart); + this.Controls.Add(this.Temp); + this.Controls.Add(this.label1); + this.MaximizeBox = false; + this.MaximumSize = new System.Drawing.Size(600, 340); + this.MinimumSize = new System.Drawing.Size(600, 340); + this.Name = "Form1"; + this.Text = "Laminator GUI"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.close); + ((System.ComponentModel.ISupportInitialize)(this.chart)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.tempbox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.motorbox)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); } @@ -250,6 +283,9 @@ private System.Windows.Forms.Label heizungSoll; private System.Windows.Forms.Label motorSoll; private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label Temp1; + private System.Windows.Forms.Label Temp2; + private System.Windows.Forms.Label TempDiff; } } diff --git a/Laminator-GUI/Laminator-GUI/Form1.cs b/Laminator-GUI/Laminator-GUI/Form1.cs index 124628c..6683a3d 100644 --- a/Laminator-GUI/Laminator-GUI/Form1.cs +++ b/Laminator-GUI/Laminator-GUI/Form1.cs @@ -16,7 +16,7 @@ namespace Laminator_GUI { public partial class Form1 : Form { - private Queue hist = new Queue(); + private Queue hist = new Queue(); private Queue hmotor = new Queue(); private Queue hheat = new Queue(); @@ -32,6 +32,10 @@ namespace Laminator_GUI private Settings settings; public delegate void InvokeDelegate(); private InIReader ini = new InIReader("temperatur.ini"); + private string tempText1; + private string tempText2; + private float temp1; + private float temp2; public Form1() { @@ -39,7 +43,7 @@ namespace Laminator_GUI this.createButtons(); this.settings = new Settings(); this.chart.ChartAreas[0].AxisX.Maximum = this.settings.Chart_Items; - this.serialPort = new SerialPort(this.settings.Com_Port, 9600, Parity.None, 8, StopBits.One); + this.serialPort = new SerialPort(this.settings.Com_Port, 38400, Parity.Even, 8, StopBits.One); this.serialPort.Open(); this.serialPort.Write("m" + this.settings.Default_Motor.PadLeft(2, '0') + "\n"); this.motorbox.Value = int.Parse(this.settings.Default_Motor); @@ -79,20 +83,65 @@ namespace Laminator_GUI { string r = this.serialPort.ReadLine(); this.debugText = r; - string[] tmp = r.Split(' '); - if (tmp.Length == 8) + string[] tmp = r.Split(';'); + if (tmp.Length == 11) { - int temp = int.Parse(tmp[3]); - if (temp < 0) - temp = 0; - this.tempText = temp.ToString(); - this.solltempText = tmp[4]; - this.motorText = tmp[5]; - this.heaterBool = (int.Parse(tmp[6]) > 0); - this.motorBool = (int.Parse(tmp[7]) > 0); - this.hist.Enqueue(temp); - this.hmotor.Enqueue(this.motorBool); - this.hheat.Enqueue(this.heaterBool); + foreach(String item in tmp) { + string[] kv = item.Split('='); + switch(kv[0]) { + case "cm": { + float temp = float.Parse(kv[1].Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture); + if(temp < 0) + temp = 0; + this.tempText = temp.ToString("0.00"); + this.hist.Enqueue(temp); + break; + } + case "c0": { + this.temp1 = float.Parse(kv[1].Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture); + if(this.temp1 < 0) + this.temp1 = 1; + this.tempText1 = this.temp1.ToString("0.00"); + break; + } + case "c1": { + this.temp2 = float.Parse(kv[1].Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture); + if(this.temp2 < 0) + this.temp2 = 0; + this.tempText2 = this.temp2.ToString("0.00"); + break; + } + case "t": { + this.solltempText = kv[1]; + break; + } + case "m": { + this.motorText = kv[1]; + break; + } + case "hon": { + this.heaterBool = (int.Parse(kv[1]) > 0); + this.hheat.Enqueue(this.heaterBool); + break; + } + case "mon": { + this.motorBool = (int.Parse(kv[1]) > 0); + this.hmotor.Enqueue(this.motorBool); + break; + } + } + } + //int temp = int.Parse(tmp[3]); + //if (temp < 0) + // temp = 0; + //this.tempText = temp.ToString(); + //this.solltempText = tmp[4]; + //this.motorText = tmp[5]; + //this.heaterBool = (int.Parse(tmp[6]) > 0); + //this.motorBool = (int.Parse(tmp[7]) > 0); + //this.hist.Enqueue(temp); + //this.hmotor.Enqueue(this.motorBool); + //this.hheat.Enqueue(this.heaterBool); if (this.hist.Count > this.settings.Chart_Items) { this.hist.Dequeue(); @@ -112,6 +161,9 @@ namespace Laminator_GUI try { this.Temp.BeginInvoke((MethodInvoker)delegate { this.Temp.Text = this.tempText + "°C"; }); + this.Temp1.BeginInvoke((MethodInvoker)delegate { this.Temp1.Text = this.tempText1 + "°C"; }); + this.Temp2.BeginInvoke((MethodInvoker)delegate { this.Temp2.Text = this.tempText2 + "°C"; }); + this.TempDiff.BeginInvoke((MethodInvoker)delegate { this.TempDiff.Text = ((((this.temp1 == 0 ? 1f : this.temp1) / this.temp2) * 100) - 100).ToString("0.00") + " %"; }); this.debug.BeginInvoke((MethodInvoker)delegate { this.debug.Text = this.debugText; }); this.chart.BeginInvoke((MethodInvoker)delegate { this.drawDia(); }); this.heater.BeginInvoke(new InvokeDelegate(InvokeHeat)); @@ -124,7 +176,7 @@ namespace Laminator_GUI private void InvokeHeat() { - if (this.heaterBool) + if (!this.heaterBool) { this.heater.ForeColor = System.Drawing.Color.Red; } @@ -135,7 +187,7 @@ namespace Laminator_GUI } private void InvokeMotor() { - if (this.motorBool) + if (!this.motorBool) { this.motor.ForeColor = System.Drawing.Color.Red; } @@ -152,7 +204,7 @@ namespace Laminator_GUI int i = 1; try { - foreach (int temp in this.hist) + foreach (float temp in this.hist) { this.chart.Series["Temp"].Points.AddXY(i++, temp); } diff --git a/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.exe b/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.exe index 6abb6b29dc629761f3ad9d15a4328ceda2cb9b3c..145e554b10bf17c1a2e0a43f8d8cc86c4996093d 100644 GIT binary patch literal 22016 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 diff --git a/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.exe.config b/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.exe.config index 9e013eb..3a71acd 100644 --- a/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.exe.config +++ b/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.exe.config @@ -11,13 +11,13 @@ - 32 + 25 - 10 + 20 - COM7 + COM9 1000 diff --git a/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.pdb b/Laminator-GUI/Laminator-GUI/bin/x86/Release/Laminator-GUI.pdb index 22a4c643b453fbf203243d3384655105fe7affdf..5c3f533bdd0841d68818904a91123322f8411124 100644 GIT binary patch literal 50688 zcmeI534B%6oyYGBA%YT15D-K$Age$i>>xsbuvrk0;MQ2OJs=ViOajGLJJ*(0s@7^p zJ9Y+JoUs;L+UY`DZPn7xSO;6`R;zZgLtUz^I4;#GZLQAtcb50=dwGc@dGsTi1ONQ) zS^j7JpY4Cny>D4>i)5E7f9?P?$eCRz|2k+%#ANP~u*mO02Z%4qX!CPQW97!8>ZV|PQ)Bh`wY7Eert$HaoP}o4Rp2t(cONX&HbUOm2>Vp=H~_1tqS%o|Bswo?p^Ty&;Q}~j}%-t$J&p( z`I8qGto?bx-KPh^p&m=_uDGqf%odAH+;9>>65Q};0r&y`!ioWI!fP_%WSp( z^ql+utE6P??29*EeEYyYXS~r>vqwn{oIpN@LPik<&b@wOtONVM^!5KBqLP~H6lgGX zDpUv!ft1{7&@gB?Gy)n4jekTr|=@i>*Do}q`5+4vqPbpQVWJ9Xa^B|>l z0dyhs0jM03T2wMAHE2{Wz1)#4qZ*ZpRjOC1TfN*#m3k7?n(U^_>v+OWfQlh?ugTC9 zNQIY4Wccj_FFt@ckJ z|L>yAqoC;guQq$0#h}&zhnTdr2H3;1<|aRvtDZGyYA(+-w`opmZ7%n1(pEeAHDo{H z=?_KQw5>T_>jbScR3+OxHOsXn*4uCj5#)=iD^rl#74`lcWU zshS<+=H5T&kN181g2$HJHN0oe55Bsmf}pIQO3m6Rm-1>&DSjS}tmWp+G3!C9DNk`s z3{F?F!A&^GDF5EDzRVkiukq5wg}Li0YwNX-d7E@$$c41-ggqsl%T#HY=`KAzQr|jGWmXp{FcJ>1^lh+FCGCd2PV(hOw9_5ShDLfnEm$L3JERg&~9%?wuUh~)f zVa&~Y!k1}Py!l*Lmy+8u^7SaB@IH*(x8wE@r2X461Yh-`_5w6#C#p>H<=f-%>gT1L zXn*rwJli+hl0p`sQod1q4vYbOxQD6 zN10A%Pd)-#01d!?Y@l>hmv+pJsh=7{7dQGPS(xKOrAr!NluJrVK2l<>x3bo^jYLFJPrKcm);DAgHSjYq+Ubq{YQdRLBg1FFprsXu*M7*;Lf@s z)Sexlunbf@(pSh{1r~vqfW#Gk7(^Dr>%d8%#>Oe&zk{R^?gGXC6>ui@`#|&w;V(gS z3gL?&dWG=MpyKaF*%bZ+a31z-wSW5gkJ>Y;XYp$@>M(2izY5~oYQ~b7ku|I-^0l1u zNr$r%RQjvHiQsBbYs>S%4}uqh`N&oQHJ*>wv4EQGXPyTd`Fesdc07s&dwG^Ytb_gL z$;i1$hqg26)PPE7EvR&ucT75}_X_NF*qcDvH-ofw_z|!X{5Xi8X>a_(9oV;kYVQw$ zYVWP!55Y^pmibn1P~SmXFa?yp00}K%<(ki~C7)JNA5b4s|H)SSr;qco_nIx%*ZM8PLa|!`=h>SdM(`nz#_0 z3@wFJj?17Mpxw|u=m2yG>P?>-1(iVM(9vMteCf@Xl-03J7@boDZHhNG*T$R5&xtoR zY;LTMHx)(oABwx<`XL`TOL-S}^uBJ#^&#l5eAIqEPsw#wGTr1>3MqGtJD%r6MyrkH zu7j28Gu7_v-U&q}8r}u=hIgsEKwjEmC8BSH%(9a;T{2hIeM*@n=}43*(O%K+a3qT4 zn>0nvvR0x*F%Y|~!bZrl_p5meUjscGmLRQlXu-47b#8 zXF1o|6xhV*H_A=!AI%GbM<8z=?aum+2~~6IMbI5kA1vR3MiXuX8$?E_+WXhdgY6v{wnLQ9?Dx=WT9omI}=5 z8}A^zbS6*XovroX`~?#$N8Sha%>`^F_} zo>W-1lfud`8dmk}!}>g^{uNe!(XeWBAJ*qVvZ1i@i-uKu`LLh6@=qUA9@LHsE5B%1 z$%GH<^D9|VSouZ6O3r-PUyphH4aIBZ50qcF+W!kVA6|Ih##cwbfA_AdHl4b$DVhh# zv(LlUu}>5!50Z1`SANm3l5rolPtL)|6jrjYu=0zBWnZ0l6Z}*qo8EKcYnjy7FWOu? zyK2oE?Sc+Z2V`}w#9?%=8PzBPb=xMNAFa62VHuITf&SXPxrNw zp7xiWDPK8#Kqg!5pRWHI91JU1z3NilCEQpvzoD+qsV<8a@k(H0Z8i5WlKx9;>)8UU zu9I$M@vY5rJ3ivJgbjWFh&>W7ySY@}qI2TwvZw!_@vhbXXRH0w^*>$u{|skK3^M6w zJYMH~wCn%F)!%&foNJ%G=U*mWKVa6bV{TU8edp`{4|eJQv-JL7`uzVY?Oy?P>Hp1r zfp@I_pC&TvCzg!?OO1f#xw+?{<$=~BEVf1NU10nPz+o-xew{Pvyy*jA1IV5x3_!9lWuiyske{=Q%&O!<}0WC1+S;OhG6QQB>)uG@NXaY3O?9p`};v1!_7VUrP;aCCu z?J???>hmmZg4mm{Q0JZ=j)D>jOHnC zMq<4%T8{af>zX$=nksD19zQ*;S(?-_ZYVR)v{_z-PYdLVDaIF86`nZUm?kLs&&25+dZ?UhhBYgjN zxlgB!`@cSnzyHfL?v{9|cM<)(m-LU`H7qQUXhi+0Hm_yRS6HAaChES{UC#CTzo=jI z{%_RX-%r%s=K|B?59 zuXOp-`sPU7|E1{0P<44XMbh&3a@({1&{(0hjvr@Q)Bhdv>2RmOr=zhvdjHplF=IS~ zjlci95v7A~FJ&CvL}JU*{`7Bd_sOJx zv`?nq|NTp(UQ|C(9^b#B_kRZuNYh3~R>_ zxl;pn`u?vSbK8Ia*N%_x-TS|zHRe+P)4+vbJ~t@soytj|Gq=3x?q~6w-ak z<E3fL1{Pc+Uw(cSjsEs~zRQPPufv?t?lPwu(*1I=C(I&Iq-n7PKAobf7Bgoq#pSQ!*|M~Fg`oA(4k6&}qwto8Qp#IOUEf2T< ze>hr>Bdq@meOl=M)^sv0^%>o@vNDi){lzNc3Uz@YM#fJ`$f5e0ZI76HTg9F~`o1=r z@H)Rc9YjZJ-kZ`{9~2hwE=Rv$4>XE~8fMl5!|=297)$6^B{qKTFx~KtO1v{>>mhTV z&mgSwOkPN9H2vrJ#JeH7%P3O_?IeLc(0=G;s0WMbVUTpM=R*?-BRx!R?1LF~2s>O{ zPW%aN&SCRzf)}>2hCw|_X18|ZeIoJT>BIPa1}siy%|2s-f6q{SyWy)z!_G@PntN8{mAKd;l;e)SL; zm<|tT+`-=?JQDsW4?|{|j)OG6c{;rP@kcZE|6R%yW{)bs8M4u4|8Isz;iLUu(csi- z+o>FB{!^oEr?yY?pC*5eU%u_r{LT2nI>z{;he_u*{;Y3|Kl+7?{;YdUn`wO7lvXaa zG2RhA^Nyrxd$nmYKdh^06OD7*5Q;kD>4WFvkitp!cuWaj%b^}lhG#!K>*47|peG%V zmpiNp`P#6>hSvp|8fYo}w~=q3hU76CKKvWM+P>7jY7Q%H3qW!!2{N1@o7= zGH)q)QeLus7kYb!^q7eYb8C&XlK&9Rl<*1VZrA5O0=@pS)4rR~O_Ug}_N$)k6UR1WZ3zpZjmGq`|GQAoNT$pHmvYyQw-b#AY2-}hJ zd7bz^Z5lDNP375V#*MsbKE32?3`WM*lfN6_QFtF_rW+UGON>o?%VpN=8Ee+eudH4l zubErlP=D#hhRsdO;?3(DYD)P*pLM(i!~$5nO1j;=Gb}ITTl;w{EiZkd{k&C{S7U3t z^IUCt=^E|lt+Bi`OZ$1_mREhI-FaTCIplEXhtx5`%h&`>8W@ek-cSd5o5_$7yCwBo z8aBii^I}+sWZADhcVtM1`pUa4HJxP*=G3@z{iZ}0O)yuR0@!Dg$$Q+VRl}yBv=< zWAje()(akm_hB?POOB|E=-6!5u=IJePLZr+@>gAoU-FR2UvrROuO$7GYtl!_&rK}e z70&|3I2FUMiKF48YX;3R;(G|b*@WL2;Zr}1@~u~6VkA4BuLtF49~<;w4Dsoy4@UVm zy2cUT;mcj>TGq?MZr4VaC?n30<-97Feo$rJLM&c0zpl1=L&xO7?^S!h&nCdJSHh4? z-p_qn)pZSe39TbzwJ*;%TpHIVQZVOad4Ke2xXpkskLtZIJeNV@@!`B&AUjU(>~H8E zetl=|=c9Vtj17+DkEtSWD~oNlcTif}w8_+h zUKe-Jm7-CLdS?ii_c@>LlKR@_+RD1x562T*dj(Vdj3t3P;1{nC@B1ZP*~OfyzmPvN zD_vs?|6<&Izs%&Xekp(aGV=TViIYCwX!3*ki5N0e5FP>)UL6F{sxs`;u}aO1Xj1* z7nFX#A2x+-25@V93;K^meu280-xoyykmGtXIQZ zuor-R)rHC{Z4^rXOIw5uAax#o5@hWc-VBl#qf3{5Pr7uL zDxuY*|6_IOPf-RL>Me10b|!gIA7cDAbvOs4eu5H^^6NX#p=6kPG~bHSU2cu_vM&Nl z!Lz{yU?sQ^yconUycApveimE;{wsJE_%-nTpz3xh_+wD#h628#U0}YWGZHL;=0Ve;v!O|lPJ~C8@cwLJRF2n6#1c9U$;`>P z%aoC>>SHyCoavj?;pyOcAnmK~b{pAJKB+5Xr|jnLd^xDQ^T*T1$XPf7{2(|UTmw!8 zE5OBICAb=_0xtyP;1+N#_;GL@sGn6_58etQr{V2j9r$B#Blrkd4?YPZzu}+2P2lTb z6Zj_B3~Ipq5ZDvk3LXc31XP(X1IK}vgX6)F|0UoR;7U;CJP%a4tHA5Q4}<>OEctAEJMcWZ=ip7}yvlF#Z9GV^_@4ZfY-?U=d3 z>fMw`NS^x@)CS2 zQ~2y&Idl2G8Y$mmeL)Q4)3bZt%=z3M$>&17Y2x_ygLYpUOYCXihudCAM)lDbR67=f zY8Q=Xs%OQbdfN`F9w<|wa_s|e2M>T>0S|%7_W=5v@-ZD$yfeYCV?V>$&jkMyJHZ*7 zHbC``?gZCCtDz;1E(ht=7@gb7_%W=EXS-L5CH7D>y*V3JxNnn250F+42Y|}UK=4lN zlII_QI-}KiDO11~%c61H{ZZz)?{RVOO^f?p7x#T8?jgiE*TsERB5r+i%4!k2KZ~-^_>j)Z+8Ayg1^PCvvY;N z3j81J`K$u+nep}QH_cz8T#Ipr!+5iZ`xhh0iP}JOnQy#8H8}-FL*y9t10^zT};|SKv7YJAK~FuYUs7 z#;<`N178O}4gMdPPmSd>CRs|&>te##eMU^{KXbPs7gQN!dc&{0_5qdGzThcfKNGLk z4*HJg@I<~3k}10%h?%{C`q!7C1IjE0xi#ZmA=nH15Rkadnp1u7H0+S(4YRHq4$i^j2NN%>wIt{NZ!NC z!3E&;;6m^ga1nS1NIQi0f=j?h!DZn8fM$aAtOqXuF9oT?a2xmm@M^Fe{2a)565axS5d0R%xDx&sSOGo? zR)Q~pRp6h&YVeqDc0G0ixE}lIU@bTkycj$i+yGt(GCqYDgPXuD;3eSoU?Zq+$~1vL z1e?JJ!Oh^);1=*D5Lpl30%_~;xLmtF8v$O9{Y>zqpzb066R7j@kpEl3D?ptseGI$- zL`K4|f>(k+0Jnn=f}a9^4PFJl0A3CL8N3EOzIzZ{2M!03t!<0J&w)Dk`ZwG|a0hq; zcr$nl_yzp$2XDiE07M42sYCAuM}gnOeL9FthD*V3gBO5%@V^4Q3;U;OpRT!B`JFw)X=MU>^?t4x9l#1ug`i2G0eb z1FOL2!ArqEfS&^Y2;L070Dc8L2!0=Y8GI0Y1$+#A6?_5w6Zi)B8kpbHj)Q~2|HD2W z{4-br9s*Z_e*rZQ{1t2h{|0UY-vDm}{|?>;z6pL0d<)zMvgHnc3C2K;(>dTPU^g)D zSadGnAh0_)0?Y%8LFUnLKFHmz@NBRrcma4USOXphZUB3Mmw@b%!ef{LjtM>yp{YDi zhE_mRAlZe}p*c_qbOtm7@_ycbDQ;&&%b}B@)1cW7XM%;$NN5PO0}}t4(5aB(8|-KV zI1W;J3Ofp_fhItsp;I95_7R@N=k3KjD;>q*N%>V8Lml~em8N%BUhAPNAeB*epXXsb zi+3XwLh1a<<6LMsq_kvL9wtFcAo&$QgP>>_+2=?6R5!CAr7b^|X#wQxLgi6jgyK_O zsQ!HZlrQo6JSfl6yedz=yqVmUH^m#xhssjwNbxF93MW!Nl!q~p+{GvIemK?k6Kv33A79nyF1H$nP-{4QuO^c(0ks5fKjD5w-Fhjgdn8fX`^7t*)l z4njQ`3kxBQu`8fvNP0B?ov>S#CMMs4`CCZ0{Rj)4m~6UZR~lbi$t%5U+(}4#bkZj~ zy`9%d_a^T$1s2TTA%xlP)6+djw61G(8w%gIP0NI_zh|NFGOj7i^FZSMA`2{27I*)v zJ-TF9J?N72Q*_A--Mvo6V`EJG?)fCryv?V%%6>g}{`$)LbzJ&du!VbKi!1AE>g@a7 zZ(BYhW=suw5x2^swwveDUhfi(rag!-UrtNAX;tNx^rSnIu5ZI|_6E;Z)M^s!+64kNvRK0Q;m z&ZpbLcFia;*G3kx*=@nI*%k>=@S6IUu9f2LEV~O!wU5_#ua~$hWjW?7x?1=`% z>m1~7$6B2RStF#0jp=W~Tm6K>+OaWnSjKJQPKLGPnZ1jxX+Aw({U(9(u6XVE6Eovd zdRY2zSil<6m(z|NF*D~XY_y!nr_m1}JMidzjN=n&*fAh;8e>fOnTa%P|IM6+bOM@B zq!X~e8IerG_QT9+Of%u9B+{_`D03P!T^eT?9-Yr5)3ALaa~kv0(y;Pub-L+wwa|pM zx&(bE$fq%jvRS!|8F@`_4=Y3eOsHg=_T^c6Il1|@oz_q?IS$wJd<{al6S@O>2GSk6 zQ7kx0pmL}g(!Oywv>$o~$|VCQL$jbVXcMG$yHI zA%E=?4>=)<8RKmJ#CXmjF3TS#J=~L`HU4Hv(c8KfI#0m(gG5u3bWJ|RSoJ33PrCc3 zMEu>7S@eD>n6Z435b`&fh!hSd^%Z%sk2FTV(RNbL@vmr&UBTRWCn&EOw2Lqf2`{1z zg`;T?;g_f*p>!|8haKM^9By{}H{vJ%iyYsRj_-cQ_o9nedR~P))A`>{wq=*@LU@Ub z_ZAm!2ySwJ-G#f{*?;8X`-BVc?+s3I{?c)n_*^;{xO^-?X5>EF@h|Y@#Zm6vUHDg= z{Sue%Tvx7}U3x=Y{BvEn%`TpcoPD?p_jecWNf*!8T>kENc%zHApUaozQu)wD2;pB` zxSzRj-*NHJaN+KB@&C-byK=@Hj&t$8?#gwyuXh*!rySn}F2A=szE3;1Y&wwZoN;?{_Y|zpM5&7q8A%6<*)i5&q7_r^}48f6B$X z(&3LBn*NMFBr+b5V$!7c_oTahA`(m?q$k6e6Sg{D^aw&ir5feU^>?O>qkp_eAC+=S zY}GQJxWc8DKVdT!VX89WnTFsM0+fa z-@k#RCwUDD=tsSv0njjL0;G3h7DHu_#`-#FE3^%g9%Tn4U5dVOz8BgLJpnxfy$rnp z^`Im4g$kju(7W8Ej1}+3vJMW8H(TXG_9C1*EnhZf&4T*o#!Jy3)z&v_zcAeRtEqF` z3&8z@(Gj-^Q}uI(#cXE!yRegy>6{?>@gpDJy1Vcbli_!m@X3!D`S8}=g`cEzTbq{< zIm}7>Adcs;evW5yGL3_t$9-_dhqvx7Jc|Th2Au)r1gjDssPW;gy9+-xnWtXNhdF5< zhVeYs&+)Jch}LO0_fowNt9tGhxUkbx!*@u{g`JU%e~$@^;y`*VcPZHOSU<;8 znJhyY%9U8;qOK2b-Cg*qWZUjH;WJ;b^}IHW7Wq1-eXDrBx`Z5a1^0}X;b2uC+H z)H#Vcs<_|vlZtABtHz`<;wb5xtbX1S6a_>HwPUpd90t~iS#SUTr5o% zt(%iu<`ds*shPbBfkAvB=BwKD>2z;h9qgyD@XO+0V565gE^C z{arce^PW$?zZ*+`;nK{7c8;|Ej;}JwCp}0DK9hgTXZ;-?{oki2eMt*G%Hi{A{T&~D z-}CJ<`>3??nfcMCXZ;;tO_FZ_J)lK;W}dWs*5C2PlYG+8wBR#ix8<|`j&E&}?@%T_ zWX+e)`dhw9Eabh6=smeu5P5kH`SLv0&+*-twf+Q`XP% zMCPfThNtB`W!+u)NPj9lUS&yrS;m*e`Z=CRfBJ^uNu8&xn+qG6r}U0WO#L;(JZ1eH z5Ay2g+C7FR`9g`$k9Bw9BlDEr^N0m)&r>#x<9(ZXN@GK=Ul&o9(_O#aYTQ|;>BqQR zIVALXwP9^~#gxs*@me&FOox3DS+ZeW9F*6~Umasqu32*>5AJ-r*3a=o`sDNJJnq2F z^I3n#7wMDQ6XvEIEZc)K&u9G|U!+g&Gkh%%z&xMzcYKjPIi0aIH9af&p3nMQzKM}O zslBAFljI?h=dpf{Co|U4$P?J7d!QE^dQQ_Y7L& z)182VR^t4;gF_y_1tl`$3k)#HGiWc;c5=W{Rm>Cs@} z)ERS&r%#+`*r*qend)aya4+&Cvx{0$#jI~De)j{mMQ+Gz3MLm%om4t;MyZM7ZPF?- zdL@N?15#NQN9w9YS$talyZTMR+-XxLOq)8bG#K~&BB{cS`L2I(c7dGa{#3-xKg#bW z3L2HGsNYiR16gcg#HV*YTJzi1hTl&7RXdKV@x`q&dq(<)BSW#-rC%tv+&mVboSjEpU$^i3;e~oUhMxKfTD4Db5^PI^PITEHTerNm%JcWRi2= zTW@tYG33z3xulbWOvcP#g*ylO8pM6y;5=wI)Q>oh$ZsBJ=l8VDq+FEt>*d*rIx!~~ z*&k`nPONSg&T5=~y3J~&$*;qeC*nUM^&CkkF_)*bXz=DsZ@wh)7NrcL5^QVw(-Hl% z-Un%u?!tc*RL&lIE0HSv^Gp~|u)jaVd|QId@8MYyR?z9^yZ9~uFN8h-sgJIL%AnQI zxzKr#`X~1^&6uJ2m-~xmE*c3cO`_#~llfLdK=J|GZ!<2jMK)_!?kRDL+q^r(EoFNq zI2;@SjfPH##z0#8j)RII?)sSbx+j7fSJ)2d9UpGFoA=Mn?}W|ZnR`2W$H$y6o(ax| z=0GLTTxcGorP=~$A+!iu3@w4qf|fx`q4z^)L(3tpTQqL4waPgE@H7AN(`_qhr}2D1al?}OwGF}e`pS**reJ(iWA%8xHc}IB ztg36^Gakl)@94#w#@Ea&uW6_r*;HOt$q)b5#cSjB<#m-CYwIid0!;F0+`7%RX|_#` z4Q{bn&W|`ZY;LTMHx<>yn`+nbbHVC!*-oX&Y7CA*B8ix@m}_k+vQ`VV^|d;i%VNE* z5fzZE7_#Px94Benh&k25qne>>nU;Mj5T4h1Z8FG>NgVGLvFG z?!9?_(YZ~7Uz3}{YI1yyRc&AJuehVP4aQ;D0((28iBX2JJ-8P46TqR6$p|?2`iaU~ zmw9j0fYvp?f%>u7nhs7w#)L8lkd?a-p|@M>W%Az#|0pQB{+rAqOY6T9($e~`ocR5M zvLmQ`oz~KM~1$lZf6a^m$2wM2a2Pi%=eC8`NMFkYa2ZD*!^=t~2@j56h zP4a3Xd9T)#smE^WEyKoX%(9$rkEv!#%gUOY<=nZqnrZU>zkT*Wf6ZM#KK|eO*0yj*s;I%yiP-Pa6HK;c(hrMUhjQhvtpjw(GTer#U5MPNz!wBir9J z+B%s>I~g%LdzV{BOza=g1&=r+Ugu4m?cb4FX*5lBM=nVSw6G+Bp066s`R?!>iKKLx zzBY7-{wY67Hx5bkFU@Z;+R{z^QF@*pFd`z;i_7=)H^NlvAw;@<72XSvBV8~Y3{mP& zAx(un(_+vnvCO07sF3{4sq>M-yN%eCPjZb0sds4Jq4_H=7)Dd!fKK7~bwaSKF@5x` zQ3G}Es4RVPN|qinHA`C~vvg@emOeHrtEsrQc~-i4B}Vt2l`0rF>!R-6|AXc^F-EwK zos+`<>^VugVZFy)URklSj28WKvJM)}b3JBl7u{)YxxXf7s}Yf?dc<-mDng&mNzy&$ z75GbXTaD)VJIp0r^ds{#{p|w_jOG%z*%IfEEa_zEI7{q zv2<%?ZuDgayoB3&lHSkiKUSvbc`M>|advNWl+vv$;v+m^5}Z=q{6`9=7_r>~Is1Q> zQm*s*bU~6aNMBkts_W~nK%va1V9LhlOYzYcR}ImvHSS3d%7v2N3BdkO0It6gi9Hn4 z%gWc3RWBXCwn8PUkk|{fI)OUkAM_cg3F^Um>2-pg;0I9da^k+LXWITG>tGlt7iJ7zeEOH zwm5fCa?DECKx){g(lra$6;&)0yIjeP2&LMoBmP03R05YkLiM%TN!qj4ZG`H)Whpv$ zZ7ABc*>QTpS`XUkWpN1&)GwxfF8-}fA6|W}Dvo>RNs}JLqaKfuc>Fc!;Y`|4{o>k` zTg2l9JZ{Hh5hE*cdhw8<3Dy6zwlMiYOOQQ7T`x4C;T)O3z;b z;X+CZ!2VCeu52z}T2zZGS5=oOeZ6{wS?bZL>k@|+1&gZ7YG#zJSiN9OWyRvF%`&-d0)tr0<=3COVC{z75xt zYkS^u5xo)@DgM^!JUH4e9lId;F{m}K51M*(Xa(y%%Na8}F6nLY z(uHek3fGh^WV*;8%BA02UR}1PqO3a4E|balk7WZp2LB(+2I=ne^7NJUmA-VPti{yt z4J%+DxC-`#_rrd0AIyX=!T#_Z%!1!R7NM0ya5=CD4uJ9?Vj@|qAmLk^;6S(+4uS{a zt?)T^kIjp3Hia$ZE>n>{aKamP8GtUN)LJ}qyg!1i;7T@_T|sxW(BrK!`>>TJO!DGUD8hK zc88BZnOnP{yj`@w1@K>#@>!KA66eZ*!D1}bUK}2C@&}yq=i%enPrz3Aieo?P@GT&^3G7&?GE>oPlNvoa~ylFou8?!At-cWEq5H`(JmEbojrwpvy=Y?{1y3Vw%Tas zRkRw6B(c_6r6jNF$y^(+dZ`Tk=|j^ZUSOk;>0PDM>f+M4trn|W9fot^5m*L~!qw2P zs~+y29oUwQj_q1D`&>j417J_4<1mr@3H{>3Nn-=Muwn1W;zg%whA5;L@eGHj;3)VK zWQwVF_z*k|e+ggKUF&ur42QUglZ8`Xg5d;) zN_Y}J4F3aa_yRltW%3_`GWpNIm!Z6&{u+J(&%p2CZ(tOw3~#{(_@8haWM8)S!*}3w@Ll){d=I_{e-E#~_u&ul0~pEb`VgkTKfo;b zM>qn01Si9f;R1LOuJ)l^LRkktfm`9Ha38!3pN5~o=i%q@Rrm#b8(x7Q!!O}i@GE!? z{t12uzlPCj2bSaYfk=6}BUx||B7KN&4zkS0KiPf@wmq;n~gi@FnGG<WxK4 zlwRJLZElL!yBqH}H}jpo?LM<1UN>$lHlsr1vsiz-E!o`|A9%^sb-#+!y|&LZACK4f zZ(r$tI%vO!J)~)-`C`1D`^%N)xp;l9X_@(9yv}c4W?qTcZOtp)KLnkPXX12!J99Fcs)^~c|+$*9IhRi630M59P>eAyuP}_tM~7Sk#0Ba^y&*cx|vUlHB&ki%dI=R zNvGmhxidyO-mo)YIu^@?oiP!C&JEQ?r|pc>KjKc$-bY6J zZ^Mxph=sHuvL(tR{=bk=cA<1+I5H2ZL3SWdBWIC|$d5=oo5QV0F;a=tBYP0ik#QM@ z?zZ1Ou+`+_pL=}*N=QxgFDyfZ&vAE!b@VIzd$=CflIlC}xbdnOaC3@pqj_Zp;La|seiAXk5fwCOQfNh!7JBwk0upG)rA{LVYq5T^I-?qhV-@9)0L|KlT}hR)qHv}tN+h^cxs z6~^oOJsC|L3treW&-hVi@BLdW&D$web+Ywa{1L5#O@FSd-8j169b&eI>c|7B(_8KE zbMtda1BWV=sxoZ%7(0yNHx8#pE?Tf4PtGs;-Bj+>TX>_M6{hb$kUC9XP7LJ~FS=3u z?f=*8pc~Bw%AIws~{DkG!es5Ds#keoCXn9yss` z4n}E|{)n1qIW&60J5i2zIyz-&5}le$Jz_7as9r6HMK`WFU=Lh#E@Rcx@xSQNbD!#I zUiA1kJoSNT4lFxTIN8X!PFfd{XUJ^l17>TIia49B_HC4NRe2C(VK3GhhejmCtNoqq zDWHybR*D6pj(`4*UU%rugjh9)QIvGnnY}HPyhlkF<&lO-C5WgkkA0&DKYM3tf;z*! zlXQ@#q_vjI-w5oar&T2DtbuKpoQDo`Hs>rJ4)re;2pd40#}e{YXxO}Z~c4pVP!n3zPHyuqf`^M_Vqh51BtbXdKH*854KHbG0R*P0* zYrjWpx3w1bq2Gy?R>4D#dt;}LAtEQk;iD{ES3Q#ywn-j^wzj!LYd~{}O&)kFpYeu0 zjv?AM@T?QViya0Ybz=Ci!@!eH4DyugVz(QWpj3ignKScK$Gl;EFbvYCk0pi8MRSQJ zr{<@QCF;J<#hXhK^vLIOQokU~OlKO5N52pK1!OC_^K;0Ce~;Fo=@ayC^GD0iBD!|) zFnu+{qo2u$Y$8;`X%uj%8`k2 w`t82Mb@9Xry2lBRp4u - 32 + 25 - 10 + 20 - COM16 + COM9 1000 diff --git a/Laminator-GUI/Laminator-GUI/bin/x86/Release/temperatur.ini b/Laminator-GUI/Laminator-GUI/bin/x86/Release/temperatur.ini index cf5d43e..0f1b23a 100644 --- a/Laminator-GUI/Laminator-GUI/bin/x86/Release/temperatur.ini +++ b/Laminator-GUI/Laminator-GUI/bin/x86/Release/temperatur.ini @@ -1,6 +1,6 @@ [Profile 1] temp=200 -motor=10 +motor=20 name=Aufheitzen 200°C [Profile 2] @@ -10,12 +10,12 @@ name=Steppen 200°C [Profile 3] temp=210 -motor=10 +motor=20 name=Brennen 210°C [Profile 4] temp=10 -motor=10 +motor=20 name=Abkühlen Motor ein [Profile 5] diff --git a/Laminator-GUI/Laminator-GUI/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Laminator-GUI/Laminator-GUI/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache index 52cd88daed25cfa6251cc7d2edfde5c13a280329..09abbf46accaf7736d72f619b84db895a1c935c0 100644 GIT binary patch delta 142 zcmca*xy))qIk#{VqpMYnYi4?CUaEpiVo7RdYTo85Zf-`Qa18OuRooVn5AX;JrDB)j Y<5d(2#wxWri?@bHC=$DzqSQ_%0AVRFmH+?% delta 65 zcmZ2xb<1)?IX82$i`C?OUW>_xxGyt%K-u?sgqg#jY#UxhW)~N$&H21rc$mE)f}3-t Hb}|6~-02ky diff --git a/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.csproj.FileListAbsolute.txt b/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.csproj.FileListAbsolute.txt index 7e233e6..986a543 100644 --- a/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.csproj.FileListAbsolute.txt +++ b/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.csproj.FileListAbsolute.txt @@ -8,3 +8,13 @@ D:\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Lamina D:\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator-GUI.pdb D:\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\bin\x86\Release\temperatur.ini D:\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator-GUI.csprojResolveAssemblyReference.cache +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\bin\x86\Release\Laminator-GUI.exe.config +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator-GUI.exe +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator-GUI.pdb +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\bin\x86\Release\temperatur.ini +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\bin\x86\Release\Laminator-GUI.exe +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\bin\x86\Release\Laminator-GUI.pdb +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator-GUI.csprojResolveAssemblyReference.cache +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator_GUI.Form1.resources +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator_GUI.Properties.Resources.resources +E:\Eigene Dateien\Doc's\Basteleien\Laminator\Laminator-GUI\Laminator-GUI\obj\x86\Release\Laminator-GUI.csproj.GenerateResource.Cache diff --git a/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.csproj.GenerateResource.Cache b/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.csproj.GenerateResource.Cache index 273f6f33dd6d11fd45b057b6e9ac2489b0e78475..291f225bc68a2ff243f2c85cde279ba43b6f48b7 100644 GIT binary patch delta 26 icmX@lex7|p0uv+8=0qklM)p&mJ#@ZoxIB3tvmpS0tqLsw delta 26 icmX@lex7|p0uv+C=0qklM)u84J1**3T%0_Q*$@DD<_RzW diff --git a/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.exe b/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.exe index 6abb6b29dc629761f3ad9d15a4328ceda2cb9b3c..145e554b10bf17c1a2e0a43f8d8cc86c4996093d 100644 GIT binary patch literal 22016 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 diff --git a/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.pdb b/Laminator-GUI/Laminator-GUI/obj/x86/Release/Laminator-GUI.pdb index 22a4c643b453fbf203243d3384655105fe7affdf..5c3f533bdd0841d68818904a91123322f8411124 100644 GIT binary patch literal 50688 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 w`t82Mb@9Xry2lBRp4ux1=%YJO^k+Hzga7bw7Z6 z8I|0^Jx_~tm+pfgCFl;B@bXgOq~{v%c%B(PtajQ@G`$&lA|H4&Zc&Gf!cndOO|2(NVb8b;9TI7rYX8lpJwcEq_~ZLFE08$1=7DFsXs<3b=~ z)S{qfTZLkf4+9lL7Us9ft|0_l0A{U*)&$SR`nWH0eLH9hZ3OB#Kkj_GS&S&9@Rh&b zO`PXKI4v70QhXR*6|-FE&KO?oX#yuLaODuZ1Tg**>Eeyp4u6V-xOg_k>&>Sexr!VT z@osaMwG{PfTyzFp2~6@K4NyPz;xA}x>>)*{SXB>BPSzG>z*#+MCE`z%>i7P>{yTqY N9OKV@3svUz$)7>U9A*Fj delta 1068 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

$kGBLJj^OhPD8a0j0-<*~J)GT)S=J7R} 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 literal 74109 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: 0: 0c 94 a8 00 jmp 0x150 ; 0x150 <__ctors_end> - 4: 0c 94 94 05 jmp 0xb28 ; 0xb28 <__vector_1> + 4: 0c 94 e1 07 jmp 0xfc2 ; 0xfc2 <__vector_1> 8: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 10: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 14: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> - 18: 0c 94 10 05 jmp 0xa20 ; 0xa20 <__vector_6> + 18: 0c 94 5d 07 jmp 0xeba ; 0xeba <__vector_6> 1c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 20: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 24: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 28: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> - 2c: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> + 2c: 0c 94 ef 07 jmp 0xfde ; 0xfde <__vector_11> 30: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 34: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> 38: 0c 94 d0 00 jmp 0x1a0 ; 0x1a0 <__bad_interrupt> @@ -183,7 +183,7 @@ Disassembly of section .text: 14c: 3d 27 eor r19, r29 0000014e <__ctors_start>: - 14e: 09 06 cpc r0, r25 + 14e: b7 08 sbc r11, r7 00000150 <__ctors_end>: 150: 11 24 eor r1, r1 @@ -197,18 +197,18 @@ Disassembly of section .text: 15c: 11 e0 ldi r17, 0x01 ; 1 15e: a0 e6 ldi r26, 0x60 ; 96 160: b0 e0 ldi r27, 0x00 ; 0 - 162: ec ee ldi r30, 0xEC ; 236 - 164: f5 e1 ldi r31, 0x15 ; 21 + 162: e8 e8 ldi r30, 0x88 ; 136 + 164: fb e1 ldi r31, 0x1B ; 27 166: 02 c0 rjmp .+4 ; 0x16c <__do_copy_data+0x10> 168: 05 90 lpm r0, Z+ 16a: 0d 92 st X+, r0 - 16c: a6 39 cpi r26, 0x96 ; 150 + 16c: a2 3a cpi r26, 0xA2 ; 162 16e: b1 07 cpc r27, r17 170: d9 f7 brne .-10 ; 0x168 <__do_copy_data+0xc> 00000172 <__do_clear_bss>: 172: 21 e0 ldi r18, 0x01 ; 1 - 174: a6 e9 ldi r26, 0x96 ; 150 + 174: a2 ea ldi r26, 0xA2 ; 162 176: b1 e0 ldi r27, 0x01 ; 1 178: 01 c0 rjmp .+2 ; 0x17c <.do_clear_bss_start> @@ -216,7 +216,7 @@ Disassembly of section .text: 17a: 1d 92 st X+, r1 0000017c <.do_clear_bss_start>: - 17c: a2 3d cpi r26, 0xD2 ; 210 + 17c: a5 3e cpi r26, 0xE5 ; 229 17e: b2 07 cpc r27, r18 180: e1 f7 brne .-8 ; 0x17a <.do_clear_bss_loop> @@ -227,12 +227,12 @@ Disassembly of section .text: 188: 04 c0 rjmp .+8 ; 0x192 <__do_global_ctors+0x10> 18a: 22 97 sbiw r28, 0x02 ; 2 18c: fe 01 movw r30, r28 - 18e: 0e 94 40 08 call 0x1080 ; 0x1080 <__tablejump__> + 18e: 0e 94 22 0b call 0x1644 ; 0x1644 <__tablejump__> 192: ce 34 cpi r28, 0x4E ; 78 194: d1 07 cpc r29, r17 196: c9 f7 brne .-14 ; 0x18a <__do_global_ctors+0x8> 198: 0e 94 dd 01 call 0x3ba ; 0x3ba

- 19c: 0c 94 f4 0a jmp 0x15e8 ; 0x15e8 <_exit> + 19c: 0c 94 c2 0d jmp 0x1b84 ; 0x1b84 <_exit> 000001a0 <__bad_interrupt>: 1a0: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -366,8 +366,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 1ca: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -416,8 +416,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 1e4: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -924,8 +924,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 2da: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -1011,8 +1011,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 318: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -1059,8 +1059,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 32e: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -1107,8 +1107,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 344: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -1189,8 +1189,8 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } 372: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); @@ -1306,2412 +1306,1654 @@ int main(void) 3bc: df 93 push r29 3be: cd b7 in r28, 0x3d ; 61 3c0: de b7 in r29, 0x3e ; 62 - 3c2: ab 97 sbiw r28, 0x2b ; 43 - 3c4: 0f b6 in r0, 0x3f ; 63 - 3c6: f8 94 cli - 3c8: de bf out 0x3e, r29 ; 62 - 3ca: 0f be out 0x3f, r0 ; 63 - 3cc: cd bf out 0x3d, r28 ; 61 + 3c2: c3 5a subi r28, 0xA3 ; 163 + 3c4: d1 09 sbc r29, r1 + 3c6: 0f b6 in r0, 0x3f ; 63 + 3c8: f8 94 cli + 3ca: de bf out 0x3e, r29 ; 62 + 3cc: 0f be out 0x3f, r0 ; 63 + 3ce: cd bf out 0x3d, r28 ; 61 setup(); - 3ce: 0e 94 d2 00 call 0x1a4 ; 0x1a4 <_Z5setupv> + 3d0: 0e 94 d2 00 call 0x1a4 ; 0x1a4 <_Z5setupv> int16_t target_temp = 20; - 3d2: 24 e1 ldi r18, 0x14 ; 20 - 3d4: 30 e0 ldi r19, 0x00 ; 0 - 3d6: 39 a7 std Y+41, r19 ; 0x29 - 3d8: 28 a7 std Y+40, r18 ; 0x28 + int8_t target_motor = 20; + float pwm_value = 0; + uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + 3d4: 88 e2 ldi r24, 0x28 ; 40 + 3d6: fe 01 movw r30, r28 + 3d8: b9 96 adiw r30, 0x29 ; 41 + 3da: df 01 movw r26, r30 + 3dc: 28 2f mov r18, r24 + 3de: 1d 92 st X+, r1 + 3e0: 2a 95 dec r18 + 3e2: e9 f7 brne .-6 ; 0x3de + uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + 3e4: fe 01 movw r30, r28 + 3e6: 31 96 adiw r30, 0x01 ; 1 + 3e8: df 01 movw r26, r30 + 3ea: 1d 92 st X+, r1 + 3ec: 8a 95 dec r24 + 3ee: e9 f7 brne .-6 ; 0x3ea + uint8_t p = 0; + 3f0: c9 56 subi r28, 0x69 ; 105 + 3f2: df 4f sbci r29, 0xFF ; 255 + 3f4: 18 82 st Y, r1 + 3f6: c7 59 subi r28, 0x97 ; 151 + 3f8: d0 40 sbci r29, 0x00 ; 0 + +int main(void) +{ + setup(); + int16_t target_temp = 20; + int8_t target_motor = 20; + 3fa: b4 e1 ldi r27, 0x14 ; 20 + 3fc: ca 56 subi r28, 0x6A ; 106 + 3fe: df 4f sbci r29, 0xFF ; 255 + 400: b8 83 st Y, r27 + 402: c6 59 subi r28, 0x96 ; 150 + 404: d0 40 sbci r29, 0x00 ; 0 +} + +int main(void) +{ + setup(); + int16_t target_temp = 20; + 406: e4 e1 ldi r30, 0x14 ; 20 + 408: f0 e0 ldi r31, 0x00 ; 0 + 40a: cc 56 subi r28, 0x6C ; 108 + 40c: df 4f sbci r29, 0xFF ; 255 + 40e: f9 83 std Y+1, r31 ; 0x01 + 410: e8 83 st Y, r30 + 412: c4 59 subi r28, 0x94 ; 148 + 414: d0 40 sbci r29, 0x00 ; 0 + uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t p = 0; + while(1) + { + v0a[p] = a.get(0); + 416: 9e 01 movw r18, r28 + 418: 2f 5f subi r18, 0xFF ; 255 + 41a: 3f 4f sbci r19, 0xFF ; 255 + 41c: c8 57 subi r28, 0x78 ; 120 + 41e: df 4f sbci r29, 0xFF ; 255 + 420: 39 83 std Y+1, r19 ; 0x01 + 422: 28 83 st Y, r18 + 424: c8 58 subi r28, 0x88 ; 136 + 426: d0 40 sbci r29, 0x00 ; 0 + 428: ce 55 subi r28, 0x5E ; 94 + 42a: df 4f sbci r29, 0xFF ; 255 + 42c: 28 83 st Y, r18 + 42e: c2 5a subi r28, 0xA2 ; 162 + 430: d0 40 sbci r29, 0x00 ; 0 + 432: cd 55 subi r28, 0x5D ; 93 + 434: df 4f sbci r29, 0xFF ; 255 + 436: 38 83 st Y, r19 + 438: c3 5a subi r28, 0xA3 ; 163 + 43a: d0 40 sbci r29, 0x00 ; 0 + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + 43c: 0f 2e mov r0, r31 + 43e: f9 e2 ldi r31, 0x29 ; 41 + 440: af 2e mov r10, r31 + 442: b1 2c mov r11, r1 + 444: f0 2d mov r31, r0 + 446: ac 0e add r10, r28 + 448: bd 1e adc r11, r29 + 44a: 38 e2 ldi r19, 0x28 ; 40 + 44c: a3 0e add r10, r19 + 44e: b1 1c adc r11, r1 + uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t p = 0; + while(1) + { + v0a[p] = a.get(0); + 450: c9 56 subi r28, 0x69 ; 105 + 452: df 4f sbci r29, 0xFF ; 255 + 454: 88 81 ld r24, Y + 456: c7 59 subi r28, 0x97 ; 151 + 458: d0 40 sbci r29, 0x00 ; 0 + 45a: 48 2f mov r20, r24 + 45c: 50 e0 ldi r21, 0x00 ; 0 _delay_ms(100); } uint16_t get(uint8_t pin) { ADMUX &= ~((1< - 3ea: 00 00 nop + 468: 95 e3 ldi r25, 0x35 ; 53 + 46a: 9a 95 dec r25 + 46c: f1 f7 brne .-4 ; 0x46a <__stack+0xb> + 46e: 00 00 nop //ADMUX = 0; _delay_us(10); ADCSRA |= (1< + 472: 34 9b sbis 0x06, 4 ; 6 + 474: fe cf rjmp .-4 ; 0x472 <__stack+0x13> //ADCSRA |= (1< - 404: 00 00 nop + 496: 38 9a sbi 0x07, 0 ; 7 + 498: b5 e3 ldi r27, 0x35 ; 53 + 49a: ba 95 dec r27 + 49c: f1 f7 brne .-4 ; 0x49a <__stack+0x3b> + 49e: 00 00 nop //ADMUX = 0; _delay_us(10); ADCSRA |= (1< + 4a2: 34 9b sbis 0x06, 4 ; 6 + 4a4: fe cf rjmp .-4 ; 0x4a2 <__stack+0x43> //ADCSRA |= (1< + { + v0s += v0a[i]; + v1s += v1a[i]; + } + uint16_t v0 = v0s/20; + 4f6: ad ec ldi r26, 0xCD ; 205 + 4f8: bc ec ldi r27, 0xCC ; 204 + 4fa: 0e 94 00 0b call 0x1600 ; 0x1600 <__umulhisi3> + 4fe: 7c 01 movw r14, r24 + 500: f6 94 lsr r15 + 502: e7 94 ror r14 + 504: f6 94 lsr r15 + 506: e7 94 ror r14 + 508: f6 94 lsr r15 + 50a: e7 94 ror r14 + 50c: f6 94 lsr r15 + 50e: e7 94 ror r14 + uint16_t v1 = v1s/20; + 510: 98 01 movw r18, r16 + 512: 0e 94 00 0b call 0x1600 ; 0x1600 <__umulhisi3> + 516: 6c 01 movw r12, r24 + 518: d6 94 lsr r13 + 51a: c7 94 ror r12 + 51c: d6 94 lsr r13 + 51e: c7 94 ror r12 + 520: d6 94 lsr r13 + 522: c7 94 ror r12 + 524: d6 94 lsr r13 + 526: c7 94 ror r12 + p = (p + 1) % 20; + 528: ca 01 movw r24, r20 + 52a: 01 96 adiw r24, 0x01 ; 1 + 52c: 64 e1 ldi r22, 0x14 ; 20 + 52e: 70 e0 ldi r23, 0x00 ; 0 + 530: 0e 94 ec 0a call 0x15d8 ; 0x15d8 <__divmodhi4> + 534: c9 56 subi r28, 0x69 ; 105 + 536: df 4f sbci r29, 0xFF ; 255 + 538: 88 83 st Y, r24 + 53a: c7 59 subi r28, 0x97 ; 151 + 53c: d0 40 sbci r29, 0x00 ; 0 if(v0 > 1000 || v1 > 1000 || v0 < 5 || v1 < 5) { - 410: 99 ee ldi r25, 0xE9 ; 233 - 412: a9 16 cp r10, r25 - 414: 93 e0 ldi r25, 0x03 ; 3 - 416: b9 06 cpc r11, r25 - 418: 68 f4 brcc .+26 ; 0x434 - 41a: e9 ee ldi r30, 0xE9 ; 233 - 41c: 8e 16 cp r8, r30 - 41e: e3 e0 ldi r30, 0x03 ; 3 - 420: 9e 06 cpc r9, r30 - 422: 40 f4 brcc .+16 ; 0x434 - 424: f5 e0 ldi r31, 0x05 ; 5 - 426: af 16 cp r10, r31 - 428: b1 04 cpc r11, r1 - 42a: 20 f0 brcs .+8 ; 0x434 - 42c: 25 e0 ldi r18, 0x05 ; 5 - 42e: 82 16 cp r8, r18 - 430: 91 04 cpc r9, r1 - 432: 78 f4 brcc .+30 ; 0x452 + 53e: 39 ee ldi r19, 0xE9 ; 233 + 540: e3 16 cp r14, r19 + 542: 33 e0 ldi r19, 0x03 ; 3 + 544: f3 06 cpc r15, r19 + 546: 68 f4 brcc .+26 ; 0x562 <__stack+0x103> + 548: 89 ee ldi r24, 0xE9 ; 233 + 54a: c8 16 cp r12, r24 + 54c: 83 e0 ldi r24, 0x03 ; 3 + 54e: d8 06 cpc r13, r24 + 550: 40 f4 brcc .+16 ; 0x562 <__stack+0x103> + 552: 95 e0 ldi r25, 0x05 ; 5 + 554: e9 16 cp r14, r25 + 556: f1 04 cpc r15, r1 + 558: 20 f0 brcs .+8 ; 0x562 <__stack+0x103> + 55a: a5 e0 ldi r26, 0x05 ; 5 + 55c: ca 16 cp r12, r26 + 55e: d1 04 cpc r13, r1 + 560: 68 f4 brcc .+26 ; 0x57c <__stack+0x11d> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - 434: c4 9a sbi 0x18, 4 ; 24 + 562: c4 9a sbi 0x18, 4 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - 436: bc 9a sbi 0x17, 4 ; 23 + 564: bc 9a sbi 0x17, 4 ; 23 } } //out1::toggle(); } void stop() { pwm[0] = 0; pwm[1] = 0; pwm[2] = 0; pwm[3] = 0; pwm[4] = 0; pwm[5] = 0; pwm[6] = 0; - 438: 10 92 cc 01 sts 0x01CC, r1 - 43c: 10 92 cd 01 sts 0x01CD, r1 - 440: 10 92 ce 01 sts 0x01CE, r1 - 444: 10 92 cf 01 sts 0x01CF, r1 - 448: 10 92 d0 01 sts 0x01D0, r1 - 44c: 10 92 d1 01 sts 0x01D1, r1 - 450: ff cf rjmp .-2 ; 0x450 + 566: 10 92 e0 01 sts 0x01E0, r1 + 56a: 10 92 e1 01 sts 0x01E1, r1 + 56e: 10 92 e2 01 sts 0x01E2, r1 + 572: 10 92 e3 01 sts 0x01E3, r1 + 576: 10 92 e4 01 sts 0x01E4, r1 + 57a: ff cf rjmp .-2 ; 0x57a <__stack+0x11b> } float convert(uint16_t v, uint8_t pin) { float c1 = this->table[pin][0]; - 452: e7 e9 ldi r30, 0x97 ; 151 - 454: f1 e0 ldi r31, 0x01 ; 1 - 456: 60 81 ld r22, Z - 458: 71 81 ldd r23, Z+1 ; 0x01 - 45a: 80 e0 ldi r24, 0x00 ; 0 - 45c: 90 e0 ldi r25, 0x00 ; 0 - 45e: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 462: 6a a3 std Y+34, r22 ; 0x22 - 464: 7b a3 std Y+35, r23 ; 0x23 - 466: 8c a3 std Y+36, r24 ; 0x24 - 468: 9d a3 std Y+37, r25 ; 0x25 + 57c: e3 ea ldi r30, 0xA3 ; 163 + 57e: f1 e0 ldi r31, 0x01 ; 1 + 580: 60 81 ld r22, Z + 582: 71 81 ldd r23, Z+1 ; 0x01 + 584: 80 e0 ldi r24, 0x00 ; 0 + 586: 90 e0 ldi r25, 0x00 ; 0 + 588: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 58c: 36 2e mov r3, r22 + 58e: 27 2e mov r2, r23 + 590: c6 57 subi r28, 0x76 ; 118 + 592: df 4f sbci r29, 0xFF ; 255 + 594: 88 83 st Y, r24 + 596: ca 58 subi r28, 0x8A ; 138 + 598: d0 40 sbci r29, 0x00 ; 0 + 59a: c5 57 subi r28, 0x75 ; 117 + 59c: df 4f sbci r29, 0xFF ; 255 + 59e: 98 83 st Y, r25 + 5a0: cb 58 subi r28, 0x8B ; 139 + 5a2: d0 40 sbci r29, 0x00 ; 0 float v1 = this->table[pin][1]; - 46a: e9 e9 ldi r30, 0x99 ; 153 - 46c: f1 e0 ldi r31, 0x01 ; 1 - 46e: 60 81 ld r22, Z - 470: 71 81 ldd r23, Z+1 ; 0x01 - 472: 80 e0 ldi r24, 0x00 ; 0 - 474: 90 e0 ldi r25, 0x00 ; 0 - 476: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 47a: 26 2e mov r2, r22 - 47c: 37 2e mov r3, r23 - 47e: 08 2f mov r16, r24 - 480: 19 2f mov r17, r25 + 5a4: a5 ea ldi r26, 0xA5 ; 165 + 5a6: b1 e0 ldi r27, 0x01 ; 1 + 5a8: 6d 91 ld r22, X+ + 5aa: 7c 91 ld r23, X + 5ac: 80 e0 ldi r24, 0x00 ; 0 + 5ae: 90 e0 ldi r25, 0x00 ; 0 + 5b0: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 5b4: 06 2f mov r16, r22 + 5b6: 17 2f mov r17, r23 + 5b8: 98 2e mov r9, r24 + 5ba: 89 2e mov r8, r25 float c2 = this->table[pin][2]; - 482: eb e9 ldi r30, 0x9B ; 155 - 484: f1 e0 ldi r31, 0x01 ; 1 - 486: 60 81 ld r22, Z - 488: 71 81 ldd r23, Z+1 ; 0x01 - 48a: 80 e0 ldi r24, 0x00 ; 0 - 48c: 90 e0 ldi r25, 0x00 ; 0 - 48e: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 492: 9b 01 movw r18, r22 - 494: ac 01 movw r20, r24 + 5bc: e7 ea ldi r30, 0xA7 ; 167 + 5be: f1 e0 ldi r31, 0x01 ; 1 + 5c0: 60 81 ld r22, Z + 5c2: 71 81 ldd r23, Z+1 ; 0x01 + 5c4: 80 e0 ldi r24, 0x00 ; 0 + 5c6: 90 e0 ldi r25, 0x00 ; 0 + 5c8: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 5cc: 9b 01 movw r18, r22 + 5ce: ac 01 movw r20, r24 float v2 = this->table[pin][3]; float m = ((c1 - c2) / (v1 - v2)); - 496: ba a1 ldd r27, Y+34 ; 0x22 - 498: ab a1 ldd r26, Y+35 ; 0x23 - 49a: fc a1 ldd r31, Y+36 ; 0x24 - 49c: ed a1 ldd r30, Y+37 ; 0x25 - 49e: 6b 2f mov r22, r27 - 4a0: 7a 2f mov r23, r26 - 4a2: 8f 2f mov r24, r31 - 4a4: 9e 2f mov r25, r30 - 4a6: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> - 4aa: 6b 01 movw r12, r22 - 4ac: 7c 01 movw r14, r24 + 5d0: c6 57 subi r28, 0x76 ; 118 + 5d2: df 4f sbci r29, 0xFF ; 255 + 5d4: f8 81 ld r31, Y + 5d6: ca 58 subi r28, 0x8A ; 138 + 5d8: d0 40 sbci r29, 0x00 ; 0 + 5da: c5 57 subi r28, 0x75 ; 117 + 5dc: df 4f sbci r29, 0xFF ; 255 + 5de: e8 81 ld r30, Y + 5e0: cb 58 subi r28, 0x8B ; 139 + 5e2: d0 40 sbci r29, 0x00 ; 0 + 5e4: 63 2d mov r22, r3 + 5e6: 72 2d mov r23, r2 + 5e8: 8f 2f mov r24, r31 + 5ea: 9e 2f mov r25, r30 + 5ec: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3> + 5f0: 2b 01 movw r4, r22 + 5f2: 3c 01 movw r6, r24 float convert(uint16_t v, uint8_t pin) { float c1 = this->table[pin][0]; float v1 = this->table[pin][1]; float c2 = this->table[pin][2]; float v2 = this->table[pin][3]; - 4ae: ed e9 ldi r30, 0x9D ; 157 - 4b0: f1 e0 ldi r31, 0x01 ; 1 - 4b2: 60 81 ld r22, Z - 4b4: 71 81 ldd r23, Z+1 ; 0x01 - 4b6: 80 e0 ldi r24, 0x00 ; 0 - 4b8: 90 e0 ldi r25, 0x00 ; 0 - 4ba: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 4be: 9b 01 movw r18, r22 - 4c0: ac 01 movw r20, r24 + 5f4: 60 91 a9 01 lds r22, 0x01A9 + 5f8: 70 91 aa 01 lds r23, 0x01AA + 5fc: 80 e0 ldi r24, 0x00 ; 0 + 5fe: 90 e0 ldi r25, 0x00 ; 0 + 600: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 604: 9b 01 movw r18, r22 + 606: ac 01 movw r20, r24 float m = ((c1 - c2) / (v1 - v2)); - 4c2: 62 2d mov r22, r2 - 4c4: 73 2d mov r23, r3 - 4c6: 80 2f mov r24, r16 - 4c8: 91 2f mov r25, r17 - 4ca: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> - 4ce: 9b 01 movw r18, r22 - 4d0: ac 01 movw r20, r24 - 4d2: c7 01 movw r24, r14 - 4d4: b6 01 movw r22, r12 - 4d6: 0e 94 91 06 call 0xd22 ; 0xd22 <__divsf3> - 4da: d6 2e mov r13, r22 - 4dc: c7 2e mov r12, r23 - 4de: e8 2e mov r14, r24 - 4e0: f9 2e mov r15, r25 - 4e2: 46 2e mov r4, r22 - 4e4: 57 2e mov r5, r23 - 4e6: 68 2e mov r6, r24 - 4e8: 79 2e mov r7, r25 + 608: 60 2f mov r22, r16 + 60a: 71 2f mov r23, r17 + 60c: 89 2d mov r24, r9 + 60e: 98 2d mov r25, r8 + 610: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3> + 614: 9b 01 movw r18, r22 + 616: ac 01 movw r20, r24 + 618: c3 01 movw r24, r6 + 61a: b2 01 movw r22, r4 + 61c: 0e 94 3f 09 call 0x127e ; 0x127e <__divsf3> + 620: 56 2e mov r5, r22 + 622: 47 2e mov r4, r23 + 624: 68 2e mov r6, r24 + 626: 79 2e mov r7, r25 + 628: 86 2f mov r24, r22 + 62a: 94 2d mov r25, r4 + 62c: a6 2d mov r26, r6 + 62e: b7 2d mov r27, r7 + 630: c4 57 subi r28, 0x74 ; 116 + 632: df 4f sbci r29, 0xFF ; 255 + 634: 88 83 st Y, r24 + 636: 99 83 std Y+1, r25 ; 0x01 + 638: aa 83 std Y+2, r26 ; 0x02 + 63a: bb 83 std Y+3, r27 ; 0x03 + 63c: cc 58 subi r28, 0x8C ; 140 + 63e: d0 40 sbci r29, 0x00 ; 0 return (m * (float)v) + (-m * v1) + c1; - 4ea: b5 01 movw r22, r10 - 4ec: 80 e0 ldi r24, 0x00 ; 0 - 4ee: 90 e0 ldi r25, 0x00 ; 0 - 4f0: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 4f4: 9b 01 movw r18, r22 - 4f6: ac 01 movw r20, r24 - 4f8: 6d 2d mov r22, r13 - 4fa: 7c 2d mov r23, r12 - 4fc: 8e 2d mov r24, r14 - 4fe: 9f 2d mov r25, r15 - 500: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> - 504: 6b 01 movw r12, r22 - 506: 7c 01 movw r14, r24 - 508: a3 01 movw r20, r6 - 50a: 92 01 movw r18, r4 - 50c: 50 58 subi r21, 0x80 ; 128 - 50e: 62 2d mov r22, r2 - 510: 73 2d mov r23, r3 - 512: 80 2f mov r24, r16 - 514: 91 2f mov r25, r17 - 516: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> - 51a: 9b 01 movw r18, r22 - 51c: ac 01 movw r20, r24 - 51e: c7 01 movw r24, r14 - 520: b6 01 movw r22, r12 - 522: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> - 526: 9b 01 movw r18, r22 - 528: ac 01 movw r20, r24 - 52a: ba a1 ldd r27, Y+34 ; 0x22 - 52c: ab a1 ldd r26, Y+35 ; 0x23 - 52e: fc a1 ldd r31, Y+36 ; 0x24 - 530: ed a1 ldd r30, Y+37 ; 0x25 - 532: 6b 2f mov r22, r27 - 534: 7a 2f mov r23, r26 - 536: 8f 2f mov r24, r31 - 538: 9e 2f mov r25, r30 - 53a: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> - 53e: 6a a3 std Y+34, r22 ; 0x22 - 540: 7b a3 std Y+35, r23 ; 0x23 - 542: 8c a3 std Y+36, r24 ; 0x24 - 544: 9d a3 std Y+37, r25 ; 0x25 + 640: b7 01 movw r22, r14 + 642: 80 e0 ldi r24, 0x00 ; 0 + 644: 90 e0 ldi r25, 0x00 ; 0 + 646: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 64a: 9b 01 movw r18, r22 + 64c: ac 01 movw r20, r24 + 64e: 65 2d mov r22, r5 + 650: 74 2d mov r23, r4 + 652: 86 2d mov r24, r6 + 654: 97 2d mov r25, r7 + 656: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3> + 65a: 2b 01 movw r4, r22 + 65c: 3c 01 movw r6, r24 + 65e: c4 57 subi r28, 0x74 ; 116 + 660: df 4f sbci r29, 0xFF ; 255 + 662: 28 81 ld r18, Y + 664: 39 81 ldd r19, Y+1 ; 0x01 + 666: 4a 81 ldd r20, Y+2 ; 0x02 + 668: 5b 81 ldd r21, Y+3 ; 0x03 + 66a: cc 58 subi r28, 0x8C ; 140 + 66c: d0 40 sbci r29, 0x00 ; 0 + 66e: 50 58 subi r21, 0x80 ; 128 + 670: 60 2f mov r22, r16 + 672: 71 2f mov r23, r17 + 674: 89 2d mov r24, r9 + 676: 98 2d mov r25, r8 + 678: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3> + 67c: 9b 01 movw r18, r22 + 67e: ac 01 movw r20, r24 + 680: c3 01 movw r24, r6 + 682: b2 01 movw r22, r4 + 684: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3> + 688: 9b 01 movw r18, r22 + 68a: ac 01 movw r20, r24 + 68c: c6 57 subi r28, 0x76 ; 118 + 68e: df 4f sbci r29, 0xFF ; 255 + 690: f8 81 ld r31, Y + 692: ca 58 subi r28, 0x8A ; 138 + 694: d0 40 sbci r29, 0x00 ; 0 + 696: c5 57 subi r28, 0x75 ; 117 + 698: df 4f sbci r29, 0xFF ; 255 + 69a: e8 81 ld r30, Y + 69c: cb 58 subi r28, 0x8B ; 139 + 69e: d0 40 sbci r29, 0x00 ; 0 + 6a0: 63 2d mov r22, r3 + 6a2: 72 2d mov r23, r2 + 6a4: 8f 2f mov r24, r31 + 6a6: 9e 2f mov r25, r30 + 6a8: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3> + 6ac: c4 57 subi r28, 0x74 ; 116 + 6ae: df 4f sbci r29, 0xFF ; 255 + 6b0: 68 83 st Y, r22 + 6b2: cc 58 subi r28, 0x8C ; 140 + 6b4: d0 40 sbci r29, 0x00 ; 0 + 6b6: c8 56 subi r28, 0x68 ; 104 + 6b8: df 4f sbci r29, 0xFF ; 255 + 6ba: 78 83 st Y, r23 + 6bc: c8 59 subi r28, 0x98 ; 152 + 6be: d0 40 sbci r29, 0x00 ; 0 + 6c0: c7 56 subi r28, 0x67 ; 103 + 6c2: df 4f sbci r29, 0xFF ; 255 + 6c4: 88 83 st Y, r24 + 6c6: c9 59 subi r28, 0x99 ; 153 + 6c8: d0 40 sbci r29, 0x00 ; 0 + 6ca: c6 56 subi r28, 0x66 ; 102 + 6cc: df 4f sbci r29, 0xFF ; 255 + 6ce: 98 83 st Y, r25 + 6d0: ca 59 subi r28, 0x9A ; 154 + 6d2: d0 40 sbci r29, 0x00 ; 0 loop_until_bit_is_set(ADCSRA, ADIF); //ADCSRA |= (1<table[pin][0]; - 546: ef e9 ldi r30, 0x9F ; 159 - 548: f1 e0 ldi r31, 0x01 ; 1 - 54a: 60 81 ld r22, Z - 54c: 71 81 ldd r23, Z+1 ; 0x01 - 54e: 80 e0 ldi r24, 0x00 ; 0 - 550: 90 e0 ldi r25, 0x00 ; 0 - 552: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 556: 6e a3 std Y+38, r22 ; 0x26 - 558: 7f a3 std Y+39, r23 ; 0x27 - 55a: 8a a7 std Y+42, r24 ; 0x2a - 55c: 9b a7 std Y+43, r25 ; 0x2b + 6d4: 60 91 ab 01 lds r22, 0x01AB + 6d8: 70 91 ac 01 lds r23, 0x01AC + 6dc: 80 e0 ldi r24, 0x00 ; 0 + 6de: 90 e0 ldi r25, 0x00 ; 0 + 6e0: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 6e4: 36 2e mov r3, r22 + 6e6: 27 2e mov r2, r23 + 6e8: c6 57 subi r28, 0x76 ; 118 + 6ea: df 4f sbci r29, 0xFF ; 255 + 6ec: 88 83 st Y, r24 + 6ee: ca 58 subi r28, 0x8A ; 138 + 6f0: d0 40 sbci r29, 0x00 ; 0 + 6f2: c5 57 subi r28, 0x75 ; 117 + 6f4: df 4f sbci r29, 0xFF ; 255 + 6f6: 98 83 st Y, r25 + 6f8: cb 58 subi r28, 0x8B ; 139 + 6fa: d0 40 sbci r29, 0x00 ; 0 float v1 = this->table[pin][1]; - 55e: e1 ea ldi r30, 0xA1 ; 161 - 560: f1 e0 ldi r31, 0x01 ; 1 - 562: 60 81 ld r22, Z - 564: 71 81 ldd r23, Z+1 ; 0x01 - 566: 80 e0 ldi r24, 0x00 ; 0 - 568: 90 e0 ldi r25, 0x00 ; 0 - 56a: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 56e: 26 2e mov r2, r22 - 570: 37 2e mov r3, r23 - 572: 08 2f mov r16, r24 - 574: 19 2f mov r17, r25 + 6fc: 60 91 ad 01 lds r22, 0x01AD + 700: 70 91 ae 01 lds r23, 0x01AE + 704: 80 e0 ldi r24, 0x00 ; 0 + 706: 90 e0 ldi r25, 0x00 ; 0 + 708: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 70c: 06 2f mov r16, r22 + 70e: 17 2f mov r17, r23 + 710: 98 2e mov r9, r24 + 712: 89 2e mov r8, r25 float c2 = this->table[pin][2]; - 576: e3 ea ldi r30, 0xA3 ; 163 - 578: f1 e0 ldi r31, 0x01 ; 1 - 57a: 60 81 ld r22, Z - 57c: 71 81 ldd r23, Z+1 ; 0x01 - 57e: 80 e0 ldi r24, 0x00 ; 0 - 580: 90 e0 ldi r25, 0x00 ; 0 - 582: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 586: 9b 01 movw r18, r22 - 588: ac 01 movw r20, r24 + 714: 60 91 af 01 lds r22, 0x01AF + 718: 70 91 b0 01 lds r23, 0x01B0 + 71c: 80 e0 ldi r24, 0x00 ; 0 + 71e: 90 e0 ldi r25, 0x00 ; 0 + 720: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 724: 9b 01 movw r18, r22 + 726: ac 01 movw r20, r24 float v2 = this->table[pin][3]; float m = ((c1 - c2) / (v1 - v2)); - 58a: be a1 ldd r27, Y+38 ; 0x26 - 58c: af a1 ldd r26, Y+39 ; 0x27 - 58e: fa a5 ldd r31, Y+42 ; 0x2a - 590: eb a5 ldd r30, Y+43 ; 0x2b - 592: 6b 2f mov r22, r27 - 594: 7a 2f mov r23, r26 - 596: 8f 2f mov r24, r31 - 598: 9e 2f mov r25, r30 - 59a: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> - 59e: 6b 01 movw r12, r22 - 5a0: 7c 01 movw r14, r24 + 728: c6 57 subi r28, 0x76 ; 118 + 72a: df 4f sbci r29, 0xFF ; 255 + 72c: f8 81 ld r31, Y + 72e: ca 58 subi r28, 0x8A ; 138 + 730: d0 40 sbci r29, 0x00 ; 0 + 732: c5 57 subi r28, 0x75 ; 117 + 734: df 4f sbci r29, 0xFF ; 255 + 736: e8 81 ld r30, Y + 738: cb 58 subi r28, 0x8B ; 139 + 73a: d0 40 sbci r29, 0x00 ; 0 + 73c: 63 2d mov r22, r3 + 73e: 72 2d mov r23, r2 + 740: 8f 2f mov r24, r31 + 742: 9e 2f mov r25, r30 + 744: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3> + 748: 2b 01 movw r4, r22 + 74a: 3c 01 movw r6, r24 float convert(uint16_t v, uint8_t pin) { float c1 = this->table[pin][0]; float v1 = this->table[pin][1]; float c2 = this->table[pin][2]; float v2 = this->table[pin][3]; - 5a2: e5 ea ldi r30, 0xA5 ; 165 - 5a4: f1 e0 ldi r31, 0x01 ; 1 - 5a6: 60 81 ld r22, Z - 5a8: 71 81 ldd r23, Z+1 ; 0x01 - 5aa: 80 e0 ldi r24, 0x00 ; 0 - 5ac: 90 e0 ldi r25, 0x00 ; 0 - 5ae: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 5b2: 9b 01 movw r18, r22 - 5b4: ac 01 movw r20, r24 + 74c: 60 91 b1 01 lds r22, 0x01B1 + 750: 70 91 b2 01 lds r23, 0x01B2 + 754: 80 e0 ldi r24, 0x00 ; 0 + 756: 90 e0 ldi r25, 0x00 ; 0 + 758: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 75c: 9b 01 movw r18, r22 + 75e: ac 01 movw r20, r24 float m = ((c1 - c2) / (v1 - v2)); - 5b6: 62 2d mov r22, r2 - 5b8: 73 2d mov r23, r3 - 5ba: 80 2f mov r24, r16 - 5bc: 91 2f mov r25, r17 - 5be: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> - 5c2: 9b 01 movw r18, r22 - 5c4: ac 01 movw r20, r24 - 5c6: c7 01 movw r24, r14 - 5c8: b6 01 movw r22, r12 - 5ca: 0e 94 91 06 call 0xd22 ; 0xd22 <__divsf3> - 5ce: d6 2e mov r13, r22 - 5d0: c7 2e mov r12, r23 - 5d2: e8 2e mov r14, r24 - 5d4: f9 2e mov r15, r25 - 5d6: 46 2e mov r4, r22 - 5d8: 57 2e mov r5, r23 - 5da: 68 2e mov r6, r24 - 5dc: 79 2e mov r7, r25 + 760: 60 2f mov r22, r16 + 762: 71 2f mov r23, r17 + 764: 89 2d mov r24, r9 + 766: 98 2d mov r25, r8 + 768: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3> + 76c: 9b 01 movw r18, r22 + 76e: ac 01 movw r20, r24 + 770: c3 01 movw r24, r6 + 772: b2 01 movw r22, r4 + 774: 0e 94 3f 09 call 0x127e ; 0x127e <__divsf3> + 778: 56 2e mov r5, r22 + 77a: 47 2e mov r4, r23 + 77c: 68 2e mov r6, r24 + 77e: 79 2e mov r7, r25 + 780: 86 2f mov r24, r22 + 782: 94 2d mov r25, r4 + 784: a6 2d mov r26, r6 + 786: b7 2d mov r27, r7 + 788: c0 57 subi r28, 0x70 ; 112 + 78a: df 4f sbci r29, 0xFF ; 255 + 78c: 88 83 st Y, r24 + 78e: 99 83 std Y+1, r25 ; 0x01 + 790: aa 83 std Y+2, r26 ; 0x02 + 792: bb 83 std Y+3, r27 ; 0x03 + 794: c0 59 subi r28, 0x90 ; 144 + 796: d0 40 sbci r29, 0x00 ; 0 return (m * (float)v) + (-m * v1) + c1; - 5de: b4 01 movw r22, r8 - 5e0: 80 e0 ldi r24, 0x00 ; 0 - 5e2: 90 e0 ldi r25, 0x00 ; 0 - 5e4: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 5e8: 9b 01 movw r18, r22 - 5ea: ac 01 movw r20, r24 - 5ec: 6d 2d mov r22, r13 - 5ee: 7c 2d mov r23, r12 - 5f0: 8e 2d mov r24, r14 - 5f2: 9f 2d mov r25, r15 - 5f4: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> - 5f8: 6b 01 movw r12, r22 - 5fa: 7c 01 movw r14, r24 - 5fc: a3 01 movw r20, r6 - 5fe: 92 01 movw r18, r4 - 600: 50 58 subi r21, 0x80 ; 128 - 602: 62 2d mov r22, r2 - 604: 73 2d mov r23, r3 - 606: 80 2f mov r24, r16 - 608: 91 2f mov r25, r17 - 60a: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> - 60e: 9b 01 movw r18, r22 - 610: ac 01 movw r20, r24 - 612: c7 01 movw r24, r14 - 614: b6 01 movw r22, r12 - 616: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> - 61a: 9b 01 movw r18, r22 - 61c: ac 01 movw r20, r24 - 61e: be a1 ldd r27, Y+38 ; 0x26 - 620: af a1 ldd r26, Y+39 ; 0x27 - 622: fa a5 ldd r31, Y+42 ; 0x2a - 624: eb a5 ldd r30, Y+43 ; 0x2b - 626: 6b 2f mov r22, r27 - 628: 7a 2f mov r23, r26 - 62a: 8f 2f mov r24, r31 - 62c: 9e 2f mov r25, r30 - 62e: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> - 632: 6e a3 std Y+38, r22 ; 0x26 - 634: 7f a3 std Y+39, r23 ; 0x27 - 636: d8 2e mov r13, r24 - 638: c9 2e mov r12, r25 + 798: b6 01 movw r22, r12 + 79a: 80 e0 ldi r24, 0x00 ; 0 + 79c: 90 e0 ldi r25, 0x00 ; 0 + 79e: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + 7a2: 9b 01 movw r18, r22 + 7a4: ac 01 movw r20, r24 + 7a6: 65 2d mov r22, r5 + 7a8: 74 2d mov r23, r4 + 7aa: 86 2d mov r24, r6 + 7ac: 97 2d mov r25, r7 + 7ae: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3> + 7b2: 2b 01 movw r4, r22 + 7b4: 3c 01 movw r6, r24 + 7b6: c0 57 subi r28, 0x70 ; 112 + 7b8: df 4f sbci r29, 0xFF ; 255 + 7ba: 28 81 ld r18, Y + 7bc: 39 81 ldd r19, Y+1 ; 0x01 + 7be: 4a 81 ldd r20, Y+2 ; 0x02 + 7c0: 5b 81 ldd r21, Y+3 ; 0x03 + 7c2: c0 59 subi r28, 0x90 ; 144 + 7c4: d0 40 sbci r29, 0x00 ; 0 + 7c6: 50 58 subi r21, 0x80 ; 128 + 7c8: 60 2f mov r22, r16 + 7ca: 71 2f mov r23, r17 + 7cc: 89 2d mov r24, r9 + 7ce: 98 2d mov r25, r8 + 7d0: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3> + 7d4: 9b 01 movw r18, r22 + 7d6: ac 01 movw r20, r24 + 7d8: c3 01 movw r24, r6 + 7da: b2 01 movw r22, r4 + 7dc: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3> + 7e0: 9b 01 movw r18, r22 + 7e2: ac 01 movw r20, r24 + 7e4: c6 57 subi r28, 0x76 ; 118 + 7e6: df 4f sbci r29, 0xFF ; 255 + 7e8: f8 81 ld r31, Y + 7ea: ca 58 subi r28, 0x8A ; 138 + 7ec: d0 40 sbci r29, 0x00 ; 0 + 7ee: c5 57 subi r28, 0x75 ; 117 + 7f0: df 4f sbci r29, 0xFF ; 255 + 7f2: e8 81 ld r30, Y + 7f4: cb 58 subi r28, 0x8B ; 139 + 7f6: d0 40 sbci r29, 0x00 ; 0 + 7f8: 63 2d mov r22, r3 + 7fa: 72 2d mov r23, r2 + 7fc: 8f 2f mov r24, r31 + 7fe: 9e 2f mov r25, r30 + 800: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3> + 804: c0 57 subi r28, 0x70 ; 112 + 806: df 4f sbci r29, 0xFF ; 255 + 808: 68 83 st Y, r22 + 80a: c0 59 subi r28, 0x90 ; 144 + 80c: d0 40 sbci r29, 0x00 ; 0 + 80e: c5 56 subi r28, 0x65 ; 101 + 810: df 4f sbci r29, 0xFF ; 255 + 812: 78 83 st Y, r23 + 814: cb 59 subi r28, 0x9B ; 155 + 816: d0 40 sbci r29, 0x00 ; 0 + 818: c4 56 subi r28, 0x64 ; 100 + 81a: df 4f sbci r29, 0xFF ; 255 + 81c: 88 83 st Y, r24 + 81e: cc 59 subi r28, 0x9C ; 156 + 820: d0 40 sbci r29, 0x00 ; 0 + 822: c3 56 subi r28, 0x63 ; 99 + 824: df 4f sbci r29, 0xFF ; 255 + 826: 98 83 st Y, r25 + 828: cd 59 subi r28, 0x9D ; 157 + 82a: d0 40 sbci r29, 0x00 ; 0 o.stop(); while(true) {}; } float t0 = a.convert(v0, 0); float t1 = a.convert(v1, 1); float tm = (t0+t1)/2; - 63a: 76 2f mov r23, r22 - 63c: 6f a1 ldd r22, Y+39 ; 0x27 - 63e: 27 2f mov r18, r23 - 640: 36 2f mov r19, r22 - 642: 4d 2d mov r20, r13 - 644: 5c 2d mov r21, r12 - 646: ba a1 ldd r27, Y+34 ; 0x22 - 648: ab a1 ldd r26, Y+35 ; 0x23 - 64a: fc a1 ldd r31, Y+36 ; 0x24 - 64c: ed a1 ldd r30, Y+37 ; 0x25 - 64e: 6b 2f mov r22, r27 - 650: 7a 2f mov r23, r26 - 652: 8f 2f mov r24, r31 - 654: 9e 2f mov r25, r30 - 656: 0e 94 29 06 call 0xc52 ; 0xc52 <__addsf3> - 65a: 20 e0 ldi r18, 0x00 ; 0 - 65c: 30 e0 ldi r19, 0x00 ; 0 - 65e: 40 e0 ldi r20, 0x00 ; 0 - 660: 5f e3 ldi r21, 0x3F ; 63 - 662: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> - 666: 76 2e mov r7, r22 - 668: 67 2e mov r6, r23 - 66a: 58 2e mov r5, r24 - 66c: 49 2e mov r4, r25 + 82c: 76 2f mov r23, r22 + 82e: c5 56 subi r28, 0x65 ; 101 + 830: df 4f sbci r29, 0xFF ; 255 + 832: 68 81 ld r22, Y + 834: cb 59 subi r28, 0x9B ; 155 + 836: d0 40 sbci r29, 0x00 ; 0 + 838: 98 2f mov r25, r24 + 83a: c3 56 subi r28, 0x63 ; 99 + 83c: df 4f sbci r29, 0xFF ; 255 + 83e: 88 81 ld r24, Y + 840: cd 59 subi r28, 0x9D ; 157 + 842: d0 40 sbci r29, 0x00 ; 0 + 844: 27 2f mov r18, r23 + 846: 36 2f mov r19, r22 + 848: 49 2f mov r20, r25 + 84a: 58 2f mov r21, r24 + 84c: c4 57 subi r28, 0x74 ; 116 + 84e: df 4f sbci r29, 0xFF ; 255 + 850: b8 81 ld r27, Y + 852: cc 58 subi r28, 0x8C ; 140 + 854: d0 40 sbci r29, 0x00 ; 0 + 856: c8 56 subi r28, 0x68 ; 104 + 858: df 4f sbci r29, 0xFF ; 255 + 85a: a8 81 ld r26, Y + 85c: c8 59 subi r28, 0x98 ; 152 + 85e: d0 40 sbci r29, 0x00 ; 0 + 860: c7 56 subi r28, 0x67 ; 103 + 862: df 4f sbci r29, 0xFF ; 255 + 864: f8 81 ld r31, Y + 866: c9 59 subi r28, 0x99 ; 153 + 868: d0 40 sbci r29, 0x00 ; 0 + 86a: c6 56 subi r28, 0x66 ; 102 + 86c: df 4f sbci r29, 0xFF ; 255 + 86e: e8 81 ld r30, Y + 870: ca 59 subi r28, 0x9A ; 154 + 872: d0 40 sbci r29, 0x00 ; 0 + 874: 6b 2f mov r22, r27 + 876: 7a 2f mov r23, r26 + 878: 8f 2f mov r24, r31 + 87a: 9e 2f mov r25, r30 + 87c: 0e 94 d7 08 call 0x11ae ; 0x11ae <__addsf3> + 880: 20 e0 ldi r18, 0x00 ; 0 + 882: 30 e0 ldi r19, 0x00 ; 0 + 884: 40 e0 ldi r20, 0x00 ; 0 + 886: 5f e3 ldi r21, 0x3F ; 63 + 888: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3> + 88c: c2 56 subi r28, 0x62 ; 98 + 88e: df 4f sbci r29, 0xFF ; 255 + 890: 68 83 st Y, r22 + 892: ce 59 subi r28, 0x9E ; 158 + 894: d0 40 sbci r29, 0x00 ; 0 + 896: c1 56 subi r28, 0x61 ; 97 + 898: df 4f sbci r29, 0xFF ; 255 + 89a: 78 83 st Y, r23 + 89c: cf 59 subi r28, 0x9F ; 159 + 89e: d0 40 sbci r29, 0x00 ; 0 + 8a0: c0 56 subi r28, 0x60 ; 96 + 8a2: df 4f sbci r29, 0xFF ; 255 + 8a4: 88 83 st Y, r24 + 8a6: c0 5a subi r28, 0xA0 ; 160 + 8a8: d0 40 sbci r29, 0x00 ; 0 + 8aa: cf 55 subi r28, 0x5F ; 95 + 8ac: df 4f sbci r29, 0xFF ; 255 + 8ae: 98 83 st Y, r25 + 8b0: c1 5a subi r28, 0xA1 ; 161 + 8b2: d0 40 sbci r29, 0x00 ; 0 } void send(uint8_t wert) { uart_putchar(wert); } int16_t readTemp() { int16_t t = this->temp; - 66e: e8 ec ldi r30, 0xC8 ; 200 - 670: f1 e0 ldi r31, 0x01 ; 1 - 672: 80 81 ld r24, Z - 674: 91 81 ldd r25, Z+1 ; 0x01 + 8b4: e4 ed ldi r30, 0xD4 ; 212 + 8b6: f1 e0 ldi r31, 0x01 ; 1 + 8b8: 80 81 ld r24, Z + 8ba: 91 81 ldd r25, Z+1 ; 0x01 this->temp = -1; - 676: 2f ef ldi r18, 0xFF ; 255 - 678: 3f ef ldi r19, 0xFF ; 255 - 67a: 31 83 std Z+1, r19 ; 0x01 - 67c: 20 83 st Z, r18 + 8bc: 2f ef ldi r18, 0xFF ; 255 + 8be: 3f ef ldi r19, 0xFF ; 255 + 8c0: 31 83 std Z+1, r19 ; 0x01 + 8c2: 20 83 st Z, r18 int16_t temp = r.readTemp(); if(temp != -1) { - 67e: 8f 3f cpi r24, 0xFF ; 255 - 680: 3f ef ldi r19, 0xFF ; 255 - 682: 93 07 cpc r25, r19 - 684: 11 f0 breq .+4 ; 0x68a <__stack+0x22b> + 8c4: 8f 3f cpi r24, 0xFF ; 255 + 8c6: ff ef ldi r31, 0xFF ; 255 + 8c8: 9f 07 cpc r25, r31 + 8ca: 31 f0 breq .+12 ; 0x8d8 <__stack+0x479> target_temp = temp; - 686: 99 a7 std Y+41, r25 ; 0x29 - 688: 88 a7 std Y+40, r24 ; 0x28 + 8cc: cc 56 subi r28, 0x6C ; 108 + 8ce: df 4f sbci r29, 0xFF ; 255 + 8d0: 99 83 std Y+1, r25 ; 0x01 + 8d2: 88 83 st Y, r24 + 8d4: c4 59 subi r28, 0x94 ; 148 + 8d6: d0 40 sbci r29, 0x00 ; 0 + return t; + } + int8_t readMotor() { + int8_t m = this->motor; + 8d8: e6 ed ldi r30, 0xD6 ; 214 + 8da: f1 e0 ldi r31, 0x01 ; 1 + 8dc: 80 81 ld r24, Z + this->motor = -1; + 8de: 9f ef ldi r25, 0xFF ; 255 + 8e0: 90 83 st Z, r25 + } + int8_t motor = r.readMotor(); + if(motor != -1) { + 8e2: 8f 3f cpi r24, 0xFF ; 255 + 8e4: 29 f0 breq .+10 ; 0x8f0 <__stack+0x491> + target_motor = motor; + 8e6: ca 56 subi r28, 0x6A ; 106 + 8e8: df 4f sbci r29, 0xFF ; 255 + 8ea: 88 83 st Y, r24 + 8ec: c6 59 subi r28, 0x96 ; 150 + 8ee: d0 40 sbci r29, 0x00 ; 0 } pwm_value = (target_temp+5) - tm; - 68a: 68 a5 ldd r22, Y+40 ; 0x28 - 68c: 79 a5 ldd r23, Y+41 ; 0x29 - 68e: 6b 5f subi r22, 0xFB ; 251 - 690: 7f 4f sbci r23, 0xFF ; 255 - 692: 88 27 eor r24, r24 - 694: 77 fd sbrc r23, 7 - 696: 80 95 com r24 - 698: 98 2f mov r25, r24 - 69a: 0e 94 27 07 call 0xe4e ; 0xe4e <__floatsisf> - 69e: 27 2d mov r18, r7 - 6a0: 36 2d mov r19, r6 - 6a2: 45 2d mov r20, r5 - 6a4: 54 2d mov r21, r4 - 6a6: 0e 94 28 06 call 0xc50 ; 0xc50 <__subsf3> - 6aa: f6 2e mov r15, r22 - 6ac: e7 2e mov r14, r23 - 6ae: 38 2e mov r3, r24 - 6b0: 29 2e mov r2, r25 + 8f0: cc 56 subi r28, 0x6C ; 108 + 8f2: df 4f sbci r29, 0xFF ; 255 + 8f4: 68 81 ld r22, Y + 8f6: 79 81 ldd r23, Y+1 ; 0x01 + 8f8: c4 59 subi r28, 0x94 ; 148 + 8fa: d0 40 sbci r29, 0x00 ; 0 + 8fc: 6b 5f subi r22, 0xFB ; 251 + 8fe: 7f 4f sbci r23, 0xFF ; 255 + 900: 88 27 eor r24, r24 + 902: 77 fd sbrc r23, 7 + 904: 80 95 com r24 + 906: 98 2f mov r25, r24 + 908: 0e 94 d5 09 call 0x13aa ; 0x13aa <__floatsisf> + 90c: c2 56 subi r28, 0x62 ; 98 + 90e: df 4f sbci r29, 0xFF ; 255 + 910: b8 81 ld r27, Y + 912: ce 59 subi r28, 0x9E ; 158 + 914: d0 40 sbci r29, 0x00 ; 0 + 916: c1 56 subi r28, 0x61 ; 97 + 918: df 4f sbci r29, 0xFF ; 255 + 91a: a8 81 ld r26, Y + 91c: cf 59 subi r28, 0x9F ; 159 + 91e: d0 40 sbci r29, 0x00 ; 0 + 920: c0 56 subi r28, 0x60 ; 96 + 922: df 4f sbci r29, 0xFF ; 255 + 924: f8 81 ld r31, Y + 926: c0 5a subi r28, 0xA0 ; 160 + 928: d0 40 sbci r29, 0x00 ; 0 + 92a: cf 55 subi r28, 0x5F ; 95 + 92c: df 4f sbci r29, 0xFF ; 255 + 92e: e8 81 ld r30, Y + 930: c1 5a subi r28, 0xA1 ; 161 + 932: d0 40 sbci r29, 0x00 ; 0 + 934: 2b 2f mov r18, r27 + 936: 3a 2f mov r19, r26 + 938: 4f 2f mov r20, r31 + 93a: 5e 2f mov r21, r30 + 93c: 0e 94 d6 08 call 0x11ac ; 0x11ac <__subsf3> + 940: 96 2e mov r9, r22 + 942: 87 2e mov r8, r23 + 944: 78 2e mov r7, r24 + 946: 69 2e mov r6, r25 void setPwm(uint8_t ausg, float val) { if(ausg < 0) ausg = 0; if(ausg > 5) ausg = 5; if(val < 0) - 6b2: 20 e0 ldi r18, 0x00 ; 0 - 6b4: 30 e0 ldi r19, 0x00 ; 0 - 6b6: a9 01 movw r20, r18 - 6b8: 0e 94 8d 06 call 0xd1a ; 0xd1a <__cmpsf2> - 6bc: 88 23 and r24, r24 - 6be: 0c f4 brge .+2 ; 0x6c2 <__stack+0x263> - 6c0: 99 c1 rjmp .+818 ; 0x9f4 <__stack+0x595> + 948: 20 e0 ldi r18, 0x00 ; 0 + 94a: 30 e0 ldi r19, 0x00 ; 0 + 94c: a9 01 movw r20, r18 + 94e: 0e 94 3b 09 call 0x1276 ; 0x1276 <__cmpsf2> + 952: 88 23 and r24, r24 + 954: 8c f0 brlt .+34 ; 0x978 <__stack+0x519> val = 0; if(val > 20) - 6c2: 20 e0 ldi r18, 0x00 ; 0 - 6c4: 30 e0 ldi r19, 0x00 ; 0 - 6c6: 40 ea ldi r20, 0xA0 ; 160 - 6c8: 51 e4 ldi r21, 0x41 ; 65 - 6ca: 6f 2d mov r22, r15 - 6cc: 7e 2d mov r23, r14 - 6ce: 83 2d mov r24, r3 - 6d0: 92 2d mov r25, r2 - 6d2: 0e 94 d7 07 call 0xfae ; 0xfae <__gesf2> - 6d6: 18 16 cp r1, r24 - 6d8: 0c f4 brge .+2 ; 0x6dc <__stack+0x27d> - 6da: 91 c1 rjmp .+802 ; 0x9fe <__stack+0x59f> - 6dc: 3f 2d mov r19, r15 - 6de: 2e 2d mov r18, r14 - 6e0: 93 2d mov r25, r3 - 6e2: 82 2d mov r24, r2 - 6e4: 90 c1 rjmp .+800 ; 0xa06 <__stack+0x5a7> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 6e6: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 6e8: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 6ea: 5d 9b sbis 0x0b, 5 ; 11 - 6ec: fe cf rjmp .-4 ; 0x6ea <__stack+0x28b> - UDR = c; - 6ee: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 6f0: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 6f2: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 6f4: 81 91 ld r24, Z+ - 6f6: 81 11 cpse r24, r1 - 6f8: f6 cf rjmp .-20 ; 0x6e6 <__stack+0x287> - o.setPwm(0, pwm_value); - char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - 6fa: 8e 01 movw r16, r28 - 6fc: 09 5e subi r16, 0xE9 ; 233 - 6fe: 1f 4f sbci r17, 0xFF ; 255 - 700: 22 e0 ldi r18, 0x02 ; 2 - 702: 4a e0 ldi r20, 0x0A ; 10 - 704: 6f 2d mov r22, r15 - 706: 7e 2d mov r23, r14 - 708: 83 2d mov r24, r3 - 70a: 92 2d mov r25, r2 - 70c: 0e 94 44 08 call 0x1088 ; 0x1088 - 710: fc 01 movw r30, r24 - 712: 20 81 ld r18, Z - 714: 22 23 and r18, r18 - 716: 59 f0 breq .+22 ; 0x72e <__stack+0x2cf> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 718: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 71a: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 71c: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 71e: 5d 9b sbis 0x0b, 5 ; 11 - 720: fe cf rjmp .-4 ; 0x71e <__stack+0x2bf> - UDR = c; - 722: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 724: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 726: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 728: 21 91 ld r18, Z+ - 72a: 21 11 cpse r18, r1 - 72c: f6 cf rjmp .-20 ; 0x71a <__stack+0x2bb> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 72e: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 730: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 732: 5d 9b sbis 0x0b, 5 ; 11 - 734: fe cf rjmp .-4 ; 0x732 <__stack+0x2d3> - UDR = c; - 736: 8b e3 ldi r24, 0x3B ; 59 - 738: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 73a: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 73c: bb 9a sbi 0x17, 3 ; 23 - 73e: 0f 2e mov r0, r31 - 740: fa e6 ldi r31, 0x6A ; 106 - 742: ef 2e mov r14, r31 - 744: f1 e0 ldi r31, 0x01 ; 1 - 746: ff 2e mov r15, r31 - 748: f0 2d mov r31, r0 - 74a: f7 01 movw r30, r14 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 74c: 83 e6 ldi r24, 0x63 ; 99 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 74e: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 750: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 752: 5d 9b sbis 0x0b, 5 ; 11 - 754: fe cf rjmp .-4 ; 0x752 <__stack+0x2f3> - UDR = c; - 756: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 758: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 75a: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 75c: 81 91 ld r24, Z+ - 75e: 81 11 cpse r24, r1 - 760: f6 cf rjmp .-20 ; 0x74e <__stack+0x2ef> - target_temp = temp; - } - pwm_value = (target_temp+5) - tm; - o.setPwm(0, pwm_value); - char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); - 762: b4 01 movw r22, r8 - 764: 6a 0d add r22, r10 - 766: 7b 1d adc r23, r11 - 768: 80 e0 ldi r24, 0x00 ; 0 - 76a: 90 e0 ldi r25, 0x00 ; 0 - 76c: 0e 94 25 07 call 0xe4a ; 0xe4a <__floatunsisf> - 770: 20 e0 ldi r18, 0x00 ; 0 - 772: 30 e0 ldi r19, 0x00 ; 0 - 774: 40 e0 ldi r20, 0x00 ; 0 - 776: 5f e3 ldi r21, 0x3F ; 63 - 778: 0e 94 db 07 call 0xfb6 ; 0xfb6 <__mulsf3> - 77c: 8e 01 movw r16, r28 - 77e: 04 5f subi r16, 0xF4 ; 244 - 780: 1f 4f sbci r17, 0xFF ; 255 - 782: 22 e0 ldi r18, 0x02 ; 2 - 784: 4a e0 ldi r20, 0x0A ; 10 - 786: 0e 94 44 08 call 0x1088 ; 0x1088 - 78a: fc 01 movw r30, r24 - 78c: 20 81 ld r18, Z - 78e: 22 23 and r18, r18 - 790: 59 f0 breq .+22 ; 0x7a8 <__stack+0x349> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 792: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 794: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 796: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 798: 5d 9b sbis 0x0b, 5 ; 11 - 79a: fe cf rjmp .-4 ; 0x798 <__stack+0x339> - UDR = c; - 79c: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 79e: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7a0: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 7a2: 21 91 ld r18, Z+ - 7a4: 21 11 cpse r18, r1 - 7a6: f6 cf rjmp .-20 ; 0x794 <__stack+0x335> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7a8: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7aa: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 7ac: 5d 9b sbis 0x0b, 5 ; 11 - 7ae: fe cf rjmp .-4 ; 0x7ac <__stack+0x34d> - UDR = c; - 7b0: 8b e3 ldi r24, 0x3B ; 59 - 7b2: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7b4: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7b6: bb 9a sbi 0x17, 3 ; 23 - 7b8: ee e6 ldi r30, 0x6E ; 110 - 7ba: f1 e0 ldi r31, 0x01 ; 1 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 7bc: 86 e7 ldi r24, 0x76 ; 118 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7be: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7c0: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 7c2: 5d 9b sbis 0x0b, 5 ; 11 - 7c4: fe cf rjmp .-4 ; 0x7c2 <__stack+0x363> - UDR = c; - 7c6: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7c8: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7ca: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 7cc: 81 91 ld r24, Z+ - 7ce: 81 11 cpse r24, r1 - 7d0: f6 cf rjmp .-20 ; 0x7be <__stack+0x35f> - } - pwm_value = (target_temp+5) - tm; - o.setPwm(0, pwm_value); - char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); - r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); - 7d2: 4a e0 ldi r20, 0x0A ; 10 - 7d4: 50 e0 ldi r21, 0x00 ; 0 - 7d6: be 01 movw r22, r28 - 7d8: 64 5f subi r22, 0xF4 ; 244 - 7da: 7f 4f sbci r23, 0xFF ; 255 - 7dc: c5 01 movw r24, r10 - 7de: 0e 94 65 08 call 0x10ca ; 0x10ca - 7e2: fc 01 movw r30, r24 - 7e4: 20 81 ld r18, Z - 7e6: 22 23 and r18, r18 - 7e8: 59 f0 breq .+22 ; 0x800 <__stack+0x3a1> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 7ea: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7ec: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7ee: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 7f0: 5d 9b sbis 0x0b, 5 ; 11 - 7f2: fe cf rjmp .-4 ; 0x7f0 <__stack+0x391> - UDR = c; - 7f4: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 7f6: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 7f8: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 7fa: 21 91 ld r18, Z+ - 7fc: 21 11 cpse r18, r1 - 7fe: f6 cf rjmp .-20 ; 0x7ec <__stack+0x38d> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 800: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 802: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 804: 5d 9b sbis 0x0b, 5 ; 11 - 806: fe cf rjmp .-4 ; 0x804 <__stack+0x3a5> - UDR = c; - 808: 8b e3 ldi r24, 0x3B ; 59 - 80a: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 80c: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 80e: bb 9a sbi 0x17, 3 ; 23 - 810: e2 e7 ldi r30, 0x72 ; 114 - 812: f1 e0 ldi r31, 0x01 ; 1 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 814: 86 e7 ldi r24, 0x76 ; 118 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 816: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 818: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 81a: 5d 9b sbis 0x0b, 5 ; 11 - 81c: fe cf rjmp .-4 ; 0x81a <__stack+0x3bb> - UDR = c; - 81e: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 820: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 822: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 824: 81 91 ld r24, Z+ - 826: 81 11 cpse r24, r1 - 828: f6 cf rjmp .-20 ; 0x816 <__stack+0x3b7> - pwm_value = (target_temp+5) - tm; - o.setPwm(0, pwm_value); - char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); - r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); - r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); - 82a: 4a e0 ldi r20, 0x0A ; 10 - 82c: 50 e0 ldi r21, 0x00 ; 0 - 82e: be 01 movw r22, r28 - 830: 64 5f subi r22, 0xF4 ; 244 - 832: 7f 4f sbci r23, 0xFF ; 255 - 834: c4 01 movw r24, r8 - 836: 0e 94 65 08 call 0x10ca ; 0x10ca - 83a: fc 01 movw r30, r24 - 83c: 20 81 ld r18, Z - 83e: 22 23 and r18, r18 - 840: 59 f0 breq .+22 ; 0x858 <__stack+0x3f9> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 842: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 844: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 846: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 848: 5d 9b sbis 0x0b, 5 ; 11 - 84a: fe cf rjmp .-4 ; 0x848 <__stack+0x3e9> - UDR = c; - 84c: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 84e: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 850: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 852: 21 91 ld r18, Z+ - 854: 21 11 cpse r18, r1 - 856: f6 cf rjmp .-20 ; 0x844 <__stack+0x3e5> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 858: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 85a: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 85c: 5d 9b sbis 0x0b, 5 ; 11 - 85e: fe cf rjmp .-4 ; 0x85c <__stack+0x3fd> - UDR = c; - 860: 8b e3 ldi r24, 0x3B ; 59 - 862: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 864: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 866: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 868: 83 e6 ldi r24, 0x63 ; 99 - 86a: f7 01 movw r30, r14 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 86c: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 86e: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 870: 5d 9b sbis 0x0b, 5 ; 11 - 872: fe cf rjmp .-4 ; 0x870 <__stack+0x411> - UDR = c; - 874: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 876: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 878: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 87a: 81 91 ld r24, Z+ - 87c: 81 11 cpse r24, r1 - 87e: f6 cf rjmp .-20 ; 0x86c <__stack+0x40d> - o.setPwm(0, pwm_value); - char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); - r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); - r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); - char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); - 880: 8e 01 movw r16, r28 - 882: 0f 5f subi r16, 0xFF ; 255 - 884: 1f 4f sbci r17, 0xFF ; 255 - 886: 22 e0 ldi r18, 0x02 ; 2 - 888: 4a e0 ldi r20, 0x0A ; 10 - 88a: 67 2d mov r22, r7 - 88c: 76 2d mov r23, r6 - 88e: 85 2d mov r24, r5 - 890: 94 2d mov r25, r4 - 892: 0e 94 44 08 call 0x1088 ; 0x1088 - 896: fc 01 movw r30, r24 - 898: 20 81 ld r18, Z - 89a: 22 23 and r18, r18 - 89c: 59 f0 breq .+22 ; 0x8b4 <__stack+0x455> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 89e: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 8a0: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 8a2: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 8a4: 5d 9b sbis 0x0b, 5 ; 11 - 8a6: fe cf rjmp .-4 ; 0x8a4 <__stack+0x445> - UDR = c; - 8a8: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 8aa: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 8ac: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 8ae: 21 91 ld r18, Z+ - 8b0: 21 11 cpse r18, r1 - 8b2: f6 cf rjmp .-20 ; 0x8a0 <__stack+0x441> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 8b4: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 8b6: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 8b8: 5d 9b sbis 0x0b, 5 ; 11 - 8ba: fe cf rjmp .-4 ; 0x8b8 <__stack+0x459> - UDR = c; - 8bc: 8b e3 ldi r24, 0x3B ; 59 - 8be: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 8c0: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 8c2: bb 9a sbi 0x17, 3 ; 23 - 8c4: e6 e7 ldi r30, 0x76 ; 118 - 8c6: f1 e0 ldi r31, 0x01 ; 1 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 8c8: 83 e6 ldi r24, 0x63 ; 99 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 8ca: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 8cc: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 8ce: 5d 9b sbis 0x0b, 5 ; 11 - 8d0: fe cf rjmp .-4 ; 0x8ce <__stack+0x46f> - UDR = c; - 8d2: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 8d4: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 8d6: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 8d8: 81 91 ld r24, Z+ - 8da: 81 11 cpse r24, r1 - 8dc: f6 cf rjmp .-20 ; 0x8ca <__stack+0x46b> - char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); - r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); - r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); - char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); - r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); - 8de: 8e 01 movw r16, r28 - 8e0: 0f 5f subi r16, 0xFF ; 255 - 8e2: 1f 4f sbci r17, 0xFF ; 255 - 8e4: 22 e0 ldi r18, 0x02 ; 2 - 8e6: 4a e0 ldi r20, 0x0A ; 10 - 8e8: fa a1 ldd r31, Y+34 ; 0x22 - 8ea: eb a1 ldd r30, Y+35 ; 0x23 - 8ec: 5c a1 ldd r21, Y+36 ; 0x24 - 8ee: 3d a1 ldd r19, Y+37 ; 0x25 - 8f0: 6f 2f mov r22, r31 - 8f2: 7e 2f mov r23, r30 - 8f4: 85 2f mov r24, r21 - 8f6: 93 2f mov r25, r19 - 8f8: 0e 94 44 08 call 0x1088 ; 0x1088 - 8fc: fc 01 movw r30, r24 - 8fe: 20 81 ld r18, Z - 900: 22 23 and r18, r18 - 902: 59 f0 breq .+22 ; 0x91a <__stack+0x4bb> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 904: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 906: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 908: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 90a: 5d 9b sbis 0x0b, 5 ; 11 - 90c: fe cf rjmp .-4 ; 0x90a <__stack+0x4ab> - UDR = c; - 90e: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 910: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 912: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 914: 21 91 ld r18, Z+ - 916: 21 11 cpse r18, r1 - 918: f6 cf rjmp .-20 ; 0x906 <__stack+0x4a7> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 91a: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 91c: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 91e: 5d 9b sbis 0x0b, 5 ; 11 - 920: fe cf rjmp .-4 ; 0x91e <__stack+0x4bf> - UDR = c; - 922: 8b e3 ldi r24, 0x3B ; 59 - 924: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 926: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 928: bb 9a sbi 0x17, 3 ; 23 - 92a: ea e7 ldi r30, 0x7A ; 122 - 92c: f1 e0 ldi r31, 0x01 ; 1 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 92e: 83 e6 ldi r24, 0x63 ; 99 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 930: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 932: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 934: 5d 9b sbis 0x0b, 5 ; 11 - 936: fe cf rjmp .-4 ; 0x934 <__stack+0x4d5> - UDR = c; - 938: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 93a: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 93c: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 93e: 81 91 ld r24, Z+ - 940: 81 11 cpse r24, r1 - 942: f6 cf rjmp .-20 ; 0x930 <__stack+0x4d1> - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); - r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); - r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); - char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); - r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); - r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); - 944: 8e 01 movw r16, r28 - 946: 0f 5f subi r16, 0xFF ; 255 - 948: 1f 4f sbci r17, 0xFF ; 255 - 94a: 22 e0 ldi r18, 0x02 ; 2 - 94c: 4a e0 ldi r20, 0x0A ; 10 - 94e: fe a1 ldd r31, Y+38 ; 0x26 - 950: ef a1 ldd r30, Y+39 ; 0x27 - 952: 6f 2f mov r22, r31 - 954: 7e 2f mov r23, r30 - 956: 8d 2d mov r24, r13 - 958: 9c 2d mov r25, r12 - 95a: 0e 94 44 08 call 0x1088 ; 0x1088 - 95e: fc 01 movw r30, r24 - 960: 20 81 ld r18, Z - 962: 22 23 and r18, r18 - 964: 59 f0 breq .+22 ; 0x97c <__stack+0x51d> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 966: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 968: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 96a: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 96c: 5d 9b sbis 0x0b, 5 ; 11 - 96e: fe cf rjmp .-4 ; 0x96c <__stack+0x50d> - UDR = c; - 970: 2c b9 out 0x0c, r18 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 972: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 974: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 976: 21 91 ld r18, Z+ - 978: 21 11 cpse r18, r1 - 97a: f6 cf rjmp .-20 ; 0x968 <__stack+0x509> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 97c: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 97e: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 980: 5d 9b sbis 0x0b, 5 ; 11 - 982: fe cf rjmp .-4 ; 0x980 <__stack+0x521> - UDR = c; - 984: 8b e3 ldi r24, 0x3B ; 59 - 986: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 988: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 98a: bb 9a sbi 0x17, 3 ; 23 - 98c: ee e7 ldi r30, 0x7E ; 126 - 98e: f1 e0 ldi r31, 0x01 ; 1 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 990: 88 e6 ldi r24, 0x68 ; 104 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 992: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 994: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 996: 5d 9b sbis 0x0b, 5 ; 11 - 998: fe cf rjmp .-4 ; 0x996 <__stack+0x537> - UDR = c; - 99a: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 99c: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 99e: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 9a0: 81 91 ld r24, Z+ - 9a2: 81 11 cpse r24, r1 - 9a4: f6 cf rjmp .-20 ; 0x992 <__stack+0x533> - r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); - r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); - //temp_ziel_wert - //motor_ziel_wert - r.send((o.isOn(0)==1)?"hon=1;":"hon=0;"); - r.send((o.isOn(1)==1)?"mon=1;":"mon=0;"); - 9a6: 9a 9b sbis 0x13, 2 ; 19 - 9a8: 03 c0 rjmp .+6 ; 0x9b0 <__stack+0x551> - 9aa: e2 e6 ldi r30, 0x62 ; 98 - 9ac: f1 e0 ldi r31, 0x01 ; 1 - 9ae: 02 c0 rjmp .+4 ; 0x9b4 <__stack+0x555> - 9b0: eb e5 ldi r30, 0x5B ; 91 - 9b2: f1 e0 ldi r31, 0x01 ; 1 - 9b4: 80 81 ld r24, Z - 9b6: 88 23 and r24, r24 - 9b8: 59 f0 breq .+22 ; 0x9d0 <__stack+0x571> - l.off(l.YELLOW); - r.send("#### End Bootup ###########################################\n"); - l.on(l.GREEN); -} - -int main(void) - 9ba: 31 96 adiw r30, 0x01 ; 1 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 9bc: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 9be: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 9c0: 5d 9b sbis 0x0b, 5 ; 11 - 9c2: fe cf rjmp .-4 ; 0x9c0 <__stack+0x561> - UDR = c; - 9c4: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 9c6: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 9c8: bb 9a sbi 0x17, 3 ; 23 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - 9ca: 81 91 ld r24, Z+ - 9cc: 81 11 cpse r24, r1 - 9ce: f6 cf rjmp .-20 ; 0x9bc <__stack+0x55d> -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 9d0: c3 9a sbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 9d2: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; - UBRRL = (F_CPU / (baudrate * 16L) - 1); - } - uint8_t uart_putchar(uint8_t c) { - led.on(led.YELLOW); - loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - 9d4: 5d 9b sbis 0x0b, 5 ; 11 - 9d6: fe cf rjmp .-4 ; 0x9d4 <__stack+0x575> - UDR = c; - 9d8: 8a e0 ldi r24, 0x0A ; 10 - 9da: 8c b9 out 0x0c, r24 ; 12 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - 9dc: c3 98 cbi 0x18, 3 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - 9de: bb 9a sbi 0x17, 3 ; 23 - #else - //round up by default - __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); - #endif - - __builtin_avr_delay_cycles(__ticks_dc); - 9e0: ff ef ldi r31, 0xFF ; 255 - 9e2: 21 ee ldi r18, 0xE1 ; 225 - 9e4: 34 e0 ldi r19, 0x04 ; 4 - 9e6: f1 50 subi r31, 0x01 ; 1 - 9e8: 20 40 sbci r18, 0x00 ; 0 - 9ea: 30 40 sbci r19, 0x00 ; 0 - 9ec: e1 f7 brne .-8 ; 0x9e6 <__stack+0x587> - 9ee: 00 c0 rjmp .+0 ; 0x9f0 <__stack+0x591> - 9f0: 00 00 nop -{ - setup(); - int16_t target_temp = 20; - float pwm_value = 0; - while(1) - 9f2: f3 cc rjmp .-1562 ; 0x3da + 956: 20 e0 ldi r18, 0x00 ; 0 + 958: 30 e0 ldi r19, 0x00 ; 0 + 95a: 40 ea ldi r20, 0xA0 ; 160 + 95c: 51 e4 ldi r21, 0x41 ; 65 + 95e: 69 2d mov r22, r9 + 960: 78 2d mov r23, r8 + 962: 87 2d mov r24, r7 + 964: 96 2d mov r25, r6 + 966: 0e 94 85 0a call 0x150a ; 0x150a <__gesf2> + 96a: 18 16 cp r1, r24 + 96c: 54 f0 brlt .+20 ; 0x982 <__stack+0x523> + 96e: 39 2d mov r19, r9 + 970: 28 2d mov r18, r8 + 972: 97 2d mov r25, r7 + 974: 86 2d mov r24, r6 + 976: 09 c0 rjmp .+18 ; 0x98a <__stack+0x52b> if(ausg < 0) ausg = 0; if(ausg > 5) ausg = 5; if(val < 0) val = 0; - 9f4: 30 e0 ldi r19, 0x00 ; 0 - 9f6: 20 e0 ldi r18, 0x00 ; 0 - 9f8: 90 e0 ldi r25, 0x00 ; 0 - 9fa: 80 e0 ldi r24, 0x00 ; 0 - 9fc: 04 c0 rjmp .+8 ; 0xa06 <__stack+0x5a7> + 978: 30 e0 ldi r19, 0x00 ; 0 + 97a: 20 e0 ldi r18, 0x00 ; 0 + 97c: 90 e0 ldi r25, 0x00 ; 0 + 97e: 80 e0 ldi r24, 0x00 ; 0 + 980: 04 c0 rjmp .+8 ; 0x98a <__stack+0x52b> if(val > 20) val = 20; - 9fe: 30 e0 ldi r19, 0x00 ; 0 - a00: 20 e0 ldi r18, 0x00 ; 0 - a02: 90 ea ldi r25, 0xA0 ; 160 - a04: 81 e4 ldi r24, 0x41 ; 65 + 982: 30 e0 ldi r19, 0x00 ; 0 + 984: 20 e0 ldi r18, 0x00 ; 0 + 986: 90 ea ldi r25, 0xA0 ; 160 + 988: 81 e4 ldi r24, 0x41 ; 65 this->pwm[ausg] = (uint8_t)val; - a06: 48 2f mov r20, r24 - a08: 63 2f mov r22, r19 - a0a: 72 2f mov r23, r18 - a0c: 89 2f mov r24, r25 - a0e: 94 2f mov r25, r20 - a10: 0e 94 f9 06 call 0xdf2 ; 0xdf2 <__fixunssfsi> - a14: 60 93 cb 01 sts 0x01CB, r22 - a18: e5 e8 ldi r30, 0x85 ; 133 - a1a: f1 e0 ldi r31, 0x01 ; 1 - init(); - this->led = l; - send("Uart done!\n"); - } - void send(const char *text) { - while (*text) - a1c: 80 e7 ldi r24, 0x70 ; 112 - a1e: 63 ce rjmp .-826 ; 0x6e6 <__stack+0x287> - -00000a20 <__vector_6>: - r.send("\n"); - _delay_ms(100); - } -} - -ISR(TIMER1_COMPA_vect) { - a20: 1f 92 push r1 - a22: 0f 92 push r0 - a24: 0f b6 in r0, 0x3f ; 63 - a26: 0f 92 push r0 - a28: 11 24 eor r1, r1 - a2a: 2f 93 push r18 - a2c: 3f 93 push r19 - a2e: 4f 93 push r20 - a30: 5f 93 push r21 - a32: 6f 93 push r22 - a34: 7f 93 push r23 - a36: 8f 93 push r24 - a38: 9f 93 push r25 - a3a: af 93 push r26 - a3c: bf 93 push r27 - a3e: ef 93 push r30 - a40: ff 93 push r31 + 98a: 48 2f mov r20, r24 + 98c: 63 2f mov r22, r19 + 98e: 72 2f mov r23, r18 + 990: 89 2f mov r24, r25 + 992: 94 2f mov r25, r20 + 994: 0e 94 a7 09 call 0x134e ; 0x134e <__fixunssfsi> + 998: 60 93 de 01 sts 0x01DE, r22 + o.setPwm(0, pwm_value); + o.setPwm(1, target_motor); + 99c: ca 56 subi r28, 0x6A ; 106 + 99e: df 4f sbci r29, 0xFF ; 255 + 9a0: 28 81 ld r18, Y + 9a2: c6 59 subi r28, 0x96 ; 150 + 9a4: d0 40 sbci r29, 0x00 ; 0 + 9a6: 62 2f mov r22, r18 + 9a8: 77 27 eor r23, r23 + 9aa: 67 fd sbrc r22, 7 + 9ac: 70 95 com r23 + 9ae: 87 2f mov r24, r23 + 9b0: 97 2f mov r25, r23 + 9b2: 0e 94 d5 09 call 0x13aa ; 0x13aa <__floatsisf> + 9b6: 26 2e mov r2, r22 + 9b8: 37 2e mov r3, r23 + 9ba: 08 2f mov r16, r24 + 9bc: 19 2f mov r17, r25 + 9be: 46 2e mov r4, r22 + 9c0: 57 2e mov r5, r23 + 9c2: c6 57 subi r28, 0x76 ; 118 + 9c4: df 4f sbci r29, 0xFF ; 255 + 9c6: 88 83 st Y, r24 + 9c8: ca 58 subi r28, 0x8A ; 138 + 9ca: d0 40 sbci r29, 0x00 ; 0 + 9cc: c5 57 subi r28, 0x75 ; 117 + 9ce: df 4f sbci r29, 0xFF ; 255 + 9d0: 98 83 st Y, r25 + 9d2: cb 58 subi r28, 0x8B ; 139 + 9d4: d0 40 sbci r29, 0x00 ; 0 + void setPwm(uint8_t ausg, float val) { + if(ausg < 0) + ausg = 0; if(ausg > 5) ausg = 5; - return this->pwm[ausg]; - } - void timer() { - if (this->pct++ >= 20) { - a42: 80 91 ca 01 lds r24, 0x01CA - a46: 84 31 cpi r24, 0x14 ; 20 - a48: 08 f4 brcc .+2 ; 0xa4c <__vector_6+0x2c> - a4a: 51 c0 rjmp .+162 ; 0xaee <__vector_6+0xce> - this->pct=0; - a4c: 10 92 ca 01 sts 0x01CA, r1 - a50: 51 c0 rjmp .+162 ; 0xaf4 <__vector_6+0xd4> - } - for(uint8_t i = 0; i < 6; i++) { - if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { - a52: 82 2f mov r24, r18 - a54: 91 91 ld r25, Z+ - a56: 6c 91 ld r22, X - a58: 96 17 cp r25, r22 - a5a: 18 f1 brcs .+70 ; 0xaa2 <__vector_6+0x82> - a5c: 99 23 and r25, r25 - a5e: 09 f1 breq .+66 ; 0xaa2 <__vector_6+0x82> - this->on((1< - a66: 66 0f add r22, r22 - a68: 77 1f adc r23, r23 - a6a: 0a 94 dec r0 - a6c: e2 f7 brpl .-8 ; 0xa66 <__vector_6+0x46> - a6e: cb 01 movw r24, r22 - if(ausg & OUT6) { - out6::make_low(); - } - } - void on(uint8_t ausg = 255) { - if(ausg & OUT1) { - a70: 60 ff sbrs r22, 0 - a72: 02 c0 rjmp .+4 ; 0xa78 <__vector_6+0x58> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - a74: aa 9a sbi 0x15, 2 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - a76: a2 9a sbi 0x14, 2 ; 20 - out1::make_high(); - } - if(ausg & OUT2) { - a78: 81 ff sbrs r24, 1 - a7a: 02 c0 rjmp .+4 ; 0xa80 <__vector_6+0x60> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - a7c: ab 9a sbi 0x15, 3 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - a7e: a3 9a sbi 0x14, 3 ; 20 - out2::make_high(); - } - if(ausg & OUT3) { - a80: 82 ff sbrs r24, 2 - a82: 02 c0 rjmp .+4 ; 0xa88 <__vector_6+0x68> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - a84: ac 9a sbi 0x15, 4 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - a86: a4 9a sbi 0x14, 4 ; 20 - out3::make_high(); - } - if(ausg & OUT4) { - a88: 83 ff sbrs r24, 3 - a8a: 02 c0 rjmp .+4 ; 0xa90 <__vector_6+0x70> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - a8c: ad 9a sbi 0x15, 5 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - a8e: a5 9a sbi 0x14, 5 ; 20 - out4::make_high(); - } - if(ausg & OUT5) { - a90: 84 ff sbrs r24, 4 - a92: 02 c0 rjmp .+4 ; 0xa98 <__vector_6+0x78> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - a94: ae 9a sbi 0x15, 6 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - a96: a6 9a sbi 0x14, 6 ; 20 - out5::make_high(); - } - if(ausg & OUT6) { - a98: 85 ff sbrs r24, 5 - a9a: 22 c0 rjmp .+68 ; 0xae0 <__vector_6+0xc0> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - a9c: af 9a sbi 0x15, 7 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - a9e: a7 9a sbi 0x14, 7 ; 20 - aa0: 1f c0 rjmp .+62 ; 0xae0 <__vector_6+0xc0> - } - for(uint8_t i = 0; i < 6; i++) { - if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { - this->on((1<off((1< - aa6: 66 0f add r22, r22 - aa8: 77 1f adc r23, r23 - aaa: 8a 95 dec r24 - aac: e2 f7 brpl .-8 ; 0xaa6 <__vector_6+0x86> - aae: cb 01 movw r24, r22 - public: - SSR() { - init(); - } - void off(uint8_t ausg = 255) { - if(ausg & OUT1) { - ab0: 60 ff sbrs r22, 0 - ab2: 02 c0 rjmp .+4 ; 0xab8 <__vector_6+0x98> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - ab4: aa 98 cbi 0x15, 2 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - ab6: a2 9a sbi 0x14, 2 ; 20 - out1::make_low(); - } - if(ausg & OUT2) { - ab8: 81 ff sbrs r24, 1 - aba: 02 c0 rjmp .+4 ; 0xac0 <__vector_6+0xa0> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - abc: ab 98 cbi 0x15, 3 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - abe: a3 9a sbi 0x14, 3 ; 20 - out2::make_low(); - } - if(ausg & OUT3) { - ac0: 82 ff sbrs r24, 2 - ac2: 02 c0 rjmp .+4 ; 0xac8 <__vector_6+0xa8> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - ac4: ac 98 cbi 0x15, 4 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - ac6: a4 9a sbi 0x14, 4 ; 20 - out3::make_low(); - } - if(ausg & OUT4) { - ac8: 83 ff sbrs r24, 3 - aca: 02 c0 rjmp .+4 ; 0xad0 <__vector_6+0xb0> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - acc: ad 98 cbi 0x15, 5 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - ace: a5 9a sbi 0x14, 5 ; 20 - out4::make_low(); - } - if(ausg & OUT5) { - ad0: 84 ff sbrs r24, 4 - ad2: 02 c0 rjmp .+4 ; 0xad8 <__vector_6+0xb8> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - ad4: ae 98 cbi 0x15, 6 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - ad6: a6 9a sbi 0x14, 6 ; 20 - out5::make_low(); - } - if(ausg & OUT6) { - ad8: 85 ff sbrs r24, 5 - ada: 02 c0 rjmp .+4 ; 0xae0 <__vector_6+0xc0> -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - adc: af 98 cbi 0x15, 7 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - ade: a7 9a sbi 0x14, 7 ; 20 - ae0: 2f 5f subi r18, 0xFF ; 255 - ae2: 3f 4f sbci r19, 0xFF ; 255 - } - void timer() { - if (this->pct++ >= 20) { - this->pct=0; - } - for(uint8_t i = 0; i < 6; i++) { - ae4: 26 30 cpi r18, 0x06 ; 6 - ae6: 31 05 cpc r19, r1 - ae8: 09 f0 breq .+2 ; 0xaec <__vector_6+0xcc> - aea: b3 cf rjmp .-154 ; 0xa52 <__vector_6+0x32> - aec: 0c c0 rjmp .+24 ; 0xb06 <__vector_6+0xe6> - if(ausg > 5) - ausg = 5; - return this->pwm[ausg]; - } - void timer() { - if (this->pct++ >= 20) { - aee: 8f 5f subi r24, 0xFF ; 255 - af0: 80 93 ca 01 sts 0x01CA, r24 - af4: eb ec ldi r30, 0xCB ; 203 - af6: f1 e0 ldi r31, 0x01 ; 1 - af8: 20 e0 ldi r18, 0x00 ; 0 - afa: 30 e0 ldi r19, 0x00 ; 0 - this->pct=0; - } - for(uint8_t i = 0; i < 6; i++) { - if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { - afc: aa ec ldi r26, 0xCA ; 202 - afe: b1 e0 ldi r27, 0x01 ; 1 - this->on((1<off((1< - o.timer(); -} - b06: ff 91 pop r31 - b08: ef 91 pop r30 - b0a: bf 91 pop r27 - b0c: af 91 pop r26 - b0e: 9f 91 pop r25 - b10: 8f 91 pop r24 - b12: 7f 91 pop r23 - b14: 6f 91 pop r22 - b16: 5f 91 pop r21 - b18: 4f 91 pop r20 - b1a: 3f 91 pop r19 - b1c: 2f 91 pop r18 - b1e: 0f 90 pop r0 - b20: 0f be out 0x3f, r0 ; 63 - b22: 0f 90 pop r0 - b24: 1f 90 pop r1 - b26: 18 95 reti - -00000b28 <__vector_1>: - -ISR(INT0_vect) { - b28: 1f 92 push r1 - b2a: 0f 92 push r0 - b2c: 0f b6 in r0, 0x3f ; 63 - b2e: 0f 92 push r0 - b30: 11 24 eor r1, r1 - b32: 8f 93 push r24 - } - void intr() { - GIFR = (1<: -#include "hardware/pin.hpp" - -template -class SSR { - public: - SSR() { - b44: fc 01 movw r30, r24 - b46: 11 92 st Z+, r1 - b48: 86 e0 ldi r24, 0x06 ; 6 - b4a: df 01 movw r26, r30 - b4c: 1d 92 st X+, r1 - b4e: 8a 95 dec r24 - b50: e9 f7 brne .-6 ; 0xb4c <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev+0x8> - b52: a2 9a sbi 0x14, 2 ; 20 - b54: a3 9a sbi 0x14, 3 ; 20 - b56: a4 9a sbi 0x14, 4 ; 20 - b58: a5 9a sbi 0x14, 5 ; 20 - b5a: a6 9a sbi 0x14, 6 ; 20 - b5c: a7 9a sbi 0x14, 7 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - b5e: aa 98 cbi 0x15, 2 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - b60: a2 9a sbi 0x14, 2 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - b62: ab 98 cbi 0x15, 3 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - b64: a3 9a sbi 0x14, 3 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - b66: ac 98 cbi 0x15, 4 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - b68: a4 9a sbi 0x14, 4 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - b6a: ad 98 cbi 0x15, 5 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - b6c: a5 9a sbi 0x14, 5 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - b6e: ae 98 cbi 0x15, 6 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - b70: a6 9a sbi 0x14, 6 ; 20 -namespace avrlib { - - struct portc - { - static uint8_t port() { return PORTC; } - static void port(uint8_t v) { PORTC = v; } - b72: af 98 cbi 0x15, 7 ; 21 - - static uint8_t pin() { return PINC; } - static void pin(uint8_t v) { PINC = v; } - - static uint8_t dir() { return DDRC; } - static void dir(uint8_t v) { DDRC = v; } - b74: a7 9a sbi 0x14, 7 ; 20 - b76: 08 95 ret - -00000b78 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: -#define USART_H_ - -template -class Usart { - public: - Usart(ledclass l) { - b78: cf 93 push r28 - b7a: df 93 push r29 - b7c: 1f 92 push r1 - b7e: cd b7 in r28, 0x3d ; 61 - b80: de b7 in r29, 0x3e ; 62 - b82: 69 83 std Y+1, r22 ; 0x01 - b84: bc 9a sbi 0x17, 4 ; 23 - b86: bb 9a sbi 0x17, 3 ; 23 - b88: ba 9a sbi 0x17, 2 ; 23 + if(val < 0) + 9d6: 20 e0 ldi r18, 0x00 ; 0 + 9d8: 30 e0 ldi r19, 0x00 ; 0 + 9da: a9 01 movw r20, r18 + 9dc: 0e 94 3b 09 call 0x1276 ; 0x1276 <__cmpsf2> + 9e0: 88 23 and r24, r24 + 9e2: 0c f4 brge .+2 ; 0x9e6 <__stack+0x587> + 9e4: 39 c2 rjmp .+1138 ; 0xe58 <__stack+0x9f9> + val = 0; + if(val > 20) + 9e6: 20 e0 ldi r18, 0x00 ; 0 + 9e8: 30 e0 ldi r19, 0x00 ; 0 + 9ea: 40 ea ldi r20, 0xA0 ; 160 + 9ec: 51 e4 ldi r21, 0x41 ; 65 + 9ee: 62 2d mov r22, r2 + 9f0: 73 2d mov r23, r3 + 9f2: 80 2f mov r24, r16 + 9f4: 91 2f mov r25, r17 + 9f6: 0e 94 85 0a call 0x150a ; 0x150a <__gesf2> + 9fa: 18 16 cp r1, r24 + 9fc: 0c f4 brge .+2 ; 0xa00 <__stack+0x5a1> + 9fe: 39 c2 rjmp .+1138 ; 0xe72 <__stack+0xa13> + a00: 46 c2 rjmp .+1164 ; 0xe8e <__stack+0xa2f> namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - b8a: c4 98 cbi 0x18, 4 ; 24 + a02: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - b8c: bc 9a sbi 0x17, 4 ; 23 + a04: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + a06: 5d 9b sbis 0x0b, 5 ; 11 + a08: fe cf rjmp .-4 ; 0xa06 <__stack+0x5a7> + UDR = c; + a0a: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a0c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a0e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + a10: 81 91 ld r24, Z+ + a12: 81 11 cpse r24, r1 + a14: f6 cf rjmp .-20 ; 0xa02 <__stack+0x5a3> + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + a16: 8e 01 movw r16, r28 + a18: 03 58 subi r16, 0x83 ; 131 + a1a: 1f 4f sbci r17, 0xFF ; 255 + a1c: 22 e0 ldi r18, 0x02 ; 2 + a1e: 4a e0 ldi r20, 0x0A ; 10 + a20: 69 2d mov r22, r9 + a22: 78 2d mov r23, r8 + a24: 87 2d mov r24, r7 + a26: 96 2d mov r25, r6 + a28: 0e 94 26 0b call 0x164c ; 0x164c + a2c: dc 01 movw r26, r24 + a2e: 2c 91 ld r18, X + a30: 22 23 and r18, r18 + a32: 61 f0 breq .+24 ; 0xa4c <__stack+0x5ed> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + a34: fc 01 movw r30, r24 + a36: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a38: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a3a: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + a3c: 5d 9b sbis 0x0b, 5 ; 11 + a3e: fe cf rjmp .-4 ; 0xa3c <__stack+0x5dd> + UDR = c; + a40: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a42: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a44: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + a46: 21 91 ld r18, Z+ + a48: 21 11 cpse r18, r1 + a4a: f6 cf rjmp .-20 ; 0xa38 <__stack+0x5d9> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a4c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a4e: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + a50: 5d 9b sbis 0x0b, 5 ; 11 + a52: fe cf rjmp .-4 ; 0xa50 <__stack+0x5f1> + UDR = c; + a54: 8b e3 ldi r24, 0x3B ; 59 + a56: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a58: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a5a: bb 9a sbi 0x17, 3 ; 23 + a5c: e6 e7 ldi r30, 0x76 ; 118 + a5e: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + a60: 86 e7 ldi r24, 0x76 ; 118 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a62: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a64: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + a66: 5d 9b sbis 0x0b, 5 ; 11 + a68: fe cf rjmp .-4 ; 0xa66 <__stack+0x607> + UDR = c; + a6a: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + a6c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + a6e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + a70: 81 91 ld r24, Z+ + a72: 81 11 cpse r24, r1 + a74: f6 cf rjmp .-20 ; 0xa62 <__stack+0x603> + } + pwm_value = (target_temp+5) - tm; + o.setPwm(0, pwm_value); + o.setPwm(1, target_motor); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + a76: b6 01 movw r22, r12 + a78: 6e 0d add r22, r14 + a7a: 7f 1d adc r23, r15 + a7c: 80 e0 ldi r24, 0x00 ; 0 + a7e: 90 e0 ldi r25, 0x00 ; 0 + a80: 0e 94 d3 09 call 0x13a6 ; 0x13a6 <__floatunsisf> + a84: 20 e0 ldi r18, 0x00 ; 0 + a86: 30 e0 ldi r19, 0x00 ; 0 + a88: 40 e0 ldi r20, 0x00 ; 0 + a8a: 5f e3 ldi r21, 0x3F ; 63 + a8c: 0e 94 89 0a call 0x1512 ; 0x1512 <__mulsf3> + a90: 8e 01 movw r16, r28 + a92: 0e 58 subi r16, 0x8E ; 142 + a94: 1f 4f sbci r17, 0xFF ; 255 + a96: 22 e0 ldi r18, 0x02 ; 2 + a98: 4a e0 ldi r20, 0x0A ; 10 + a9a: 0e 94 26 0b call 0x164c ; 0x164c + a9e: fc 01 movw r30, r24 + aa0: 20 81 ld r18, Z + aa2: 22 23 and r18, r18 + aa4: 59 f0 breq .+22 ; 0xabc <__stack+0x65d> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + aa6: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + aa8: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + aaa: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + aac: 5d 9b sbis 0x0b, 5 ; 11 + aae: fe cf rjmp .-4 ; 0xaac <__stack+0x64d> + UDR = c; + ab0: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ab2: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + ab4: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + ab6: 21 91 ld r18, Z+ + ab8: 21 11 cpse r18, r1 + aba: f6 cf rjmp .-20 ; 0xaa8 <__stack+0x649> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + abc: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + abe: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + ac0: 5d 9b sbis 0x0b, 5 ; 11 + ac2: fe cf rjmp .-4 ; 0xac0 <__stack+0x661> + UDR = c; + ac4: 8b e3 ldi r24, 0x3B ; 59 + ac6: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ac8: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + aca: bb 9a sbi 0x17, 3 ; 23 + acc: ea e7 ldi r30, 0x7A ; 122 + ace: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + ad0: 86 e7 ldi r24, 0x76 ; 118 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ad2: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + ad4: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + ad6: 5d 9b sbis 0x0b, 5 ; 11 + ad8: fe cf rjmp .-4 ; 0xad6 <__stack+0x677> + UDR = c; + ada: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + adc: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + ade: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + ae0: 81 91 ld r24, Z+ + ae2: 81 11 cpse r24, r1 + ae4: f6 cf rjmp .-20 ; 0xad2 <__stack+0x673> + pwm_value = (target_temp+5) - tm; + o.setPwm(0, pwm_value); + o.setPwm(1, target_motor); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + ae6: 4a e0 ldi r20, 0x0A ; 10 + ae8: 50 e0 ldi r21, 0x00 ; 0 + aea: be 01 movw r22, r28 + aec: 6e 58 subi r22, 0x8E ; 142 + aee: 7f 4f sbci r23, 0xFF ; 255 + af0: c7 01 movw r24, r14 + af2: 0e 94 47 0b call 0x168e ; 0x168e + af6: dc 01 movw r26, r24 + af8: 2c 91 ld r18, X + afa: 22 23 and r18, r18 + afc: 61 f0 breq .+24 ; 0xb16 <__stack+0x6b7> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + afe: fc 01 movw r30, r24 + b00: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b02: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b04: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + b06: 5d 9b sbis 0x0b, 5 ; 11 + b08: fe cf rjmp .-4 ; 0xb06 <__stack+0x6a7> + UDR = c; + b0a: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b0c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b0e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + b10: 21 91 ld r18, Z+ + b12: 21 11 cpse r18, r1 + b14: f6 cf rjmp .-20 ; 0xb02 <__stack+0x6a3> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b16: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b18: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + b1a: 5d 9b sbis 0x0b, 5 ; 11 + b1c: fe cf rjmp .-4 ; 0xb1a <__stack+0x6bb> + UDR = c; + b1e: 8b e3 ldi r24, 0x3B ; 59 + b20: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b22: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b24: bb 9a sbi 0x17, 3 ; 23 + b26: ee e7 ldi r30, 0x7E ; 126 + b28: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + b2a: 86 e7 ldi r24, 0x76 ; 118 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b2c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b2e: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + b30: 5d 9b sbis 0x0b, 5 ; 11 + b32: fe cf rjmp .-4 ; 0xb30 <__stack+0x6d1> + UDR = c; + b34: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b36: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b38: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + b3a: 81 91 ld r24, Z+ + b3c: 81 11 cpse r24, r1 + b3e: f6 cf rjmp .-20 ; 0xb2c <__stack+0x6cd> + o.setPwm(0, pwm_value); + o.setPwm(1, target_motor); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + b40: 4a e0 ldi r20, 0x0A ; 10 + b42: 50 e0 ldi r21, 0x00 ; 0 + b44: be 01 movw r22, r28 + b46: 6e 58 subi r22, 0x8E ; 142 + b48: 7f 4f sbci r23, 0xFF ; 255 + b4a: c6 01 movw r24, r12 + b4c: 0e 94 47 0b call 0x168e ; 0x168e + b50: fc 01 movw r30, r24 + b52: 20 81 ld r18, Z + b54: 22 23 and r18, r18 + b56: 59 f0 breq .+22 ; 0xb6e <__stack+0x70f> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + b58: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b5a: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b5c: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + b5e: 5d 9b sbis 0x0b, 5 ; 11 + b60: fe cf rjmp .-4 ; 0xb5e <__stack+0x6ff> + UDR = c; + b62: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b64: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b66: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + b68: 21 91 ld r18, Z+ + b6a: 21 11 cpse r18, r1 + b6c: f6 cf rjmp .-20 ; 0xb5a <__stack+0x6fb> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b6e: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b70: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + b72: 5d 9b sbis 0x0b, 5 ; 11 + b74: fe cf rjmp .-4 ; 0xb72 <__stack+0x713> + UDR = c; + b76: 8b e3 ldi r24, 0x3B ; 59 + b78: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b7a: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b7c: bb 9a sbi 0x17, 3 ; 23 + b7e: e2 e8 ldi r30, 0x82 ; 130 + b80: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + b82: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + b84: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + b86: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + b88: 5d 9b sbis 0x0b, 5 ; 11 + b8a: fe cf rjmp .-4 ; 0xb88 <__stack+0x729> + UDR = c; + b8c: 8c b9 out 0x0c, r24 ; 12 namespace avrlib { struct portb @@ -3726,1593 +2968,3415 @@ namespace avrlib { static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } b90: bb 9a sbi 0x17, 3 ; 23 -namespace avrlib { - - struct portb - { - static uint8_t port() { return PORTB; } - static void port(uint8_t v) { PORTB = v; } - b92: c2 98 cbi 0x18, 2 ; 24 - - static uint8_t pin() { return PINB; } - static void pin(uint8_t v) { PINB = v; } - - static uint8_t dir() { return DDRB; } - static void dir(uint8_t v) { DDRB = v; } - b94: ba 9a sbi 0x17, 2 ; 23 - b96: 2f ef ldi r18, 0xFF ; 255 - b98: 3f ef ldi r19, 0xFF ; 255 - b9a: fc 01 movw r30, r24 - b9c: 32 83 std Z+2, r19 ; 0x02 - b9e: 21 83 std Z+1, r18 ; 0x01 - this->temp = -1; - return t; - } - private: - void init() { - UCSRA = 0; - ba0: 1b b8 out 0x0b, r1 ; 11 - UCSRB = (1<led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - bb4: 85 e5 ldi r24, 0x55 ; 85 + b92: 81 91 ld r24, Z+ + b94: 81 11 cpse r24, r1 + b96: f6 cf rjmp .-20 ; 0xb84 <__stack+0x725> + o.setPwm(1, target_motor); + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + b98: 8e 01 movw r16, r28 + b9a: 09 59 subi r16, 0x99 ; 153 + b9c: 1f 4f sbci r17, 0xFF ; 255 + b9e: 22 e0 ldi r18, 0x02 ; 2 + ba0: 4a e0 ldi r20, 0x0A ; 10 + ba2: c2 56 subi r28, 0x62 ; 98 + ba4: df 4f sbci r29, 0xFF ; 255 + ba6: f8 81 ld r31, Y + ba8: ce 59 subi r28, 0x9E ; 158 + baa: d0 40 sbci r29, 0x00 ; 0 + bac: c1 56 subi r28, 0x61 ; 97 + bae: df 4f sbci r29, 0xFF ; 255 + bb0: e8 81 ld r30, Y + bb2: cf 59 subi r28, 0x9F ; 159 + bb4: d0 40 sbci r29, 0x00 ; 0 + bb6: c0 56 subi r28, 0x60 ; 96 + bb8: df 4f sbci r29, 0xFF ; 255 + bba: 58 81 ld r21, Y + bbc: c0 5a subi r28, 0xA0 ; 160 + bbe: d0 40 sbci r29, 0x00 ; 0 + bc0: cf 55 subi r28, 0x5F ; 95 + bc2: df 4f sbci r29, 0xFF ; 255 + bc4: 38 81 ld r19, Y + bc6: c1 5a subi r28, 0xA1 ; 161 + bc8: d0 40 sbci r29, 0x00 ; 0 + bca: 6f 2f mov r22, r31 + bcc: 7e 2f mov r23, r30 + bce: 85 2f mov r24, r21 + bd0: 93 2f mov r25, r19 + bd2: 0e 94 26 0b call 0x164c ; 0x164c + bd6: dc 01 movw r26, r24 + bd8: 2c 91 ld r18, X + bda: 22 23 and r18, r18 + bdc: 61 f0 breq .+24 ; 0xbf6 <__stack+0x797> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + bde: fc 01 movw r30, r24 + be0: 31 96 adiw r30, 0x01 ; 1 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - bb6: c3 9a sbi 0x18, 3 ; 24 + be2: c3 9a sbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - bb8: bb 9a sbi 0x17, 3 ; 23 - UBRRH = 0; + be4: bb 9a sbi 0x17, 3 ; 23 UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); } uint8_t uart_putchar(uint8_t c) { led.on(led.YELLOW); loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens - bba: 5d 9b sbis 0x0b, 5 ; 11 - bbc: fe cf rjmp .-4 ; 0xbba <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x42> + be6: 5d 9b sbis 0x0b, 5 ; 11 + be8: fe cf rjmp .-4 ; 0xbe6 <__stack+0x787> UDR = c; - bbe: 8c b9 out 0x0c, r24 ; 12 + bea: 2c b9 out 0x0c, r18 ; 12 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - bc0: c3 98 cbi 0x18, 3 ; 24 + bec: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - bc2: bb 9a sbi 0x17, 3 ; 23 + bee: bb 9a sbi 0x17, 3 ; 23 init(); this->led = l; send("Uart done!\n"); } void send(const char *text) { while (*text) - bc4: 81 91 ld r24, Z+ - bc6: 81 11 cpse r24, r1 - bc8: f6 cf rjmp .-20 ; 0xbb6 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x3e> + bf0: 21 91 ld r18, Z+ + bf2: 21 11 cpse r18, r1 + bf4: f6 cf rjmp .-20 ; 0xbe2 <__stack+0x783> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + bf6: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + bf8: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + bfa: 5d 9b sbis 0x0b, 5 ; 11 + bfc: fe cf rjmp .-4 ; 0xbfa <__stack+0x79b> + UDR = c; + bfe: 8b e3 ldi r24, 0x3B ; 59 + c00: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c02: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c04: bb 9a sbi 0x17, 3 ; 23 + c06: e6 e8 ldi r30, 0x86 ; 134 + c08: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + c0a: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c0c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c0e: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + c10: 5d 9b sbis 0x0b, 5 ; 11 + c12: fe cf rjmp .-4 ; 0xc10 <__stack+0x7b1> + UDR = c; + c14: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c16: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c18: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + c1a: 81 91 ld r24, Z+ + c1c: 81 11 cpse r24, r1 + c1e: f6 cf rjmp .-20 ; 0xc0c <__stack+0x7ad> + char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + c20: 8e 01 movw r16, r28 + c22: 09 59 subi r16, 0x99 ; 153 + c24: 1f 4f sbci r17, 0xFF ; 255 + c26: 22 e0 ldi r18, 0x02 ; 2 + c28: 4a e0 ldi r20, 0x0A ; 10 + c2a: c4 57 subi r28, 0x74 ; 116 + c2c: df 4f sbci r29, 0xFF ; 255 + c2e: f8 81 ld r31, Y + c30: cc 58 subi r28, 0x8C ; 140 + c32: d0 40 sbci r29, 0x00 ; 0 + c34: c8 56 subi r28, 0x68 ; 104 + c36: df 4f sbci r29, 0xFF ; 255 + c38: e8 81 ld r30, Y + c3a: c8 59 subi r28, 0x98 ; 152 + c3c: d0 40 sbci r29, 0x00 ; 0 + c3e: c7 56 subi r28, 0x67 ; 103 + c40: df 4f sbci r29, 0xFF ; 255 + c42: 58 81 ld r21, Y + c44: c9 59 subi r28, 0x99 ; 153 + c46: d0 40 sbci r29, 0x00 ; 0 + c48: c6 56 subi r28, 0x66 ; 102 + c4a: df 4f sbci r29, 0xFF ; 255 + c4c: 38 81 ld r19, Y + c4e: ca 59 subi r28, 0x9A ; 154 + c50: d0 40 sbci r29, 0x00 ; 0 + c52: 6f 2f mov r22, r31 + c54: 7e 2f mov r23, r30 + c56: 85 2f mov r24, r21 + c58: 93 2f mov r25, r19 + c5a: 0e 94 26 0b call 0x164c ; 0x164c + c5e: fc 01 movw r30, r24 + c60: 20 81 ld r18, Z + c62: 22 23 and r18, r18 + c64: 59 f0 breq .+22 ; 0xc7c <__stack+0x81d> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + c66: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c68: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c6a: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + c6c: 5d 9b sbis 0x0b, 5 ; 11 + c6e: fe cf rjmp .-4 ; 0xc6c <__stack+0x80d> + UDR = c; + c70: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c72: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c74: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + c76: 21 91 ld r18, Z+ + c78: 21 11 cpse r18, r1 + c7a: f6 cf rjmp .-20 ; 0xc68 <__stack+0x809> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c7c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c7e: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + c80: 5d 9b sbis 0x0b, 5 ; 11 + c82: fe cf rjmp .-4 ; 0xc80 <__stack+0x821> + UDR = c; + c84: 8b e3 ldi r24, 0x3B ; 59 + c86: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c88: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c8a: bb 9a sbi 0x17, 3 ; 23 + c8c: ea e8 ldi r30, 0x8A ; 138 + c8e: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + c90: 83 e6 ldi r24, 0x63 ; 99 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c92: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c94: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + c96: 5d 9b sbis 0x0b, 5 ; 11 + c98: fe cf rjmp .-4 ; 0xc96 <__stack+0x837> + UDR = c; + c9a: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + c9c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + c9e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + ca0: 81 91 ld r24, Z+ + ca2: 81 11 cpse r24, r1 + ca4: f6 cf rjmp .-20 ; 0xc92 <__stack+0x833> + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + ca6: 8e 01 movw r16, r28 + ca8: 09 59 subi r16, 0x99 ; 153 + caa: 1f 4f sbci r17, 0xFF ; 255 + cac: 22 e0 ldi r18, 0x02 ; 2 + cae: 4a e0 ldi r20, 0x0A ; 10 + cb0: c0 57 subi r28, 0x70 ; 112 + cb2: df 4f sbci r29, 0xFF ; 255 + cb4: f8 81 ld r31, Y + cb6: c0 59 subi r28, 0x90 ; 144 + cb8: d0 40 sbci r29, 0x00 ; 0 + cba: c5 56 subi r28, 0x65 ; 101 + cbc: df 4f sbci r29, 0xFF ; 255 + cbe: e8 81 ld r30, Y + cc0: cb 59 subi r28, 0x9B ; 155 + cc2: d0 40 sbci r29, 0x00 ; 0 + cc4: c4 56 subi r28, 0x64 ; 100 + cc6: df 4f sbci r29, 0xFF ; 255 + cc8: 58 81 ld r21, Y + cca: cc 59 subi r28, 0x9C ; 156 + ccc: d0 40 sbci r29, 0x00 ; 0 + cce: c3 56 subi r28, 0x63 ; 99 + cd0: df 4f sbci r29, 0xFF ; 255 + cd2: 38 81 ld r19, Y + cd4: cd 59 subi r28, 0x9D ; 157 + cd6: d0 40 sbci r29, 0x00 ; 0 + cd8: 6f 2f mov r22, r31 + cda: 7e 2f mov r23, r30 + cdc: 85 2f mov r24, r21 + cde: 93 2f mov r25, r19 + ce0: 0e 94 26 0b call 0x164c ; 0x164c + ce4: dc 01 movw r26, r24 + ce6: 2c 91 ld r18, X + ce8: 22 23 and r18, r18 + cea: 61 f0 breq .+24 ; 0xd04 <__stack+0x8a5> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + cec: fc 01 movw r30, r24 + cee: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + cf0: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + cf2: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + cf4: 5d 9b sbis 0x0b, 5 ; 11 + cf6: fe cf rjmp .-4 ; 0xcf4 <__stack+0x895> + UDR = c; + cf8: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + cfa: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + cfc: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + cfe: 21 91 ld r18, Z+ + d00: 21 11 cpse r18, r1 + d02: f6 cf rjmp .-20 ; 0xcf0 <__stack+0x891> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d04: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d06: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + d08: 5d 9b sbis 0x0b, 5 ; 11 + d0a: fe cf rjmp .-4 ; 0xd08 <__stack+0x8a9> + UDR = c; + d0c: 8b e3 ldi r24, 0x3B ; 59 + d0e: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d10: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d12: bb 9a sbi 0x17, 3 ; 23 + d14: ee e8 ldi r30, 0x8E ; 142 + d16: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + d18: 84 e7 ldi r24, 0x74 ; 116 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d1a: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d1c: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + d1e: 5d 9b sbis 0x0b, 5 ; 11 + d20: fe cf rjmp .-4 ; 0xd1e <__stack+0x8bf> + UDR = c; + d22: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d24: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d26: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + d28: 81 91 ld r24, Z+ + d2a: 81 11 cpse r24, r1 + d2c: f6 cf rjmp .-20 ; 0xd1a <__stack+0x8bb> + r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";"); + d2e: 4a e0 ldi r20, 0x0A ; 10 + d30: 50 e0 ldi r21, 0x00 ; 0 + d32: be 01 movw r22, r28 + d34: 64 5a subi r22, 0xA4 ; 164 + d36: 7f 4f sbci r23, 0xFF ; 255 + d38: cc 56 subi r28, 0x6C ; 108 + d3a: df 4f sbci r29, 0xFF ; 255 + d3c: 88 81 ld r24, Y + d3e: 99 81 ldd r25, Y+1 ; 0x01 + d40: c4 59 subi r28, 0x94 ; 148 + d42: d0 40 sbci r29, 0x00 ; 0 + d44: 0e 94 47 0b call 0x168e ; 0x168e + d48: fc 01 movw r30, r24 + d4a: 20 81 ld r18, Z + d4c: 22 23 and r18, r18 + d4e: 59 f0 breq .+22 ; 0xd66 <__stack+0x907> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + d50: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d52: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d54: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + d56: 5d 9b sbis 0x0b, 5 ; 11 + d58: fe cf rjmp .-4 ; 0xd56 <__stack+0x8f7> + UDR = c; + d5a: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d5c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d5e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + d60: 21 91 ld r18, Z+ + d62: 21 11 cpse r18, r1 + d64: f6 cf rjmp .-20 ; 0xd52 <__stack+0x8f3> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d66: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d68: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + d6a: 5d 9b sbis 0x0b, 5 ; 11 + d6c: fe cf rjmp .-4 ; 0xd6a <__stack+0x90b> + UDR = c; + d6e: 8b e3 ldi r24, 0x3B ; 59 + d70: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d72: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d74: bb 9a sbi 0x17, 3 ; 23 + d76: e3 e8 ldi r30, 0x83 ; 131 + d78: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + d7a: 8d e6 ldi r24, 0x6D ; 109 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d7c: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d7e: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + d80: 5d 9b sbis 0x0b, 5 ; 11 + d82: fe cf rjmp .-4 ; 0xd80 <__stack+0x921> + UDR = c; + d84: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + d86: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + d88: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + d8a: 81 91 ld r24, Z+ + d8c: 81 11 cpse r24, r1 + d8e: f6 cf rjmp .-20 ; 0xd7c <__stack+0x91d> + r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";"); + char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";"); + d90: 4a e0 ldi r20, 0x0A ; 10 + d92: 50 e0 ldi r21, 0x00 ; 0 + d94: be 01 movw r22, r28 + d96: 6f 5a subi r22, 0xAF ; 175 + d98: 7f 4f sbci r23, 0xFF ; 255 + d9a: ca 56 subi r28, 0x6A ; 106 + d9c: df 4f sbci r29, 0xFF ; 255 + d9e: f8 81 ld r31, Y + da0: c6 59 subi r28, 0x96 ; 150 + da2: d0 40 sbci r29, 0x00 ; 0 + da4: 8f 2f mov r24, r31 + da6: 99 27 eor r25, r25 + da8: 87 fd sbrc r24, 7 + daa: 90 95 com r25 + dac: 0e 94 47 0b call 0x168e ; 0x168e + db0: dc 01 movw r26, r24 + db2: 2c 91 ld r18, X + db4: 22 23 and r18, r18 + db6: 61 f0 breq .+24 ; 0xdd0 <__stack+0x971> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + db8: fc 01 movw r30, r24 + dba: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + dbc: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + dbe: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + dc0: 5d 9b sbis 0x0b, 5 ; 11 + dc2: fe cf rjmp .-4 ; 0xdc0 <__stack+0x961> + UDR = c; + dc4: 2c b9 out 0x0c, r18 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + dc6: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + dc8: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + dca: 21 91 ld r18, Z+ + dcc: 21 11 cpse r18, r1 + dce: f6 cf rjmp .-20 ; 0xdbc <__stack+0x95d> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + dd0: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + dd2: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + dd4: 5d 9b sbis 0x0b, 5 ; 11 + dd6: fe cf rjmp .-4 ; 0xdd4 <__stack+0x975> + UDR = c; + dd8: 8b e3 ldi r24, 0x3B ; 59 + dda: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + ddc: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + dde: bb 9a sbi 0x17, 3 ; 23 + char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";"); + char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";"); + r.send((o.isOn(o.OUT1)==1)?"hon=1;":"hon=0;"); + de0: 9a 9b sbis 0x13, 2 ; 19 + de2: 03 c0 rjmp .+6 ; 0xdea <__stack+0x98b> + de4: e2 e6 ldi r30, 0x62 ; 98 + de6: f1 e0 ldi r31, 0x01 ; 1 + de8: 02 c0 rjmp .+4 ; 0xdee <__stack+0x98f> + dea: eb e5 ldi r30, 0x5B ; 91 + dec: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + dee: 80 81 ld r24, Z + df0: 88 23 and r24, r24 + df2: 59 f0 breq .+22 ; 0xe0a <__stack+0x9ab> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + df4: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + df6: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + df8: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + dfa: 5d 9b sbis 0x0b, 5 ; 11 + dfc: fe cf rjmp .-4 ; 0xdfa <__stack+0x99b> + UDR = c; + dfe: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + e00: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + e02: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + e04: 81 91 ld r24, Z+ + e06: 81 11 cpse r24, r1 + e08: f6 cf rjmp .-20 ; 0xdf6 <__stack+0x997> + r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); + r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); + char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";"); + char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";"); + r.send((o.isOn(o.OUT1)==1)?"hon=1;":"hon=0;"); + r.send((o.isOn(o.OUT2)==1)?"mon=1":"mon=0"); + e0a: 9b 9b sbis 0x13, 3 ; 19 + e0c: 03 c0 rjmp .+6 ; 0xe14 <__stack+0x9b5> + e0e: ef e6 ldi r30, 0x6F ; 111 + e10: f1 e0 ldi r31, 0x01 ; 1 + e12: 02 c0 rjmp .+4 ; 0xe18 <__stack+0x9b9> + e14: e9 e6 ldi r30, 0x69 ; 105 + e16: f1 e0 ldi r31, 0x01 ; 1 + e18: 80 81 ld r24, Z + e1a: 88 23 and r24, r24 + e1c: 59 f0 breq .+22 ; 0xe34 <__stack+0x9d5> + l.off(l.YELLOW); + r.send("#### End Bootup ###########################################\n"); + l.on(l.GREEN); +} + +int main(void) + e1e: 31 96 adiw r30, 0x01 ; 1 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + e20: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + e22: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + e24: 5d 9b sbis 0x0b, 5 ; 11 + e26: fe cf rjmp .-4 ; 0xe24 <__stack+0x9c5> + UDR = c; + e28: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + e2a: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + e2c: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + e2e: 81 91 ld r24, Z+ + e30: 81 11 cpse r24, r1 + e32: f6 cf rjmp .-20 ; 0xe20 <__stack+0x9c1> +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + e34: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + e36: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + e38: 5d 9b sbis 0x0b, 5 ; 11 + e3a: fe cf rjmp .-4 ; 0xe38 <__stack+0x9d9> + UDR = c; + e3c: 8a e0 ldi r24, 0x0A ; 10 + e3e: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + e40: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + e42: bb 9a sbi 0x17, 3 ; 23 + #else + //round up by default + __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); + #endif + + __builtin_avr_delay_cycles(__ticks_dc); + e44: bf ef ldi r27, 0xFF ; 255 + e46: e0 e7 ldi r30, 0x70 ; 112 + e48: f2 e0 ldi r31, 0x02 ; 2 + e4a: b1 50 subi r27, 0x01 ; 1 + e4c: e0 40 sbci r30, 0x00 ; 0 + e4e: f0 40 sbci r31, 0x00 ; 0 + e50: e1 f7 brne .-8 ; 0xe4a <__stack+0x9eb> + e52: 00 c0 rjmp .+0 ; 0xe54 <__stack+0x9f5> + e54: 00 00 nop + int8_t target_motor = 20; + float pwm_value = 0; + uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t p = 0; + while(1) + e56: fc ca rjmp .-2568 ; 0x450 + if(ausg < 0) + ausg = 0; + if(ausg > 5) + ausg = 5; + if(val < 0) + val = 0; + e58: 41 2c mov r4, r1 + e5a: 51 2c mov r5, r1 + e5c: c6 57 subi r28, 0x76 ; 118 + e5e: df 4f sbci r29, 0xFF ; 255 + e60: 18 82 st Y, r1 + e62: ca 58 subi r28, 0x8A ; 138 + e64: d0 40 sbci r29, 0x00 ; 0 + e66: c5 57 subi r28, 0x75 ; 117 + e68: df 4f sbci r29, 0xFF ; 255 + e6a: 18 82 st Y, r1 + e6c: cb 58 subi r28, 0x8B ; 139 + e6e: d0 40 sbci r29, 0x00 ; 0 + e70: 0e c0 rjmp .+28 ; 0xe8e <__stack+0xa2f> + if(val > 20) + val = 20; + e72: 41 2c mov r4, r1 + e74: 51 2c mov r5, r1 + e76: 20 ea ldi r18, 0xA0 ; 160 + e78: c6 57 subi r28, 0x76 ; 118 + e7a: df 4f sbci r29, 0xFF ; 255 + e7c: 28 83 st Y, r18 + e7e: ca 58 subi r28, 0x8A ; 138 + e80: d0 40 sbci r29, 0x00 ; 0 + e82: 31 e4 ldi r19, 0x41 ; 65 + e84: c5 57 subi r28, 0x75 ; 117 + e86: df 4f sbci r29, 0xFF ; 255 + e88: 38 83 st Y, r19 + e8a: cb 58 subi r28, 0x8B ; 139 + e8c: d0 40 sbci r29, 0x00 ; 0 + this->pwm[ausg] = (uint8_t)val; + e8e: c6 57 subi r28, 0x76 ; 118 + e90: df 4f sbci r29, 0xFF ; 255 + e92: 38 81 ld r19, Y + e94: ca 58 subi r28, 0x8A ; 138 + e96: d0 40 sbci r29, 0x00 ; 0 + e98: c5 57 subi r28, 0x75 ; 117 + e9a: df 4f sbci r29, 0xFF ; 255 + e9c: 28 81 ld r18, Y + e9e: cb 58 subi r28, 0x8B ; 139 + ea0: d0 40 sbci r29, 0x00 ; 0 + ea2: 64 2d mov r22, r4 + ea4: 75 2d mov r23, r5 + ea6: 83 2f mov r24, r19 + ea8: 92 2f mov r25, r18 + eaa: 0e 94 a7 09 call 0x134e ; 0x134e <__fixunssfsi> + eae: 60 93 df 01 sts 0x01DF, r22 + eb2: e1 e9 ldi r30, 0x91 ; 145 + eb4: f1 e0 ldi r31, 0x01 ; 1 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + eb6: 80 e7 ldi r24, 0x70 ; 112 + eb8: a4 cd rjmp .-1208 ; 0xa02 <__stack+0x5a3> + +00000eba <__vector_6>: + r.send("\n"); + _delay_ms(50); + } +} + +ISR(TIMER1_COMPA_vect) { + eba: 1f 92 push r1 + ebc: 0f 92 push r0 + ebe: 0f b6 in r0, 0x3f ; 63 + ec0: 0f 92 push r0 + ec2: 11 24 eor r1, r1 + ec4: 2f 93 push r18 + ec6: 3f 93 push r19 + ec8: 4f 93 push r20 + eca: 5f 93 push r21 + ecc: 6f 93 push r22 + ece: 7f 93 push r23 + ed0: 8f 93 push r24 + ed2: 9f 93 push r25 + ed4: af 93 push r26 + ed6: bf 93 push r27 + ed8: ef 93 push r30 + eda: ff 93 push r31 + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + edc: 80 91 dd 01 lds r24, 0x01DD + ee0: 84 31 cpi r24, 0x14 ; 20 + ee2: 08 f4 brcc .+2 ; 0xee6 <__vector_6+0x2c> + ee4: 51 c0 rjmp .+162 ; 0xf88 <__vector_6+0xce> + this->pct=0; + ee6: 10 92 dd 01 sts 0x01DD, r1 + eea: 51 c0 rjmp .+162 ; 0xf8e <__vector_6+0xd4> + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + eec: 82 2f mov r24, r18 + eee: 91 91 ld r25, Z+ + ef0: 6c 91 ld r22, X + ef2: 96 17 cp r25, r22 + ef4: 18 f1 brcs .+70 ; 0xf3c <__vector_6+0x82> + ef6: 99 23 and r25, r25 + ef8: 09 f1 breq .+66 ; 0xf3c <__vector_6+0x82> + this->on((1< + f00: 66 0f add r22, r22 + f02: 77 1f adc r23, r23 + f04: 0a 94 dec r0 + f06: e2 f7 brpl .-8 ; 0xf00 <__vector_6+0x46> + f08: cb 01 movw r24, r22 + if(ausg & OUT6) { + out6::make_low(); + } + } + void on(uint8_t ausg = 255) { + if(ausg & OUT1) { + f0a: 60 ff sbrs r22, 0 + f0c: 02 c0 rjmp .+4 ; 0xf12 <__vector_6+0x58> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f0e: aa 9a sbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f10: a2 9a sbi 0x14, 2 ; 20 + out1::make_high(); + } + if(ausg & OUT2) { + f12: 81 ff sbrs r24, 1 + f14: 02 c0 rjmp .+4 ; 0xf1a <__vector_6+0x60> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f16: ab 9a sbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f18: a3 9a sbi 0x14, 3 ; 20 + out2::make_high(); + } + if(ausg & OUT3) { + f1a: 82 ff sbrs r24, 2 + f1c: 02 c0 rjmp .+4 ; 0xf22 <__vector_6+0x68> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f1e: ac 9a sbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f20: a4 9a sbi 0x14, 4 ; 20 + out3::make_high(); + } + if(ausg & OUT4) { + f22: 83 ff sbrs r24, 3 + f24: 02 c0 rjmp .+4 ; 0xf2a <__vector_6+0x70> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f26: ad 9a sbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f28: a5 9a sbi 0x14, 5 ; 20 + out4::make_high(); + } + if(ausg & OUT5) { + f2a: 84 ff sbrs r24, 4 + f2c: 02 c0 rjmp .+4 ; 0xf32 <__vector_6+0x78> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f2e: ae 9a sbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f30: a6 9a sbi 0x14, 6 ; 20 + out5::make_high(); + } + if(ausg & OUT6) { + f32: 85 ff sbrs r24, 5 + f34: 22 c0 rjmp .+68 ; 0xf7a <__vector_6+0xc0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f36: af 9a sbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f38: a7 9a sbi 0x14, 7 ; 20 + f3a: 1f c0 rjmp .+62 ; 0xf7a <__vector_6+0xc0> + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + this->on((1<off((1< + f40: 66 0f add r22, r22 + f42: 77 1f adc r23, r23 + f44: 8a 95 dec r24 + f46: e2 f7 brpl .-8 ; 0xf40 <__vector_6+0x86> + f48: cb 01 movw r24, r22 + public: + SSR() { + init(); + } + void off(uint8_t ausg = 255) { + if(ausg & OUT1) { + f4a: 60 ff sbrs r22, 0 + f4c: 02 c0 rjmp .+4 ; 0xf52 <__vector_6+0x98> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f4e: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f50: a2 9a sbi 0x14, 2 ; 20 + out1::make_low(); + } + if(ausg & OUT2) { + f52: 81 ff sbrs r24, 1 + f54: 02 c0 rjmp .+4 ; 0xf5a <__vector_6+0xa0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f56: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f58: a3 9a sbi 0x14, 3 ; 20 + out2::make_low(); + } + if(ausg & OUT3) { + f5a: 82 ff sbrs r24, 2 + f5c: 02 c0 rjmp .+4 ; 0xf62 <__vector_6+0xa8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f5e: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f60: a4 9a sbi 0x14, 4 ; 20 + out3::make_low(); + } + if(ausg & OUT4) { + f62: 83 ff sbrs r24, 3 + f64: 02 c0 rjmp .+4 ; 0xf6a <__vector_6+0xb0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f66: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f68: a5 9a sbi 0x14, 5 ; 20 + out4::make_low(); + } + if(ausg & OUT5) { + f6a: 84 ff sbrs r24, 4 + f6c: 02 c0 rjmp .+4 ; 0xf72 <__vector_6+0xb8> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f6e: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f70: a6 9a sbi 0x14, 6 ; 20 + out5::make_low(); + } + if(ausg & OUT6) { + f72: 85 ff sbrs r24, 5 + f74: 02 c0 rjmp .+4 ; 0xf7a <__vector_6+0xc0> +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + f76: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + f78: a7 9a sbi 0x14, 7 ; 20 + f7a: 2f 5f subi r18, 0xFF ; 255 + f7c: 3f 4f sbci r19, 0xFF ; 255 + } + void timer() { + if (this->pct++ >= 20) { + this->pct=0; + } + for(uint8_t i = 0; i < 6; i++) { + f7e: 26 30 cpi r18, 0x06 ; 6 + f80: 31 05 cpc r19, r1 + f82: 09 f0 breq .+2 ; 0xf86 <__vector_6+0xcc> + f84: b3 cf rjmp .-154 ; 0xeec <__vector_6+0x32> + f86: 0c c0 rjmp .+24 ; 0xfa0 <__vector_6+0xe6> + if(ausg > 5) + ausg = 5; + return this->pwm[ausg]; + } + void timer() { + if (this->pct++ >= 20) { + f88: 8f 5f subi r24, 0xFF ; 255 + f8a: 80 93 dd 01 sts 0x01DD, r24 + f8e: ee ed ldi r30, 0xDE ; 222 + f90: f1 e0 ldi r31, 0x01 ; 1 + f92: 20 e0 ldi r18, 0x00 ; 0 + f94: 30 e0 ldi r19, 0x00 ; 0 + this->pct=0; + } + for(uint8_t i = 0; i < 6; i++) { + if(this->pwm[i] >= this->pct && this->pwm[i] != 0) { + f96: ad ed ldi r26, 0xDD ; 221 + f98: b1 e0 ldi r27, 0x01 ; 1 + this->on((1<off((1< + o.timer(); +} + fa0: ff 91 pop r31 + fa2: ef 91 pop r30 + fa4: bf 91 pop r27 + fa6: af 91 pop r26 + fa8: 9f 91 pop r25 + faa: 8f 91 pop r24 + fac: 7f 91 pop r23 + fae: 6f 91 pop r22 + fb0: 5f 91 pop r21 + fb2: 4f 91 pop r20 + fb4: 3f 91 pop r19 + fb6: 2f 91 pop r18 + fb8: 0f 90 pop r0 + fba: 0f be out 0x3f, r0 ; 63 + fbc: 0f 90 pop r0 + fbe: 1f 90 pop r1 + fc0: 18 95 reti + +00000fc2 <__vector_1>: + +ISR(INT0_vect) { + fc2: 1f 92 push r1 + fc4: 0f 92 push r0 + fc6: 0f b6 in r0, 0x3f ; 63 + fc8: 0f 92 push r0 + fca: 11 24 eor r1, r1 + fcc: 8f 93 push r24 + } + void intr() { + GIFR = (1<: + +ISR(USART_RXC_vect) { + fde: 1f 92 push r1 + fe0: 0f 92 push r0 + fe2: 0f b6 in r0, 0x3f ; 63 + fe4: 0f 92 push r0 + fe6: 11 24 eor r1, r1 + fe8: 2f 93 push r18 + fea: 3f 93 push r19 + fec: 4f 93 push r20 + fee: 8f 93 push r24 + ff0: 9f 93 push r25 + ff2: ef 93 push r30 + ff4: ff 93 push r31 + int8_t m = this->motor; + this->motor = -1; + return m; + } + void intr() { + uint8_t nextChar = UDR; + ff6: 8c b1 in r24, 0x0c ; 12 + //uart_putchar(nextChar); + if( nextChar != '\n' && nextChar != '\r' && this->uart_str_count < this->UART_MAXSTRLEN ) { + ff8: 8a 30 cpi r24, 0x0A ; 10 + ffa: 79 f0 breq .+30 ; 0x101a <__vector_11+0x3c> + ffc: 8d 30 cpi r24, 0x0D ; 13 + ffe: 69 f0 breq .+26 ; 0x101a <__vector_11+0x3c> + 1000: 90 91 d7 01 lds r25, 0x01D7 + 1004: 95 30 cpi r25, 0x05 ; 5 + 1006: 48 f4 brcc .+18 ; 0x101a <__vector_11+0x3c> + this->uart_string[this->uart_str_count] = nextChar; + 1008: e9 2f mov r30, r25 + 100a: f0 e0 ldi r31, 0x00 ; 0 + 100c: ed 52 subi r30, 0x2D ; 45 + 100e: fe 4f sbci r31, 0xFE ; 254 + 1010: 85 83 std Z+5, r24 ; 0x05 + this->uart_str_count++; + 1012: 9f 5f subi r25, 0xFF ; 255 + 1014: 90 93 d7 01 sts 0x01D7, r25 + 1018: 33 c0 rjmp .+102 ; 0x1080 <__vector_11+0xa2> + } else { + if(this->uart_string[0] == 't') { + 101a: 80 91 d8 01 lds r24, 0x01D8 + 101e: 84 37 cpi r24, 0x74 ; 116 + 1020: f1 f4 brne .+60 ; 0x105e <__vector_11+0x80> + this->temp = (this->uart_string[1]-48)*100+(this->uart_string[2]-48)*10+(this->uart_string[3]-48); + 1022: 40 91 d9 01 lds r20, 0x01D9 + 1026: 80 91 da 01 lds r24, 0x01DA + 102a: 90 e0 ldi r25, 0x00 ; 0 + 102c: 88 0f add r24, r24 + 102e: 99 1f adc r25, r25 + 1030: 9c 01 movw r18, r24 + 1032: 22 0f add r18, r18 + 1034: 33 1f adc r19, r19 + 1036: 22 0f add r18, r18 + 1038: 33 1f adc r19, r19 + 103a: 82 0f add r24, r18 + 103c: 93 1f adc r25, r19 + 103e: 24 e6 ldi r18, 0x64 ; 100 + 1040: 42 9f mul r20, r18 + 1042: 80 0d add r24, r0 + 1044: 91 1d adc r25, r1 + 1046: 11 24 eor r1, r1 + 1048: 20 91 db 01 lds r18, 0x01DB + 104c: 82 0f add r24, r18 + 104e: 91 1d adc r25, r1 + 1050: 80 5d subi r24, 0xD0 ; 208 + 1052: 94 41 sbci r25, 0x14 ; 20 + 1054: 90 93 d5 01 sts 0x01D5, r25 + 1058: 80 93 d4 01 sts 0x01D4, r24 + 105c: 0f c0 rjmp .+30 ; 0x107c <__vector_11+0x9e> + } + if(uart_string[0] == 'm') { + 105e: 8d 36 cpi r24, 0x6D ; 109 + 1060: 69 f4 brne .+26 ; 0x107c <__vector_11+0x9e> + this->motor = (this->uart_string[1]-48)*10+(this->uart_string[2]-48); + 1062: 90 91 da 01 lds r25, 0x01DA + 1066: 90 51 subi r25, 0x10 ; 16 + 1068: 80 91 d9 01 lds r24, 0x01D9 + 106c: 88 0f add r24, r24 + 106e: 28 2f mov r18, r24 + 1070: 22 0f add r18, r18 + 1072: 22 0f add r18, r18 + 1074: 82 0f add r24, r18 + 1076: 89 0f add r24, r25 + 1078: 80 93 d6 01 sts 0x01D6, r24 + } + this->uart_str_count = 0; + 107c: 10 92 d7 01 sts 0x01D7, r1 + r.intr(); + 1080: ff 91 pop r31 + 1082: ef 91 pop r30 + 1084: 9f 91 pop r25 + 1086: 8f 91 pop r24 + 1088: 4f 91 pop r20 + 108a: 3f 91 pop r19 + 108c: 2f 91 pop r18 + 108e: 0f 90 pop r0 + 1090: 0f be out 0x3f, r0 ; 63 + 1092: 0f 90 pop r0 + 1094: 1f 90 pop r1 + 1096: 18 95 reti + +00001098 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev>: +#include "hardware/pin.hpp" + +template +class SSR { + public: + SSR() { + 1098: fc 01 movw r30, r24 + 109a: 11 92 st Z+, r1 + 109c: 86 e0 ldi r24, 0x06 ; 6 + 109e: df 01 movw r26, r30 + 10a0: 1d 92 st X+, r1 + 10a2: 8a 95 dec r24 + 10a4: e9 f7 brne .-6 ; 0x10a0 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev+0x8> + 10a6: a2 9a sbi 0x14, 2 ; 20 + 10a8: a3 9a sbi 0x14, 3 ; 20 + 10aa: a4 9a sbi 0x14, 4 ; 20 + 10ac: a5 9a sbi 0x14, 5 ; 20 + 10ae: a6 9a sbi 0x14, 6 ; 20 + 10b0: a7 9a sbi 0x14, 7 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 10b2: aa 98 cbi 0x15, 2 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 10b4: a2 9a sbi 0x14, 2 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 10b6: ab 98 cbi 0x15, 3 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 10b8: a3 9a sbi 0x14, 3 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 10ba: ac 98 cbi 0x15, 4 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 10bc: a4 9a sbi 0x14, 4 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 10be: ad 98 cbi 0x15, 5 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 10c0: a5 9a sbi 0x14, 5 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 10c2: ae 98 cbi 0x15, 6 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 10c4: a6 9a sbi 0x14, 6 ; 20 +namespace avrlib { + + struct portc + { + static uint8_t port() { return PORTC; } + static void port(uint8_t v) { PORTC = v; } + 10c6: af 98 cbi 0x15, 7 ; 21 + + static uint8_t pin() { return PINC; } + static void pin(uint8_t v) { PINC = v; } + + static uint8_t dir() { return DDRC; } + static void dir(uint8_t v) { DDRC = v; } + 10c8: a7 9a sbi 0x14, 7 ; 20 + 10ca: 08 95 ret + +000010cc <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: +#define USART_H_ + +template +class Usart { + public: + Usart(ledclass l) { + 10cc: cf 93 push r28 + 10ce: df 93 push r29 + 10d0: 1f 92 push r1 + 10d2: cd b7 in r28, 0x3d ; 61 + 10d4: de b7 in r29, 0x3e ; 62 + 10d6: fc 01 movw r30, r24 + 10d8: 69 83 std Y+1, r22 ; 0x01 + 10da: bc 9a sbi 0x17, 4 ; 23 + 10dc: bb 9a sbi 0x17, 3 ; 23 + 10de: ba 9a sbi 0x17, 2 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 10e0: c4 98 cbi 0x18, 4 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 10e2: bc 9a sbi 0x17, 4 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 10e4: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 10e6: bb 9a sbi 0x17, 3 ; 23 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 10e8: c2 98 cbi 0x18, 2 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 10ea: ba 9a sbi 0x17, 2 ; 23 + 10ec: 8f ef ldi r24, 0xFF ; 255 + 10ee: 9f ef ldi r25, 0xFF ; 255 + 10f0: 92 83 std Z+2, r25 ; 0x02 + 10f2: 81 83 std Z+1, r24 ; 0x01 + 10f4: 8f ef ldi r24, 0xFF ; 255 + 10f6: 83 83 std Z+3, r24 ; 0x03 + 10f8: 14 82 std Z+4, r1 ; 0x04 + this->uart_str_count = 0; + } + } + private: + void init() { + UCSRA = 0; + 10fa: 1b b8 out 0x0b, r1 ; 11 + UCSRB = (1<led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 1110: 85 e5 ldi r24, 0x55 ; 85 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 1112: c3 9a sbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 1114: bb 9a sbi 0x17, 3 ; 23 + UBRRL = (F_CPU / (baudrate * 16L) - 1); + sei(); + } + uint8_t uart_putchar(uint8_t c) { + led.on(led.YELLOW); + loop_until_bit_is_set(UCSRA, UDRE); //Ausgabe des Zeichens + 1116: 5d 9b sbis 0x0b, 5 ; 11 + 1118: fe cf rjmp .-4 ; 0x1116 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x4a> + UDR = c; + 111a: 8c b9 out 0x0c, r24 ; 12 +namespace avrlib { + + struct portb + { + static uint8_t port() { return PORTB; } + static void port(uint8_t v) { PORTB = v; } + 111c: c3 98 cbi 0x18, 3 ; 24 + + static uint8_t pin() { return PINB; } + static void pin(uint8_t v) { PINB = v; } + + static uint8_t dir() { return DDRB; } + static void dir(uint8_t v) { DDRB = v; } + 111e: bb 9a sbi 0x17, 3 ; 23 + init(); + this->led = l; + send("Uart done!\n"); + } + void send(const char *text) { + while (*text) + 1120: 81 91 ld r24, Z+ + 1122: 81 11 cpse r24, r1 + 1124: f6 cf rjmp .-20 ; 0x1112 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE+0x46> public: Usart(ledclass l) { init(); this->led = l; send("Uart done!\n"); } - bca: 0f 90 pop r0 - bcc: df 91 pop r29 - bce: cf 91 pop r28 - bd0: 08 95 ret + 1126: 0f 90 pop r0 + 1128: df 91 pop r29 + 112a: cf 91 pop r28 + 112c: 08 95 ret -00000bd2 <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: +0000112e <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE>: template class Button { public: Button(ledclass l) { - bd2: cf 93 push r28 - bd4: df 93 push r29 - bd6: 1f 92 push r1 - bd8: cd b7 in r28, 0x3d ; 61 - bda: de b7 in r29, 0x3e ; 62 - bdc: 69 83 std Y+1, r22 ; 0x01 - bde: bc 9a sbi 0x17, 4 ; 23 - be0: bb 9a sbi 0x17, 3 ; 23 - be2: ba 9a sbi 0x17, 2 ; 23 + 112e: cf 93 push r28 + 1130: df 93 push r29 + 1132: 1f 92 push r1 + 1134: cd b7 in r28, 0x3d ; 61 + 1136: de b7 in r29, 0x3e ; 62 + 1138: 69 83 std Y+1, r22 ; 0x01 + 113a: bc 9a sbi 0x17, 4 ; 23 + 113c: bb 9a sbi 0x17, 3 ; 23 + 113e: ba 9a sbi 0x17, 2 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - be4: c4 98 cbi 0x18, 4 ; 24 + 1140: c4 98 cbi 0x18, 4 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - be6: bc 9a sbi 0x17, 4 ; 23 + 1142: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - be8: c3 98 cbi 0x18, 3 ; 24 + 1144: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - bea: bb 9a sbi 0x17, 3 ; 23 + 1146: bb 9a sbi 0x17, 3 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - bec: c2 98 cbi 0x18, 2 ; 24 + 1148: c2 98 cbi 0x18, 2 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - bee: ba 9a sbi 0x17, 2 ; 23 + 114a: ba 9a sbi 0x17, 2 ; 23 static uint8_t pin() { return PIND; } static void pin(uint8_t v) { PIND = v; } static uint8_t dir() { return DDRD; } static void dir(uint8_t v) { DDRD = v; } - bf0: 8a 98 cbi 0x11, 2 ; 17 + 114c: 8a 98 cbi 0x11, 2 ; 17 namespace avrlib { struct portd { static uint8_t port() { return PORTD; } static void port(uint8_t v) { PORTD = v; } - bf2: 92 98 cbi 0x12, 2 ; 18 - bf4: 92 9a sbi 0x12, 2 ; 18 + 114e: 92 98 cbi 0x12, 2 ; 18 + 1150: 92 9a sbi 0x12, 2 ; 18 init(); this->led = l; } - bf6: 0f 90 pop r0 - bf8: df 91 pop r29 - bfa: cf 91 pop r28 - bfc: 08 95 ret + 1152: 0f 90 pop r0 + 1154: df 91 pop r29 + 1156: cf 91 pop r28 + 1158: 08 95 ret -00000bfe <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: - bfe: bc 9a sbi 0x17, 4 ; 23 - c00: bb 9a sbi 0x17, 3 ; 23 - c02: ba 9a sbi 0x17, 2 ; 23 +0000115a <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv>: + 115a: bc 9a sbi 0x17, 4 ; 23 + 115c: bb 9a sbi 0x17, 3 ; 23 + 115e: ba 9a sbi 0x17, 2 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - c04: c4 98 cbi 0x18, 4 ; 24 + 1160: c4 98 cbi 0x18, 4 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - c06: bc 9a sbi 0x17, 4 ; 23 + 1162: bc 9a sbi 0x17, 4 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - c08: c3 98 cbi 0x18, 3 ; 24 + 1164: c3 98 cbi 0x18, 3 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - c0a: bb 9a sbi 0x17, 3 ; 23 + 1166: bb 9a sbi 0x17, 3 ; 23 namespace avrlib { struct portb { static uint8_t port() { return PORTB; } static void port(uint8_t v) { PORTB = v; } - c0c: c2 98 cbi 0x18, 2 ; 24 + 1168: c2 98 cbi 0x18, 2 ; 24 static uint8_t pin() { return PINB; } static void pin(uint8_t v) { PINB = v; } static uint8_t dir() { return DDRB; } static void dir(uint8_t v) { DDRB = v; } - c0e: ba 9a sbi 0x17, 2 ; 23 - c10: 08 95 ret + 116a: ba 9a sbi 0x17, 2 ; 23 + 116c: 08 95 ret -00000c12 <_GLOBAL__sub_I_l>: +0000116e <_GLOBAL__sub_I_l>: template class Led { public: Led() { init(); - c12: 81 ed ldi r24, 0xD1 ; 209 - c14: 91 e0 ldi r25, 0x01 ; 1 - c16: 0e 94 ff 05 call 0xbfe ; 0xbfe <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> + 116e: 84 ee ldi r24, 0xE4 ; 228 + 1170: 91 e0 ldi r25, 0x01 ; 1 + 1172: 0e 94 ad 08 call 0x115a ; 0x115a <_ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv> #include "peripheral.h" #include ledclass l; ssrclass o; - c1a: 8a ec ldi r24, 0xCA ; 202 - c1c: 91 e0 ldi r25, 0x01 ; 1 - c1e: 0e 94 a2 05 call 0xb44 ; 0xb44 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev> + 1176: 8d ed ldi r24, 0xDD ; 221 + 1178: 91 e0 ldi r25, 0x01 ; 1 + 117a: 0e 94 4c 08 call 0x1098 ; 0x1098 <_ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev> usartclass r(l); - c22: 60 e0 ldi r22, 0x00 ; 0 - c24: 87 ec ldi r24, 0xC7 ; 199 - c26: 91 e0 ldi r25, 0x01 ; 1 - c28: 0e 94 bc 05 call 0xb78 ; 0xb78 <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE> + 117e: 60 e0 ldi r22, 0x00 ; 0 + 1180: 83 ed ldi r24, 0xD3 ; 211 + 1182: 91 e0 ldi r25, 0x01 ; 1 + 1184: 0e 94 66 08 call 0x10cc ; 0x10cc <_ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE> #include template class Adc { public: Adc() { - c2c: 80 e3 ldi r24, 0x30 ; 48 - c2e: e0 e6 ldi r30, 0x60 ; 96 - c30: f0 e0 ldi r31, 0x00 ; 0 - c32: a7 e9 ldi r26, 0x97 ; 151 - c34: b1 e0 ldi r27, 0x01 ; 1 - c36: 01 90 ld r0, Z+ - c38: 0d 92 st X+, r0 - c3a: 8a 95 dec r24 - c3c: e1 f7 brne .-8 ; 0xc36 <_GLOBAL__sub_I_l+0x24> + 1188: 80 e3 ldi r24, 0x30 ; 48 + 118a: e0 e6 ldi r30, 0x60 ; 96 + 118c: f0 e0 ldi r31, 0x00 ; 0 + 118e: a3 ea ldi r26, 0xA3 ; 163 + 1190: b1 e0 ldi r27, 0x01 ; 1 + 1192: 01 90 ld r0, Z+ + 1194: 0d 92 st X+, r0 + 1196: 8a 95 dec r24 + 1198: e1 f7 brne .-8 ; 0x1192 <_GLOBAL__sub_I_l+0x24> return (m * (float)v) + (-m * v1) + c1; } private: void init() { ADCSRA = (1< - c4e: 08 95 ret + 11a0: 60 e0 ldi r22, 0x00 ; 0 + 11a2: 82 ea ldi r24, 0xA2 ; 162 + 11a4: 91 e0 ldi r25, 0x01 ; 1 + 11a6: 0e 94 97 08 call 0x112e ; 0x112e <_ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE> + 11aa: 08 95 ret -00000c50 <__subsf3>: - c50: 50 58 subi r21, 0x80 ; 128 +000011ac <__subsf3>: + 11ac: 50 58 subi r21, 0x80 ; 128 -00000c52 <__addsf3>: - c52: bb 27 eor r27, r27 - c54: aa 27 eor r26, r26 - c56: 0e d0 rcall .+28 ; 0xc74 <__addsf3x> - c58: 70 c1 rjmp .+736 ; 0xf3a <__fp_round> - c5a: 61 d1 rcall .+706 ; 0xf1e <__fp_pscA> - c5c: 30 f0 brcs .+12 ; 0xc6a <__addsf3+0x18> - c5e: 66 d1 rcall .+716 ; 0xf2c <__fp_pscB> - c60: 20 f0 brcs .+8 ; 0xc6a <__addsf3+0x18> - c62: 31 f4 brne .+12 ; 0xc70 <__addsf3+0x1e> - c64: 9f 3f cpi r25, 0xFF ; 255 - c66: 11 f4 brne .+4 ; 0xc6c <__addsf3+0x1a> - c68: 1e f4 brtc .+6 ; 0xc70 <__addsf3+0x1e> - c6a: 56 c1 rjmp .+684 ; 0xf18 <__fp_nan> - c6c: 0e f4 brtc .+2 ; 0xc70 <__addsf3+0x1e> - c6e: e0 95 com r30 - c70: e7 fb bst r30, 7 - c72: 4c c1 rjmp .+664 ; 0xf0c <__fp_inf> +000011ae <__addsf3>: + 11ae: bb 27 eor r27, r27 + 11b0: aa 27 eor r26, r26 + 11b2: 0e d0 rcall .+28 ; 0x11d0 <__addsf3x> + 11b4: 70 c1 rjmp .+736 ; 0x1496 <__fp_round> + 11b6: 61 d1 rcall .+706 ; 0x147a <__fp_pscA> + 11b8: 30 f0 brcs .+12 ; 0x11c6 <__addsf3+0x18> + 11ba: 66 d1 rcall .+716 ; 0x1488 <__fp_pscB> + 11bc: 20 f0 brcs .+8 ; 0x11c6 <__addsf3+0x18> + 11be: 31 f4 brne .+12 ; 0x11cc <__addsf3+0x1e> + 11c0: 9f 3f cpi r25, 0xFF ; 255 + 11c2: 11 f4 brne .+4 ; 0x11c8 <__addsf3+0x1a> + 11c4: 1e f4 brtc .+6 ; 0x11cc <__addsf3+0x1e> + 11c6: 56 c1 rjmp .+684 ; 0x1474 <__fp_nan> + 11c8: 0e f4 brtc .+2 ; 0x11cc <__addsf3+0x1e> + 11ca: e0 95 com r30 + 11cc: e7 fb bst r30, 7 + 11ce: 4c c1 rjmp .+664 ; 0x1468 <__fp_inf> -00000c74 <__addsf3x>: - c74: e9 2f mov r30, r25 - c76: 72 d1 rcall .+740 ; 0xf5c <__fp_split3> - c78: 80 f3 brcs .-32 ; 0xc5a <__addsf3+0x8> - c7a: ba 17 cp r27, r26 - c7c: 62 07 cpc r22, r18 - c7e: 73 07 cpc r23, r19 - c80: 84 07 cpc r24, r20 - c82: 95 07 cpc r25, r21 - c84: 18 f0 brcs .+6 ; 0xc8c <__addsf3x+0x18> - c86: 71 f4 brne .+28 ; 0xca4 <__addsf3x+0x30> - c88: 9e f5 brtc .+102 ; 0xcf0 <__addsf3x+0x7c> - c8a: 8a c1 rjmp .+788 ; 0xfa0 <__fp_zero> - c8c: 0e f4 brtc .+2 ; 0xc90 <__addsf3x+0x1c> - c8e: e0 95 com r30 - c90: 0b 2e mov r0, r27 - c92: ba 2f mov r27, r26 - c94: a0 2d mov r26, r0 - c96: 0b 01 movw r0, r22 - c98: b9 01 movw r22, r18 - c9a: 90 01 movw r18, r0 - c9c: 0c 01 movw r0, r24 - c9e: ca 01 movw r24, r20 - ca0: a0 01 movw r20, r0 - ca2: 11 24 eor r1, r1 - ca4: ff 27 eor r31, r31 - ca6: 59 1b sub r21, r25 - ca8: 99 f0 breq .+38 ; 0xcd0 <__addsf3x+0x5c> - caa: 59 3f cpi r21, 0xF9 ; 249 - cac: 50 f4 brcc .+20 ; 0xcc2 <__addsf3x+0x4e> - cae: 50 3e cpi r21, 0xE0 ; 224 - cb0: 68 f1 brcs .+90 ; 0xd0c <__addsf3x+0x98> - cb2: 1a 16 cp r1, r26 - cb4: f0 40 sbci r31, 0x00 ; 0 - cb6: a2 2f mov r26, r18 - cb8: 23 2f mov r18, r19 - cba: 34 2f mov r19, r20 - cbc: 44 27 eor r20, r20 - cbe: 58 5f subi r21, 0xF8 ; 248 - cc0: f3 cf rjmp .-26 ; 0xca8 <__addsf3x+0x34> - cc2: 46 95 lsr r20 - cc4: 37 95 ror r19 - cc6: 27 95 ror r18 - cc8: a7 95 ror r26 - cca: f0 40 sbci r31, 0x00 ; 0 - ccc: 53 95 inc r21 - cce: c9 f7 brne .-14 ; 0xcc2 <__addsf3x+0x4e> - cd0: 7e f4 brtc .+30 ; 0xcf0 <__addsf3x+0x7c> - cd2: 1f 16 cp r1, r31 - cd4: ba 0b sbc r27, r26 - cd6: 62 0b sbc r22, r18 - cd8: 73 0b sbc r23, r19 - cda: 84 0b sbc r24, r20 - cdc: ba f0 brmi .+46 ; 0xd0c <__addsf3x+0x98> - cde: 91 50 subi r25, 0x01 ; 1 - ce0: a1 f0 breq .+40 ; 0xd0a <__addsf3x+0x96> - ce2: ff 0f add r31, r31 - ce4: bb 1f adc r27, r27 - ce6: 66 1f adc r22, r22 - ce8: 77 1f adc r23, r23 - cea: 88 1f adc r24, r24 - cec: c2 f7 brpl .-16 ; 0xcde <__addsf3x+0x6a> - cee: 0e c0 rjmp .+28 ; 0xd0c <__addsf3x+0x98> - cf0: ba 0f add r27, r26 - cf2: 62 1f adc r22, r18 - cf4: 73 1f adc r23, r19 - cf6: 84 1f adc r24, r20 - cf8: 48 f4 brcc .+18 ; 0xd0c <__addsf3x+0x98> - cfa: 87 95 ror r24 - cfc: 77 95 ror r23 - cfe: 67 95 ror r22 - d00: b7 95 ror r27 - d02: f7 95 ror r31 - d04: 9e 3f cpi r25, 0xFE ; 254 - d06: 08 f0 brcs .+2 ; 0xd0a <__addsf3x+0x96> - d08: b3 cf rjmp .-154 ; 0xc70 <__addsf3+0x1e> - d0a: 93 95 inc r25 - d0c: 88 0f add r24, r24 - d0e: 08 f0 brcs .+2 ; 0xd12 <__addsf3x+0x9e> - d10: 99 27 eor r25, r25 - d12: ee 0f add r30, r30 - d14: 97 95 ror r25 - d16: 87 95 ror r24 - d18: 08 95 ret +000011d0 <__addsf3x>: + 11d0: e9 2f mov r30, r25 + 11d2: 72 d1 rcall .+740 ; 0x14b8 <__fp_split3> + 11d4: 80 f3 brcs .-32 ; 0x11b6 <__addsf3+0x8> + 11d6: ba 17 cp r27, r26 + 11d8: 62 07 cpc r22, r18 + 11da: 73 07 cpc r23, r19 + 11dc: 84 07 cpc r24, r20 + 11de: 95 07 cpc r25, r21 + 11e0: 18 f0 brcs .+6 ; 0x11e8 <__addsf3x+0x18> + 11e2: 71 f4 brne .+28 ; 0x1200 <__addsf3x+0x30> + 11e4: 9e f5 brtc .+102 ; 0x124c <__addsf3x+0x7c> + 11e6: 8a c1 rjmp .+788 ; 0x14fc <__fp_zero> + 11e8: 0e f4 brtc .+2 ; 0x11ec <__addsf3x+0x1c> + 11ea: e0 95 com r30 + 11ec: 0b 2e mov r0, r27 + 11ee: ba 2f mov r27, r26 + 11f0: a0 2d mov r26, r0 + 11f2: 0b 01 movw r0, r22 + 11f4: b9 01 movw r22, r18 + 11f6: 90 01 movw r18, r0 + 11f8: 0c 01 movw r0, r24 + 11fa: ca 01 movw r24, r20 + 11fc: a0 01 movw r20, r0 + 11fe: 11 24 eor r1, r1 + 1200: ff 27 eor r31, r31 + 1202: 59 1b sub r21, r25 + 1204: 99 f0 breq .+38 ; 0x122c <__addsf3x+0x5c> + 1206: 59 3f cpi r21, 0xF9 ; 249 + 1208: 50 f4 brcc .+20 ; 0x121e <__addsf3x+0x4e> + 120a: 50 3e cpi r21, 0xE0 ; 224 + 120c: 68 f1 brcs .+90 ; 0x1268 <__addsf3x+0x98> + 120e: 1a 16 cp r1, r26 + 1210: f0 40 sbci r31, 0x00 ; 0 + 1212: a2 2f mov r26, r18 + 1214: 23 2f mov r18, r19 + 1216: 34 2f mov r19, r20 + 1218: 44 27 eor r20, r20 + 121a: 58 5f subi r21, 0xF8 ; 248 + 121c: f3 cf rjmp .-26 ; 0x1204 <__addsf3x+0x34> + 121e: 46 95 lsr r20 + 1220: 37 95 ror r19 + 1222: 27 95 ror r18 + 1224: a7 95 ror r26 + 1226: f0 40 sbci r31, 0x00 ; 0 + 1228: 53 95 inc r21 + 122a: c9 f7 brne .-14 ; 0x121e <__addsf3x+0x4e> + 122c: 7e f4 brtc .+30 ; 0x124c <__addsf3x+0x7c> + 122e: 1f 16 cp r1, r31 + 1230: ba 0b sbc r27, r26 + 1232: 62 0b sbc r22, r18 + 1234: 73 0b sbc r23, r19 + 1236: 84 0b sbc r24, r20 + 1238: ba f0 brmi .+46 ; 0x1268 <__addsf3x+0x98> + 123a: 91 50 subi r25, 0x01 ; 1 + 123c: a1 f0 breq .+40 ; 0x1266 <__addsf3x+0x96> + 123e: ff 0f add r31, r31 + 1240: bb 1f adc r27, r27 + 1242: 66 1f adc r22, r22 + 1244: 77 1f adc r23, r23 + 1246: 88 1f adc r24, r24 + 1248: c2 f7 brpl .-16 ; 0x123a <__addsf3x+0x6a> + 124a: 0e c0 rjmp .+28 ; 0x1268 <__addsf3x+0x98> + 124c: ba 0f add r27, r26 + 124e: 62 1f adc r22, r18 + 1250: 73 1f adc r23, r19 + 1252: 84 1f adc r24, r20 + 1254: 48 f4 brcc .+18 ; 0x1268 <__addsf3x+0x98> + 1256: 87 95 ror r24 + 1258: 77 95 ror r23 + 125a: 67 95 ror r22 + 125c: b7 95 ror r27 + 125e: f7 95 ror r31 + 1260: 9e 3f cpi r25, 0xFE ; 254 + 1262: 08 f0 brcs .+2 ; 0x1266 <__addsf3x+0x96> + 1264: b3 cf rjmp .-154 ; 0x11cc <__addsf3+0x1e> + 1266: 93 95 inc r25 + 1268: 88 0f add r24, r24 + 126a: 08 f0 brcs .+2 ; 0x126e <__addsf3x+0x9e> + 126c: 99 27 eor r25, r25 + 126e: ee 0f add r30, r30 + 1270: 97 95 ror r25 + 1272: 87 95 ror r24 + 1274: 08 95 ret -00000d1a <__cmpsf2>: - d1a: d4 d0 rcall .+424 ; 0xec4 <__fp_cmp> - d1c: 08 f4 brcc .+2 ; 0xd20 <__cmpsf2+0x6> - d1e: 81 e0 ldi r24, 0x01 ; 1 - d20: 08 95 ret +00001276 <__cmpsf2>: + 1276: d4 d0 rcall .+424 ; 0x1420 <__fp_cmp> + 1278: 08 f4 brcc .+2 ; 0x127c <__cmpsf2+0x6> + 127a: 81 e0 ldi r24, 0x01 ; 1 + 127c: 08 95 ret -00000d22 <__divsf3>: - d22: 0c d0 rcall .+24 ; 0xd3c <__divsf3x> - d24: 0a c1 rjmp .+532 ; 0xf3a <__fp_round> - d26: 02 d1 rcall .+516 ; 0xf2c <__fp_pscB> - d28: 40 f0 brcs .+16 ; 0xd3a <__divsf3+0x18> - d2a: f9 d0 rcall .+498 ; 0xf1e <__fp_pscA> - d2c: 30 f0 brcs .+12 ; 0xd3a <__divsf3+0x18> - d2e: 21 f4 brne .+8 ; 0xd38 <__divsf3+0x16> - d30: 5f 3f cpi r21, 0xFF ; 255 - d32: 19 f0 breq .+6 ; 0xd3a <__divsf3+0x18> - d34: eb c0 rjmp .+470 ; 0xf0c <__fp_inf> - d36: 51 11 cpse r21, r1 - d38: 34 c1 rjmp .+616 ; 0xfa2 <__fp_szero> - d3a: ee c0 rjmp .+476 ; 0xf18 <__fp_nan> +0000127e <__divsf3>: + 127e: 0c d0 rcall .+24 ; 0x1298 <__divsf3x> + 1280: 0a c1 rjmp .+532 ; 0x1496 <__fp_round> + 1282: 02 d1 rcall .+516 ; 0x1488 <__fp_pscB> + 1284: 40 f0 brcs .+16 ; 0x1296 <__divsf3+0x18> + 1286: f9 d0 rcall .+498 ; 0x147a <__fp_pscA> + 1288: 30 f0 brcs .+12 ; 0x1296 <__divsf3+0x18> + 128a: 21 f4 brne .+8 ; 0x1294 <__divsf3+0x16> + 128c: 5f 3f cpi r21, 0xFF ; 255 + 128e: 19 f0 breq .+6 ; 0x1296 <__divsf3+0x18> + 1290: eb c0 rjmp .+470 ; 0x1468 <__fp_inf> + 1292: 51 11 cpse r21, r1 + 1294: 34 c1 rjmp .+616 ; 0x14fe <__fp_szero> + 1296: ee c0 rjmp .+476 ; 0x1474 <__fp_nan> -00000d3c <__divsf3x>: - d3c: 0f d1 rcall .+542 ; 0xf5c <__fp_split3> - d3e: 98 f3 brcs .-26 ; 0xd26 <__divsf3+0x4> +00001298 <__divsf3x>: + 1298: 0f d1 rcall .+542 ; 0x14b8 <__fp_split3> + 129a: 98 f3 brcs .-26 ; 0x1282 <__divsf3+0x4> -00000d40 <__divsf3_pse>: - d40: 99 23 and r25, r25 - d42: c9 f3 breq .-14 ; 0xd36 <__divsf3+0x14> - d44: 55 23 and r21, r21 - d46: b1 f3 breq .-20 ; 0xd34 <__divsf3+0x12> - d48: 95 1b sub r25, r21 - d4a: 55 0b sbc r21, r21 - d4c: bb 27 eor r27, r27 - d4e: aa 27 eor r26, r26 - d50: 62 17 cp r22, r18 - d52: 73 07 cpc r23, r19 - d54: 84 07 cpc r24, r20 - d56: 38 f0 brcs .+14 ; 0xd66 <__divsf3_pse+0x26> - d58: 9f 5f subi r25, 0xFF ; 255 - d5a: 5f 4f sbci r21, 0xFF ; 255 - d5c: 22 0f add r18, r18 - d5e: 33 1f adc r19, r19 - d60: 44 1f adc r20, r20 - d62: aa 1f adc r26, r26 - d64: a9 f3 breq .-22 ; 0xd50 <__divsf3_pse+0x10> - d66: 33 d0 rcall .+102 ; 0xdce <__divsf3_pse+0x8e> - d68: 0e 2e mov r0, r30 - d6a: 3a f0 brmi .+14 ; 0xd7a <__divsf3_pse+0x3a> - d6c: e0 e8 ldi r30, 0x80 ; 128 - d6e: 30 d0 rcall .+96 ; 0xdd0 <__divsf3_pse+0x90> - d70: 91 50 subi r25, 0x01 ; 1 - d72: 50 40 sbci r21, 0x00 ; 0 - d74: e6 95 lsr r30 - d76: 00 1c adc r0, r0 - d78: ca f7 brpl .-14 ; 0xd6c <__divsf3_pse+0x2c> - d7a: 29 d0 rcall .+82 ; 0xdce <__divsf3_pse+0x8e> - d7c: fe 2f mov r31, r30 - d7e: 27 d0 rcall .+78 ; 0xdce <__divsf3_pse+0x8e> - d80: 66 0f add r22, r22 - d82: 77 1f adc r23, r23 - d84: 88 1f adc r24, r24 - d86: bb 1f adc r27, r27 - d88: 26 17 cp r18, r22 - d8a: 37 07 cpc r19, r23 - d8c: 48 07 cpc r20, r24 - d8e: ab 07 cpc r26, r27 - d90: b0 e8 ldi r27, 0x80 ; 128 - d92: 09 f0 breq .+2 ; 0xd96 <__divsf3_pse+0x56> - d94: bb 0b sbc r27, r27 - d96: 80 2d mov r24, r0 - d98: bf 01 movw r22, r30 - d9a: ff 27 eor r31, r31 - d9c: 93 58 subi r25, 0x83 ; 131 - d9e: 5f 4f sbci r21, 0xFF ; 255 - da0: 2a f0 brmi .+10 ; 0xdac <__divsf3_pse+0x6c> - da2: 9e 3f cpi r25, 0xFE ; 254 - da4: 51 05 cpc r21, r1 - da6: 68 f0 brcs .+26 ; 0xdc2 <__divsf3_pse+0x82> - da8: b1 c0 rjmp .+354 ; 0xf0c <__fp_inf> - daa: fb c0 rjmp .+502 ; 0xfa2 <__fp_szero> - dac: 5f 3f cpi r21, 0xFF ; 255 - dae: ec f3 brlt .-6 ; 0xdaa <__divsf3_pse+0x6a> - db0: 98 3e cpi r25, 0xE8 ; 232 - db2: dc f3 brlt .-10 ; 0xdaa <__divsf3_pse+0x6a> - db4: 86 95 lsr r24 - db6: 77 95 ror r23 - db8: 67 95 ror r22 - dba: b7 95 ror r27 - dbc: f7 95 ror r31 - dbe: 9f 5f subi r25, 0xFF ; 255 - dc0: c9 f7 brne .-14 ; 0xdb4 <__divsf3_pse+0x74> - dc2: 88 0f add r24, r24 - dc4: 91 1d adc r25, r1 - dc6: 96 95 lsr r25 - dc8: 87 95 ror r24 - dca: 97 f9 bld r25, 7 - dcc: 08 95 ret - dce: e1 e0 ldi r30, 0x01 ; 1 - dd0: 66 0f add r22, r22 - dd2: 77 1f adc r23, r23 - dd4: 88 1f adc r24, r24 - dd6: bb 1f adc r27, r27 - dd8: 62 17 cp r22, r18 - dda: 73 07 cpc r23, r19 - ddc: 84 07 cpc r24, r20 - dde: ba 07 cpc r27, r26 - de0: 20 f0 brcs .+8 ; 0xdea <__divsf3_pse+0xaa> - de2: 62 1b sub r22, r18 - de4: 73 0b sbc r23, r19 - de6: 84 0b sbc r24, r20 - de8: ba 0b sbc r27, r26 - dea: ee 1f adc r30, r30 - dec: 88 f7 brcc .-30 ; 0xdd0 <__divsf3_pse+0x90> - dee: e0 95 com r30 - df0: 08 95 ret +0000129c <__divsf3_pse>: + 129c: 99 23 and r25, r25 + 129e: c9 f3 breq .-14 ; 0x1292 <__divsf3+0x14> + 12a0: 55 23 and r21, r21 + 12a2: b1 f3 breq .-20 ; 0x1290 <__divsf3+0x12> + 12a4: 95 1b sub r25, r21 + 12a6: 55 0b sbc r21, r21 + 12a8: bb 27 eor r27, r27 + 12aa: aa 27 eor r26, r26 + 12ac: 62 17 cp r22, r18 + 12ae: 73 07 cpc r23, r19 + 12b0: 84 07 cpc r24, r20 + 12b2: 38 f0 brcs .+14 ; 0x12c2 <__divsf3_pse+0x26> + 12b4: 9f 5f subi r25, 0xFF ; 255 + 12b6: 5f 4f sbci r21, 0xFF ; 255 + 12b8: 22 0f add r18, r18 + 12ba: 33 1f adc r19, r19 + 12bc: 44 1f adc r20, r20 + 12be: aa 1f adc r26, r26 + 12c0: a9 f3 breq .-22 ; 0x12ac <__divsf3_pse+0x10> + 12c2: 33 d0 rcall .+102 ; 0x132a <__divsf3_pse+0x8e> + 12c4: 0e 2e mov r0, r30 + 12c6: 3a f0 brmi .+14 ; 0x12d6 <__divsf3_pse+0x3a> + 12c8: e0 e8 ldi r30, 0x80 ; 128 + 12ca: 30 d0 rcall .+96 ; 0x132c <__divsf3_pse+0x90> + 12cc: 91 50 subi r25, 0x01 ; 1 + 12ce: 50 40 sbci r21, 0x00 ; 0 + 12d0: e6 95 lsr r30 + 12d2: 00 1c adc r0, r0 + 12d4: ca f7 brpl .-14 ; 0x12c8 <__divsf3_pse+0x2c> + 12d6: 29 d0 rcall .+82 ; 0x132a <__divsf3_pse+0x8e> + 12d8: fe 2f mov r31, r30 + 12da: 27 d0 rcall .+78 ; 0x132a <__divsf3_pse+0x8e> + 12dc: 66 0f add r22, r22 + 12de: 77 1f adc r23, r23 + 12e0: 88 1f adc r24, r24 + 12e2: bb 1f adc r27, r27 + 12e4: 26 17 cp r18, r22 + 12e6: 37 07 cpc r19, r23 + 12e8: 48 07 cpc r20, r24 + 12ea: ab 07 cpc r26, r27 + 12ec: b0 e8 ldi r27, 0x80 ; 128 + 12ee: 09 f0 breq .+2 ; 0x12f2 <__divsf3_pse+0x56> + 12f0: bb 0b sbc r27, r27 + 12f2: 80 2d mov r24, r0 + 12f4: bf 01 movw r22, r30 + 12f6: ff 27 eor r31, r31 + 12f8: 93 58 subi r25, 0x83 ; 131 + 12fa: 5f 4f sbci r21, 0xFF ; 255 + 12fc: 2a f0 brmi .+10 ; 0x1308 <__divsf3_pse+0x6c> + 12fe: 9e 3f cpi r25, 0xFE ; 254 + 1300: 51 05 cpc r21, r1 + 1302: 68 f0 brcs .+26 ; 0x131e <__divsf3_pse+0x82> + 1304: b1 c0 rjmp .+354 ; 0x1468 <__fp_inf> + 1306: fb c0 rjmp .+502 ; 0x14fe <__fp_szero> + 1308: 5f 3f cpi r21, 0xFF ; 255 + 130a: ec f3 brlt .-6 ; 0x1306 <__divsf3_pse+0x6a> + 130c: 98 3e cpi r25, 0xE8 ; 232 + 130e: dc f3 brlt .-10 ; 0x1306 <__divsf3_pse+0x6a> + 1310: 86 95 lsr r24 + 1312: 77 95 ror r23 + 1314: 67 95 ror r22 + 1316: b7 95 ror r27 + 1318: f7 95 ror r31 + 131a: 9f 5f subi r25, 0xFF ; 255 + 131c: c9 f7 brne .-14 ; 0x1310 <__divsf3_pse+0x74> + 131e: 88 0f add r24, r24 + 1320: 91 1d adc r25, r1 + 1322: 96 95 lsr r25 + 1324: 87 95 ror r24 + 1326: 97 f9 bld r25, 7 + 1328: 08 95 ret + 132a: e1 e0 ldi r30, 0x01 ; 1 + 132c: 66 0f add r22, r22 + 132e: 77 1f adc r23, r23 + 1330: 88 1f adc r24, r24 + 1332: bb 1f adc r27, r27 + 1334: 62 17 cp r22, r18 + 1336: 73 07 cpc r23, r19 + 1338: 84 07 cpc r24, r20 + 133a: ba 07 cpc r27, r26 + 133c: 20 f0 brcs .+8 ; 0x1346 <__divsf3_pse+0xaa> + 133e: 62 1b sub r22, r18 + 1340: 73 0b sbc r23, r19 + 1342: 84 0b sbc r24, r20 + 1344: ba 0b sbc r27, r26 + 1346: ee 1f adc r30, r30 + 1348: 88 f7 brcc .-30 ; 0x132c <__divsf3_pse+0x90> + 134a: e0 95 com r30 + 134c: 08 95 ret -00000df2 <__fixunssfsi>: - df2: bc d0 rcall .+376 ; 0xf6c <__fp_splitA> - df4: 88 f0 brcs .+34 ; 0xe18 <__fixunssfsi+0x26> - df6: 9f 57 subi r25, 0x7F ; 127 - df8: 90 f0 brcs .+36 ; 0xe1e <__fixunssfsi+0x2c> - dfa: b9 2f mov r27, r25 - dfc: 99 27 eor r25, r25 - dfe: b7 51 subi r27, 0x17 ; 23 - e00: a0 f0 brcs .+40 ; 0xe2a <__fixunssfsi+0x38> - e02: d1 f0 breq .+52 ; 0xe38 <__fixunssfsi+0x46> - e04: 66 0f add r22, r22 - e06: 77 1f adc r23, r23 - e08: 88 1f adc r24, r24 - e0a: 99 1f adc r25, r25 - e0c: 1a f0 brmi .+6 ; 0xe14 <__fixunssfsi+0x22> - e0e: ba 95 dec r27 - e10: c9 f7 brne .-14 ; 0xe04 <__fixunssfsi+0x12> - e12: 12 c0 rjmp .+36 ; 0xe38 <__fixunssfsi+0x46> - e14: b1 30 cpi r27, 0x01 ; 1 - e16: 81 f0 breq .+32 ; 0xe38 <__fixunssfsi+0x46> - e18: c3 d0 rcall .+390 ; 0xfa0 <__fp_zero> - e1a: b1 e0 ldi r27, 0x01 ; 1 - e1c: 08 95 ret - e1e: c0 c0 rjmp .+384 ; 0xfa0 <__fp_zero> - e20: 67 2f mov r22, r23 - e22: 78 2f mov r23, r24 - e24: 88 27 eor r24, r24 - e26: b8 5f subi r27, 0xF8 ; 248 - e28: 39 f0 breq .+14 ; 0xe38 <__fixunssfsi+0x46> - e2a: b9 3f cpi r27, 0xF9 ; 249 - e2c: cc f3 brlt .-14 ; 0xe20 <__fixunssfsi+0x2e> - e2e: 86 95 lsr r24 - e30: 77 95 ror r23 - e32: 67 95 ror r22 - e34: b3 95 inc r27 - e36: d9 f7 brne .-10 ; 0xe2e <__fixunssfsi+0x3c> - e38: 3e f4 brtc .+14 ; 0xe48 <__fixunssfsi+0x56> - e3a: 90 95 com r25 - e3c: 80 95 com r24 - e3e: 70 95 com r23 - e40: 61 95 neg r22 - e42: 7f 4f sbci r23, 0xFF ; 255 - e44: 8f 4f sbci r24, 0xFF ; 255 - e46: 9f 4f sbci r25, 0xFF ; 255 - e48: 08 95 ret +0000134e <__fixunssfsi>: + 134e: bc d0 rcall .+376 ; 0x14c8 <__fp_splitA> + 1350: 88 f0 brcs .+34 ; 0x1374 <__fixunssfsi+0x26> + 1352: 9f 57 subi r25, 0x7F ; 127 + 1354: 90 f0 brcs .+36 ; 0x137a <__fixunssfsi+0x2c> + 1356: b9 2f mov r27, r25 + 1358: 99 27 eor r25, r25 + 135a: b7 51 subi r27, 0x17 ; 23 + 135c: a0 f0 brcs .+40 ; 0x1386 <__fixunssfsi+0x38> + 135e: d1 f0 breq .+52 ; 0x1394 <__fixunssfsi+0x46> + 1360: 66 0f add r22, r22 + 1362: 77 1f adc r23, r23 + 1364: 88 1f adc r24, r24 + 1366: 99 1f adc r25, r25 + 1368: 1a f0 brmi .+6 ; 0x1370 <__fixunssfsi+0x22> + 136a: ba 95 dec r27 + 136c: c9 f7 brne .-14 ; 0x1360 <__fixunssfsi+0x12> + 136e: 12 c0 rjmp .+36 ; 0x1394 <__fixunssfsi+0x46> + 1370: b1 30 cpi r27, 0x01 ; 1 + 1372: 81 f0 breq .+32 ; 0x1394 <__fixunssfsi+0x46> + 1374: c3 d0 rcall .+390 ; 0x14fc <__fp_zero> + 1376: b1 e0 ldi r27, 0x01 ; 1 + 1378: 08 95 ret + 137a: c0 c0 rjmp .+384 ; 0x14fc <__fp_zero> + 137c: 67 2f mov r22, r23 + 137e: 78 2f mov r23, r24 + 1380: 88 27 eor r24, r24 + 1382: b8 5f subi r27, 0xF8 ; 248 + 1384: 39 f0 breq .+14 ; 0x1394 <__fixunssfsi+0x46> + 1386: b9 3f cpi r27, 0xF9 ; 249 + 1388: cc f3 brlt .-14 ; 0x137c <__fixunssfsi+0x2e> + 138a: 86 95 lsr r24 + 138c: 77 95 ror r23 + 138e: 67 95 ror r22 + 1390: b3 95 inc r27 + 1392: d9 f7 brne .-10 ; 0x138a <__fixunssfsi+0x3c> + 1394: 3e f4 brtc .+14 ; 0x13a4 <__fixunssfsi+0x56> + 1396: 90 95 com r25 + 1398: 80 95 com r24 + 139a: 70 95 com r23 + 139c: 61 95 neg r22 + 139e: 7f 4f sbci r23, 0xFF ; 255 + 13a0: 8f 4f sbci r24, 0xFF ; 255 + 13a2: 9f 4f sbci r25, 0xFF ; 255 + 13a4: 08 95 ret -00000e4a <__floatunsisf>: - e4a: e8 94 clt - e4c: 09 c0 rjmp .+18 ; 0xe60 <__floatsisf+0x12> +000013a6 <__floatunsisf>: + 13a6: e8 94 clt + 13a8: 09 c0 rjmp .+18 ; 0x13bc <__floatsisf+0x12> -00000e4e <__floatsisf>: - e4e: 97 fb bst r25, 7 - e50: 3e f4 brtc .+14 ; 0xe60 <__floatsisf+0x12> - e52: 90 95 com r25 - e54: 80 95 com r24 - e56: 70 95 com r23 - e58: 61 95 neg r22 - e5a: 7f 4f sbci r23, 0xFF ; 255 - e5c: 8f 4f sbci r24, 0xFF ; 255 - e5e: 9f 4f sbci r25, 0xFF ; 255 - e60: 99 23 and r25, r25 - e62: a9 f0 breq .+42 ; 0xe8e <__floatsisf+0x40> - e64: f9 2f mov r31, r25 - e66: 96 e9 ldi r25, 0x96 ; 150 - e68: bb 27 eor r27, r27 - e6a: 93 95 inc r25 - e6c: f6 95 lsr r31 - e6e: 87 95 ror r24 - e70: 77 95 ror r23 - e72: 67 95 ror r22 - e74: b7 95 ror r27 - e76: f1 11 cpse r31, r1 - e78: f8 cf rjmp .-16 ; 0xe6a <__floatsisf+0x1c> - e7a: fa f4 brpl .+62 ; 0xeba <__floatsisf+0x6c> - e7c: bb 0f add r27, r27 - e7e: 11 f4 brne .+4 ; 0xe84 <__floatsisf+0x36> - e80: 60 ff sbrs r22, 0 - e82: 1b c0 rjmp .+54 ; 0xeba <__floatsisf+0x6c> - e84: 6f 5f subi r22, 0xFF ; 255 - e86: 7f 4f sbci r23, 0xFF ; 255 - e88: 8f 4f sbci r24, 0xFF ; 255 - e8a: 9f 4f sbci r25, 0xFF ; 255 - e8c: 16 c0 rjmp .+44 ; 0xeba <__floatsisf+0x6c> - e8e: 88 23 and r24, r24 - e90: 11 f0 breq .+4 ; 0xe96 <__floatsisf+0x48> - e92: 96 e9 ldi r25, 0x96 ; 150 - e94: 11 c0 rjmp .+34 ; 0xeb8 <__floatsisf+0x6a> - e96: 77 23 and r23, r23 - e98: 21 f0 breq .+8 ; 0xea2 <__floatsisf+0x54> - e9a: 9e e8 ldi r25, 0x8E ; 142 - e9c: 87 2f mov r24, r23 - e9e: 76 2f mov r23, r22 - ea0: 05 c0 rjmp .+10 ; 0xeac <__floatsisf+0x5e> - ea2: 66 23 and r22, r22 - ea4: 71 f0 breq .+28 ; 0xec2 <__floatsisf+0x74> - ea6: 96 e8 ldi r25, 0x86 ; 134 - ea8: 86 2f mov r24, r22 - eaa: 70 e0 ldi r23, 0x00 ; 0 - eac: 60 e0 ldi r22, 0x00 ; 0 - eae: 2a f0 brmi .+10 ; 0xeba <__floatsisf+0x6c> - eb0: 9a 95 dec r25 - eb2: 66 0f add r22, r22 - eb4: 77 1f adc r23, r23 - eb6: 88 1f adc r24, r24 - eb8: da f7 brpl .-10 ; 0xeb0 <__floatsisf+0x62> - eba: 88 0f add r24, r24 - ebc: 96 95 lsr r25 - ebe: 87 95 ror r24 - ec0: 97 f9 bld r25, 7 - ec2: 08 95 ret +000013aa <__floatsisf>: + 13aa: 97 fb bst r25, 7 + 13ac: 3e f4 brtc .+14 ; 0x13bc <__floatsisf+0x12> + 13ae: 90 95 com r25 + 13b0: 80 95 com r24 + 13b2: 70 95 com r23 + 13b4: 61 95 neg r22 + 13b6: 7f 4f sbci r23, 0xFF ; 255 + 13b8: 8f 4f sbci r24, 0xFF ; 255 + 13ba: 9f 4f sbci r25, 0xFF ; 255 + 13bc: 99 23 and r25, r25 + 13be: a9 f0 breq .+42 ; 0x13ea <__floatsisf+0x40> + 13c0: f9 2f mov r31, r25 + 13c2: 96 e9 ldi r25, 0x96 ; 150 + 13c4: bb 27 eor r27, r27 + 13c6: 93 95 inc r25 + 13c8: f6 95 lsr r31 + 13ca: 87 95 ror r24 + 13cc: 77 95 ror r23 + 13ce: 67 95 ror r22 + 13d0: b7 95 ror r27 + 13d2: f1 11 cpse r31, r1 + 13d4: f8 cf rjmp .-16 ; 0x13c6 <__floatsisf+0x1c> + 13d6: fa f4 brpl .+62 ; 0x1416 <__floatsisf+0x6c> + 13d8: bb 0f add r27, r27 + 13da: 11 f4 brne .+4 ; 0x13e0 <__floatsisf+0x36> + 13dc: 60 ff sbrs r22, 0 + 13de: 1b c0 rjmp .+54 ; 0x1416 <__floatsisf+0x6c> + 13e0: 6f 5f subi r22, 0xFF ; 255 + 13e2: 7f 4f sbci r23, 0xFF ; 255 + 13e4: 8f 4f sbci r24, 0xFF ; 255 + 13e6: 9f 4f sbci r25, 0xFF ; 255 + 13e8: 16 c0 rjmp .+44 ; 0x1416 <__floatsisf+0x6c> + 13ea: 88 23 and r24, r24 + 13ec: 11 f0 breq .+4 ; 0x13f2 <__floatsisf+0x48> + 13ee: 96 e9 ldi r25, 0x96 ; 150 + 13f0: 11 c0 rjmp .+34 ; 0x1414 <__floatsisf+0x6a> + 13f2: 77 23 and r23, r23 + 13f4: 21 f0 breq .+8 ; 0x13fe <__floatsisf+0x54> + 13f6: 9e e8 ldi r25, 0x8E ; 142 + 13f8: 87 2f mov r24, r23 + 13fa: 76 2f mov r23, r22 + 13fc: 05 c0 rjmp .+10 ; 0x1408 <__floatsisf+0x5e> + 13fe: 66 23 and r22, r22 + 1400: 71 f0 breq .+28 ; 0x141e <__floatsisf+0x74> + 1402: 96 e8 ldi r25, 0x86 ; 134 + 1404: 86 2f mov r24, r22 + 1406: 70 e0 ldi r23, 0x00 ; 0 + 1408: 60 e0 ldi r22, 0x00 ; 0 + 140a: 2a f0 brmi .+10 ; 0x1416 <__floatsisf+0x6c> + 140c: 9a 95 dec r25 + 140e: 66 0f add r22, r22 + 1410: 77 1f adc r23, r23 + 1412: 88 1f adc r24, r24 + 1414: da f7 brpl .-10 ; 0x140c <__floatsisf+0x62> + 1416: 88 0f add r24, r24 + 1418: 96 95 lsr r25 + 141a: 87 95 ror r24 + 141c: 97 f9 bld r25, 7 + 141e: 08 95 ret -00000ec4 <__fp_cmp>: - ec4: 99 0f add r25, r25 - ec6: 00 08 sbc r0, r0 - ec8: 55 0f add r21, r21 - eca: aa 0b sbc r26, r26 - ecc: e0 e8 ldi r30, 0x80 ; 128 - ece: fe ef ldi r31, 0xFE ; 254 - ed0: 16 16 cp r1, r22 - ed2: 17 06 cpc r1, r23 - ed4: e8 07 cpc r30, r24 - ed6: f9 07 cpc r31, r25 - ed8: c0 f0 brcs .+48 ; 0xf0a <__fp_cmp+0x46> - eda: 12 16 cp r1, r18 - edc: 13 06 cpc r1, r19 - ede: e4 07 cpc r30, r20 - ee0: f5 07 cpc r31, r21 - ee2: 98 f0 brcs .+38 ; 0xf0a <__fp_cmp+0x46> - ee4: 62 1b sub r22, r18 - ee6: 73 0b sbc r23, r19 - ee8: 84 0b sbc r24, r20 - eea: 95 0b sbc r25, r21 - eec: 39 f4 brne .+14 ; 0xefc <__fp_cmp+0x38> - eee: 0a 26 eor r0, r26 - ef0: 61 f0 breq .+24 ; 0xf0a <__fp_cmp+0x46> - ef2: 23 2b or r18, r19 - ef4: 24 2b or r18, r20 - ef6: 25 2b or r18, r21 - ef8: 21 f4 brne .+8 ; 0xf02 <__fp_cmp+0x3e> - efa: 08 95 ret - efc: 0a 26 eor r0, r26 - efe: 09 f4 brne .+2 ; 0xf02 <__fp_cmp+0x3e> - f00: a1 40 sbci r26, 0x01 ; 1 - f02: a6 95 lsr r26 - f04: 8f ef ldi r24, 0xFF ; 255 - f06: 81 1d adc r24, r1 - f08: 81 1d adc r24, r1 - f0a: 08 95 ret +00001420 <__fp_cmp>: + 1420: 99 0f add r25, r25 + 1422: 00 08 sbc r0, r0 + 1424: 55 0f add r21, r21 + 1426: aa 0b sbc r26, r26 + 1428: e0 e8 ldi r30, 0x80 ; 128 + 142a: fe ef ldi r31, 0xFE ; 254 + 142c: 16 16 cp r1, r22 + 142e: 17 06 cpc r1, r23 + 1430: e8 07 cpc r30, r24 + 1432: f9 07 cpc r31, r25 + 1434: c0 f0 brcs .+48 ; 0x1466 <__fp_cmp+0x46> + 1436: 12 16 cp r1, r18 + 1438: 13 06 cpc r1, r19 + 143a: e4 07 cpc r30, r20 + 143c: f5 07 cpc r31, r21 + 143e: 98 f0 brcs .+38 ; 0x1466 <__fp_cmp+0x46> + 1440: 62 1b sub r22, r18 + 1442: 73 0b sbc r23, r19 + 1444: 84 0b sbc r24, r20 + 1446: 95 0b sbc r25, r21 + 1448: 39 f4 brne .+14 ; 0x1458 <__fp_cmp+0x38> + 144a: 0a 26 eor r0, r26 + 144c: 61 f0 breq .+24 ; 0x1466 <__fp_cmp+0x46> + 144e: 23 2b or r18, r19 + 1450: 24 2b or r18, r20 + 1452: 25 2b or r18, r21 + 1454: 21 f4 brne .+8 ; 0x145e <__fp_cmp+0x3e> + 1456: 08 95 ret + 1458: 0a 26 eor r0, r26 + 145a: 09 f4 brne .+2 ; 0x145e <__fp_cmp+0x3e> + 145c: a1 40 sbci r26, 0x01 ; 1 + 145e: a6 95 lsr r26 + 1460: 8f ef ldi r24, 0xFF ; 255 + 1462: 81 1d adc r24, r1 + 1464: 81 1d adc r24, r1 + 1466: 08 95 ret -00000f0c <__fp_inf>: - f0c: 97 f9 bld r25, 7 - f0e: 9f 67 ori r25, 0x7F ; 127 - f10: 80 e8 ldi r24, 0x80 ; 128 - f12: 70 e0 ldi r23, 0x00 ; 0 - f14: 60 e0 ldi r22, 0x00 ; 0 - f16: 08 95 ret +00001468 <__fp_inf>: + 1468: 97 f9 bld r25, 7 + 146a: 9f 67 ori r25, 0x7F ; 127 + 146c: 80 e8 ldi r24, 0x80 ; 128 + 146e: 70 e0 ldi r23, 0x00 ; 0 + 1470: 60 e0 ldi r22, 0x00 ; 0 + 1472: 08 95 ret -00000f18 <__fp_nan>: - f18: 9f ef ldi r25, 0xFF ; 255 - f1a: 80 ec ldi r24, 0xC0 ; 192 - f1c: 08 95 ret +00001474 <__fp_nan>: + 1474: 9f ef ldi r25, 0xFF ; 255 + 1476: 80 ec ldi r24, 0xC0 ; 192 + 1478: 08 95 ret -00000f1e <__fp_pscA>: - f1e: 00 24 eor r0, r0 - f20: 0a 94 dec r0 - f22: 16 16 cp r1, r22 - f24: 17 06 cpc r1, r23 - f26: 18 06 cpc r1, r24 - f28: 09 06 cpc r0, r25 - f2a: 08 95 ret +0000147a <__fp_pscA>: + 147a: 00 24 eor r0, r0 + 147c: 0a 94 dec r0 + 147e: 16 16 cp r1, r22 + 1480: 17 06 cpc r1, r23 + 1482: 18 06 cpc r1, r24 + 1484: 09 06 cpc r0, r25 + 1486: 08 95 ret -00000f2c <__fp_pscB>: - f2c: 00 24 eor r0, r0 - f2e: 0a 94 dec r0 - f30: 12 16 cp r1, r18 - f32: 13 06 cpc r1, r19 - f34: 14 06 cpc r1, r20 - f36: 05 06 cpc r0, r21 - f38: 08 95 ret +00001488 <__fp_pscB>: + 1488: 00 24 eor r0, r0 + 148a: 0a 94 dec r0 + 148c: 12 16 cp r1, r18 + 148e: 13 06 cpc r1, r19 + 1490: 14 06 cpc r1, r20 + 1492: 05 06 cpc r0, r21 + 1494: 08 95 ret -00000f3a <__fp_round>: - f3a: 09 2e mov r0, r25 - f3c: 03 94 inc r0 - f3e: 00 0c add r0, r0 - f40: 11 f4 brne .+4 ; 0xf46 <__fp_round+0xc> - f42: 88 23 and r24, r24 - f44: 52 f0 brmi .+20 ; 0xf5a <__fp_round+0x20> - f46: bb 0f add r27, r27 - f48: 40 f4 brcc .+16 ; 0xf5a <__fp_round+0x20> - f4a: bf 2b or r27, r31 - f4c: 11 f4 brne .+4 ; 0xf52 <__fp_round+0x18> - f4e: 60 ff sbrs r22, 0 - f50: 04 c0 rjmp .+8 ; 0xf5a <__fp_round+0x20> - f52: 6f 5f subi r22, 0xFF ; 255 - f54: 7f 4f sbci r23, 0xFF ; 255 - f56: 8f 4f sbci r24, 0xFF ; 255 - f58: 9f 4f sbci r25, 0xFF ; 255 - f5a: 08 95 ret +00001496 <__fp_round>: + 1496: 09 2e mov r0, r25 + 1498: 03 94 inc r0 + 149a: 00 0c add r0, r0 + 149c: 11 f4 brne .+4 ; 0x14a2 <__fp_round+0xc> + 149e: 88 23 and r24, r24 + 14a0: 52 f0 brmi .+20 ; 0x14b6 <__fp_round+0x20> + 14a2: bb 0f add r27, r27 + 14a4: 40 f4 brcc .+16 ; 0x14b6 <__fp_round+0x20> + 14a6: bf 2b or r27, r31 + 14a8: 11 f4 brne .+4 ; 0x14ae <__fp_round+0x18> + 14aa: 60 ff sbrs r22, 0 + 14ac: 04 c0 rjmp .+8 ; 0x14b6 <__fp_round+0x20> + 14ae: 6f 5f subi r22, 0xFF ; 255 + 14b0: 7f 4f sbci r23, 0xFF ; 255 + 14b2: 8f 4f sbci r24, 0xFF ; 255 + 14b4: 9f 4f sbci r25, 0xFF ; 255 + 14b6: 08 95 ret -00000f5c <__fp_split3>: - f5c: 57 fd sbrc r21, 7 - f5e: 90 58 subi r25, 0x80 ; 128 - f60: 44 0f add r20, r20 - f62: 55 1f adc r21, r21 - f64: 59 f0 breq .+22 ; 0xf7c <__fp_splitA+0x10> - f66: 5f 3f cpi r21, 0xFF ; 255 - f68: 71 f0 breq .+28 ; 0xf86 <__fp_splitA+0x1a> - f6a: 47 95 ror r20 +000014b8 <__fp_split3>: + 14b8: 57 fd sbrc r21, 7 + 14ba: 90 58 subi r25, 0x80 ; 128 + 14bc: 44 0f add r20, r20 + 14be: 55 1f adc r21, r21 + 14c0: 59 f0 breq .+22 ; 0x14d8 <__fp_splitA+0x10> + 14c2: 5f 3f cpi r21, 0xFF ; 255 + 14c4: 71 f0 breq .+28 ; 0x14e2 <__fp_splitA+0x1a> + 14c6: 47 95 ror r20 -00000f6c <__fp_splitA>: - f6c: 88 0f add r24, r24 - f6e: 97 fb bst r25, 7 - f70: 99 1f adc r25, r25 - f72: 61 f0 breq .+24 ; 0xf8c <__fp_splitA+0x20> - f74: 9f 3f cpi r25, 0xFF ; 255 - f76: 79 f0 breq .+30 ; 0xf96 <__fp_splitA+0x2a> - f78: 87 95 ror r24 - f7a: 08 95 ret - f7c: 12 16 cp r1, r18 - f7e: 13 06 cpc r1, r19 - f80: 14 06 cpc r1, r20 - f82: 55 1f adc r21, r21 - f84: f2 cf rjmp .-28 ; 0xf6a <__fp_split3+0xe> - f86: 46 95 lsr r20 - f88: f1 df rcall .-30 ; 0xf6c <__fp_splitA> - f8a: 08 c0 rjmp .+16 ; 0xf9c <__fp_splitA+0x30> - f8c: 16 16 cp r1, r22 - f8e: 17 06 cpc r1, r23 - f90: 18 06 cpc r1, r24 - f92: 99 1f adc r25, r25 - f94: f1 cf rjmp .-30 ; 0xf78 <__fp_splitA+0xc> - f96: 86 95 lsr r24 - f98: 71 05 cpc r23, r1 - f9a: 61 05 cpc r22, r1 - f9c: 08 94 sec - f9e: 08 95 ret +000014c8 <__fp_splitA>: + 14c8: 88 0f add r24, r24 + 14ca: 97 fb bst r25, 7 + 14cc: 99 1f adc r25, r25 + 14ce: 61 f0 breq .+24 ; 0x14e8 <__fp_splitA+0x20> + 14d0: 9f 3f cpi r25, 0xFF ; 255 + 14d2: 79 f0 breq .+30 ; 0x14f2 <__fp_splitA+0x2a> + 14d4: 87 95 ror r24 + 14d6: 08 95 ret + 14d8: 12 16 cp r1, r18 + 14da: 13 06 cpc r1, r19 + 14dc: 14 06 cpc r1, r20 + 14de: 55 1f adc r21, r21 + 14e0: f2 cf rjmp .-28 ; 0x14c6 <__fp_split3+0xe> + 14e2: 46 95 lsr r20 + 14e4: f1 df rcall .-30 ; 0x14c8 <__fp_splitA> + 14e6: 08 c0 rjmp .+16 ; 0x14f8 <__fp_splitA+0x30> + 14e8: 16 16 cp r1, r22 + 14ea: 17 06 cpc r1, r23 + 14ec: 18 06 cpc r1, r24 + 14ee: 99 1f adc r25, r25 + 14f0: f1 cf rjmp .-30 ; 0x14d4 <__fp_splitA+0xc> + 14f2: 86 95 lsr r24 + 14f4: 71 05 cpc r23, r1 + 14f6: 61 05 cpc r22, r1 + 14f8: 08 94 sec + 14fa: 08 95 ret -00000fa0 <__fp_zero>: - fa0: e8 94 clt +000014fc <__fp_zero>: + 14fc: e8 94 clt -00000fa2 <__fp_szero>: - fa2: bb 27 eor r27, r27 - fa4: 66 27 eor r22, r22 - fa6: 77 27 eor r23, r23 - fa8: cb 01 movw r24, r22 - faa: 97 f9 bld r25, 7 - fac: 08 95 ret +000014fe <__fp_szero>: + 14fe: bb 27 eor r27, r27 + 1500: 66 27 eor r22, r22 + 1502: 77 27 eor r23, r23 + 1504: cb 01 movw r24, r22 + 1506: 97 f9 bld r25, 7 + 1508: 08 95 ret -00000fae <__gesf2>: - fae: 8a df rcall .-236 ; 0xec4 <__fp_cmp> - fb0: 08 f4 brcc .+2 ; 0xfb4 <__gesf2+0x6> - fb2: 8f ef ldi r24, 0xFF ; 255 - fb4: 08 95 ret +0000150a <__gesf2>: + 150a: 8a df rcall .-236 ; 0x1420 <__fp_cmp> + 150c: 08 f4 brcc .+2 ; 0x1510 <__gesf2+0x6> + 150e: 8f ef ldi r24, 0xFF ; 255 + 1510: 08 95 ret -00000fb6 <__mulsf3>: - fb6: 0b d0 rcall .+22 ; 0xfce <__mulsf3x> - fb8: c0 cf rjmp .-128 ; 0xf3a <__fp_round> - fba: b1 df rcall .-158 ; 0xf1e <__fp_pscA> - fbc: 28 f0 brcs .+10 ; 0xfc8 <__mulsf3+0x12> - fbe: b6 df rcall .-148 ; 0xf2c <__fp_pscB> - fc0: 18 f0 brcs .+6 ; 0xfc8 <__mulsf3+0x12> - fc2: 95 23 and r25, r21 - fc4: 09 f0 breq .+2 ; 0xfc8 <__mulsf3+0x12> - fc6: a2 cf rjmp .-188 ; 0xf0c <__fp_inf> - fc8: a7 cf rjmp .-178 ; 0xf18 <__fp_nan> - fca: 11 24 eor r1, r1 - fcc: ea cf rjmp .-44 ; 0xfa2 <__fp_szero> +00001512 <__mulsf3>: + 1512: 0b d0 rcall .+22 ; 0x152a <__mulsf3x> + 1514: c0 cf rjmp .-128 ; 0x1496 <__fp_round> + 1516: b1 df rcall .-158 ; 0x147a <__fp_pscA> + 1518: 28 f0 brcs .+10 ; 0x1524 <__mulsf3+0x12> + 151a: b6 df rcall .-148 ; 0x1488 <__fp_pscB> + 151c: 18 f0 brcs .+6 ; 0x1524 <__mulsf3+0x12> + 151e: 95 23 and r25, r21 + 1520: 09 f0 breq .+2 ; 0x1524 <__mulsf3+0x12> + 1522: a2 cf rjmp .-188 ; 0x1468 <__fp_inf> + 1524: a7 cf rjmp .-178 ; 0x1474 <__fp_nan> + 1526: 11 24 eor r1, r1 + 1528: ea cf rjmp .-44 ; 0x14fe <__fp_szero> -00000fce <__mulsf3x>: - fce: c6 df rcall .-116 ; 0xf5c <__fp_split3> - fd0: a0 f3 brcs .-24 ; 0xfba <__mulsf3+0x4> +0000152a <__mulsf3x>: + 152a: c6 df rcall .-116 ; 0x14b8 <__fp_split3> + 152c: a0 f3 brcs .-24 ; 0x1516 <__mulsf3+0x4> -00000fd2 <__mulsf3_pse>: - fd2: 95 9f mul r25, r21 - fd4: d1 f3 breq .-12 ; 0xfca <__mulsf3+0x14> - fd6: 95 0f add r25, r21 - fd8: 50 e0 ldi r21, 0x00 ; 0 - fda: 55 1f adc r21, r21 - fdc: 62 9f mul r22, r18 - fde: f0 01 movw r30, r0 - fe0: 72 9f mul r23, r18 - fe2: bb 27 eor r27, r27 - fe4: f0 0d add r31, r0 - fe6: b1 1d adc r27, r1 - fe8: 63 9f mul r22, r19 - fea: aa 27 eor r26, r26 - fec: f0 0d add r31, r0 - fee: b1 1d adc r27, r1 - ff0: aa 1f adc r26, r26 - ff2: 64 9f mul r22, r20 - ff4: 66 27 eor r22, r22 - ff6: b0 0d add r27, r0 - ff8: a1 1d adc r26, r1 - ffa: 66 1f adc r22, r22 - ffc: 82 9f mul r24, r18 - ffe: 22 27 eor r18, r18 - 1000: b0 0d add r27, r0 - 1002: a1 1d adc r26, r1 - 1004: 62 1f adc r22, r18 - 1006: 73 9f mul r23, r19 - 1008: b0 0d add r27, r0 - 100a: a1 1d adc r26, r1 - 100c: 62 1f adc r22, r18 - 100e: 83 9f mul r24, r19 - 1010: a0 0d add r26, r0 - 1012: 61 1d adc r22, r1 - 1014: 22 1f adc r18, r18 - 1016: 74 9f mul r23, r20 - 1018: 33 27 eor r19, r19 - 101a: a0 0d add r26, r0 - 101c: 61 1d adc r22, r1 - 101e: 23 1f adc r18, r19 - 1020: 84 9f mul r24, r20 - 1022: 60 0d add r22, r0 - 1024: 21 1d adc r18, r1 - 1026: 82 2f mov r24, r18 - 1028: 76 2f mov r23, r22 - 102a: 6a 2f mov r22, r26 - 102c: 11 24 eor r1, r1 - 102e: 9f 57 subi r25, 0x7F ; 127 - 1030: 50 40 sbci r21, 0x00 ; 0 - 1032: 8a f0 brmi .+34 ; 0x1056 <__mulsf3_pse+0x84> - 1034: e1 f0 breq .+56 ; 0x106e <__mulsf3_pse+0x9c> - 1036: 88 23 and r24, r24 - 1038: 4a f0 brmi .+18 ; 0x104c <__mulsf3_pse+0x7a> - 103a: ee 0f add r30, r30 - 103c: ff 1f adc r31, r31 - 103e: bb 1f adc r27, r27 - 1040: 66 1f adc r22, r22 - 1042: 77 1f adc r23, r23 - 1044: 88 1f adc r24, r24 - 1046: 91 50 subi r25, 0x01 ; 1 - 1048: 50 40 sbci r21, 0x00 ; 0 - 104a: a9 f7 brne .-22 ; 0x1036 <__mulsf3_pse+0x64> - 104c: 9e 3f cpi r25, 0xFE ; 254 - 104e: 51 05 cpc r21, r1 - 1050: 70 f0 brcs .+28 ; 0x106e <__mulsf3_pse+0x9c> - 1052: 5c cf rjmp .-328 ; 0xf0c <__fp_inf> - 1054: a6 cf rjmp .-180 ; 0xfa2 <__fp_szero> - 1056: 5f 3f cpi r21, 0xFF ; 255 - 1058: ec f3 brlt .-6 ; 0x1054 <__mulsf3_pse+0x82> - 105a: 98 3e cpi r25, 0xE8 ; 232 - 105c: dc f3 brlt .-10 ; 0x1054 <__mulsf3_pse+0x82> - 105e: 86 95 lsr r24 - 1060: 77 95 ror r23 - 1062: 67 95 ror r22 - 1064: b7 95 ror r27 - 1066: f7 95 ror r31 - 1068: e7 95 ror r30 - 106a: 9f 5f subi r25, 0xFF ; 255 - 106c: c1 f7 brne .-16 ; 0x105e <__mulsf3_pse+0x8c> - 106e: fe 2b or r31, r30 - 1070: 88 0f add r24, r24 - 1072: 91 1d adc r25, r1 - 1074: 96 95 lsr r25 - 1076: 87 95 ror r24 - 1078: 97 f9 bld r25, 7 - 107a: 08 95 ret +0000152e <__mulsf3_pse>: + 152e: 95 9f mul r25, r21 + 1530: d1 f3 breq .-12 ; 0x1526 <__mulsf3+0x14> + 1532: 95 0f add r25, r21 + 1534: 50 e0 ldi r21, 0x00 ; 0 + 1536: 55 1f adc r21, r21 + 1538: 62 9f mul r22, r18 + 153a: f0 01 movw r30, r0 + 153c: 72 9f mul r23, r18 + 153e: bb 27 eor r27, r27 + 1540: f0 0d add r31, r0 + 1542: b1 1d adc r27, r1 + 1544: 63 9f mul r22, r19 + 1546: aa 27 eor r26, r26 + 1548: f0 0d add r31, r0 + 154a: b1 1d adc r27, r1 + 154c: aa 1f adc r26, r26 + 154e: 64 9f mul r22, r20 + 1550: 66 27 eor r22, r22 + 1552: b0 0d add r27, r0 + 1554: a1 1d adc r26, r1 + 1556: 66 1f adc r22, r22 + 1558: 82 9f mul r24, r18 + 155a: 22 27 eor r18, r18 + 155c: b0 0d add r27, r0 + 155e: a1 1d adc r26, r1 + 1560: 62 1f adc r22, r18 + 1562: 73 9f mul r23, r19 + 1564: b0 0d add r27, r0 + 1566: a1 1d adc r26, r1 + 1568: 62 1f adc r22, r18 + 156a: 83 9f mul r24, r19 + 156c: a0 0d add r26, r0 + 156e: 61 1d adc r22, r1 + 1570: 22 1f adc r18, r18 + 1572: 74 9f mul r23, r20 + 1574: 33 27 eor r19, r19 + 1576: a0 0d add r26, r0 + 1578: 61 1d adc r22, r1 + 157a: 23 1f adc r18, r19 + 157c: 84 9f mul r24, r20 + 157e: 60 0d add r22, r0 + 1580: 21 1d adc r18, r1 + 1582: 82 2f mov r24, r18 + 1584: 76 2f mov r23, r22 + 1586: 6a 2f mov r22, r26 + 1588: 11 24 eor r1, r1 + 158a: 9f 57 subi r25, 0x7F ; 127 + 158c: 50 40 sbci r21, 0x00 ; 0 + 158e: 8a f0 brmi .+34 ; 0x15b2 <__mulsf3_pse+0x84> + 1590: e1 f0 breq .+56 ; 0x15ca <__mulsf3_pse+0x9c> + 1592: 88 23 and r24, r24 + 1594: 4a f0 brmi .+18 ; 0x15a8 <__mulsf3_pse+0x7a> + 1596: ee 0f add r30, r30 + 1598: ff 1f adc r31, r31 + 159a: bb 1f adc r27, r27 + 159c: 66 1f adc r22, r22 + 159e: 77 1f adc r23, r23 + 15a0: 88 1f adc r24, r24 + 15a2: 91 50 subi r25, 0x01 ; 1 + 15a4: 50 40 sbci r21, 0x00 ; 0 + 15a6: a9 f7 brne .-22 ; 0x1592 <__mulsf3_pse+0x64> + 15a8: 9e 3f cpi r25, 0xFE ; 254 + 15aa: 51 05 cpc r21, r1 + 15ac: 70 f0 brcs .+28 ; 0x15ca <__mulsf3_pse+0x9c> + 15ae: 5c cf rjmp .-328 ; 0x1468 <__fp_inf> + 15b0: a6 cf rjmp .-180 ; 0x14fe <__fp_szero> + 15b2: 5f 3f cpi r21, 0xFF ; 255 + 15b4: ec f3 brlt .-6 ; 0x15b0 <__mulsf3_pse+0x82> + 15b6: 98 3e cpi r25, 0xE8 ; 232 + 15b8: dc f3 brlt .-10 ; 0x15b0 <__mulsf3_pse+0x82> + 15ba: 86 95 lsr r24 + 15bc: 77 95 ror r23 + 15be: 67 95 ror r22 + 15c0: b7 95 ror r27 + 15c2: f7 95 ror r31 + 15c4: e7 95 ror r30 + 15c6: 9f 5f subi r25, 0xFF ; 255 + 15c8: c1 f7 brne .-16 ; 0x15ba <__mulsf3_pse+0x8c> + 15ca: fe 2b or r31, r30 + 15cc: 88 0f add r24, r24 + 15ce: 91 1d adc r25, r1 + 15d0: 96 95 lsr r25 + 15d2: 87 95 ror r24 + 15d4: 97 f9 bld r25, 7 + 15d6: 08 95 ret -0000107c <__tablejump2__>: - 107c: ee 0f add r30, r30 - 107e: ff 1f adc r31, r31 +000015d8 <__divmodhi4>: + 15d8: 97 fb bst r25, 7 + 15da: 07 2e mov r0, r23 + 15dc: 16 f4 brtc .+4 ; 0x15e2 <__divmodhi4+0xa> + 15de: 00 94 com r0 + 15e0: 07 d0 rcall .+14 ; 0x15f0 <__divmodhi4_neg1> + 15e2: 77 fd sbrc r23, 7 + 15e4: 09 d0 rcall .+18 ; 0x15f8 <__divmodhi4_neg2> + 15e6: 0e 94 0c 0b call 0x1618 ; 0x1618 <__udivmodhi4> + 15ea: 07 fc sbrc r0, 7 + 15ec: 05 d0 rcall .+10 ; 0x15f8 <__divmodhi4_neg2> + 15ee: 3e f4 brtc .+14 ; 0x15fe <__divmodhi4_exit> -00001080 <__tablejump__>: - 1080: 05 90 lpm r0, Z+ - 1082: f4 91 lpm r31, Z - 1084: e0 2d mov r30, r0 - 1086: 09 94 ijmp +000015f0 <__divmodhi4_neg1>: + 15f0: 90 95 com r25 + 15f2: 81 95 neg r24 + 15f4: 9f 4f sbci r25, 0xFF ; 255 + 15f6: 08 95 ret -00001088 : - 1088: ef 92 push r14 - 108a: 0f 93 push r16 - 108c: 1f 93 push r17 - 108e: cf 93 push r28 - 1090: c0 2f mov r28, r16 - 1092: 47 ff sbrs r20, 7 - 1094: 02 c0 rjmp .+4 ; 0x109a - 1096: 34 e1 ldi r19, 0x14 ; 20 - 1098: 01 c0 rjmp .+2 ; 0x109c - 109a: 34 e0 ldi r19, 0x04 ; 4 - 109c: e4 2f mov r30, r20 - 109e: ff 27 eor r31, r31 - 10a0: e7 fd sbrc r30, 7 - 10a2: f0 95 com r31 - 10a4: f7 ff sbrs r31, 7 - 10a6: 03 c0 rjmp .+6 ; 0x10ae - 10a8: f1 95 neg r31 - 10aa: e1 95 neg r30 - 10ac: f1 09 sbc r31, r1 - 10ae: e3 2e mov r14, r19 - 10b0: 02 2f mov r16, r18 - 10b2: 2e 2f mov r18, r30 - 10b4: 4c 2f mov r20, r28 - 10b6: 51 2f mov r21, r17 - 10b8: 0e 94 7b 08 call 0x10f6 ; 0x10f6 - 10bc: 8c 2f mov r24, r28 - 10be: 91 2f mov r25, r17 - 10c0: cf 91 pop r28 - 10c2: 1f 91 pop r17 - 10c4: 0f 91 pop r16 - 10c6: ef 90 pop r14 - 10c8: 08 95 ret +000015f8 <__divmodhi4_neg2>: + 15f8: 70 95 com r23 + 15fa: 61 95 neg r22 + 15fc: 7f 4f sbci r23, 0xFF ; 255 -000010ca : - 10ca: fb 01 movw r30, r22 - 10cc: 9f 01 movw r18, r30 - 10ce: 42 30 cpi r20, 0x02 ; 2 - 10d0: 74 f0 brlt .+28 ; 0x10ee - 10d2: 45 32 cpi r20, 0x25 ; 37 - 10d4: 64 f4 brge .+24 ; 0x10ee - 10d6: 64 2f mov r22, r20 - 10d8: 77 27 eor r23, r23 - 10da: 0e 94 e0 0a call 0x15c0 ; 0x15c0 <__udivmodhi4> - 10de: 80 5d subi r24, 0xD0 ; 208 - 10e0: 8a 33 cpi r24, 0x3A ; 58 - 10e2: 0c f0 brlt .+2 ; 0x10e6 - 10e4: 89 5d subi r24, 0xD9 ; 217 - 10e6: 81 93 st Z+, r24 - 10e8: cb 01 movw r24, r22 - 10ea: 00 97 sbiw r24, 0x00 ; 0 - 10ec: a1 f7 brne .-24 ; 0x10d6 - 10ee: 10 82 st Z, r1 - 10f0: c9 01 movw r24, r18 - 10f2: 0c 94 d0 0a jmp 0x15a0 ; 0x15a0 +000015fe <__divmodhi4_exit>: + 15fe: 08 95 ret -000010f6 : - 10f6: 6f 92 push r6 - 10f8: 7f 92 push r7 - 10fa: 9f 92 push r9 - 10fc: af 92 push r10 - 10fe: bf 92 push r11 - 1100: cf 92 push r12 - 1102: df 92 push r13 - 1104: ef 92 push r14 - 1106: ff 92 push r15 - 1108: 0f 93 push r16 - 110a: 1f 93 push r17 - 110c: cf 93 push r28 - 110e: df 93 push r29 - 1110: cd b7 in r28, 0x3d ; 61 - 1112: de b7 in r29, 0x3e ; 62 - 1114: 29 97 sbiw r28, 0x09 ; 9 - 1116: 0f b6 in r0, 0x3f ; 63 - 1118: f8 94 cli - 111a: de bf out 0x3e, r29 ; 62 - 111c: 0f be out 0x3f, r0 ; 63 - 111e: cd bf out 0x3d, r28 ; 61 - 1120: 6a 01 movw r12, r20 - 1122: b2 2e mov r11, r18 - 1124: 10 2f mov r17, r16 - 1126: 0c 33 cpi r16, 0x3C ; 60 - 1128: 18 f4 brcc .+6 ; 0x1130 - 112a: f0 2e mov r15, r16 - 112c: f3 94 inc r15 - 112e: 02 c0 rjmp .+4 ; 0x1134 - 1130: 5c e3 ldi r21, 0x3C ; 60 - 1132: f5 2e mov r15, r21 - 1134: 0f 2d mov r16, r15 - 1136: 27 e0 ldi r18, 0x07 ; 7 - 1138: ae 01 movw r20, r28 - 113a: 4f 5f subi r20, 0xFF ; 255 - 113c: 5f 4f sbci r21, 0xFF ; 255 - 113e: 0e 94 f8 09 call 0x13f0 ; 0x13f0 <__ftoa_engine> - 1142: 79 81 ldd r23, Y+1 ; 0x01 - 1144: 27 2f mov r18, r23 - 1146: 29 70 andi r18, 0x09 ; 9 - 1148: 21 30 cpi r18, 0x01 ; 1 - 114a: 31 f0 breq .+12 ; 0x1158 - 114c: e1 fc sbrc r14, 1 - 114e: 06 c0 rjmp .+12 ; 0x115c - 1150: e0 fe sbrs r14, 0 - 1152: 06 c0 rjmp .+12 ; 0x1160 - 1154: 60 e2 ldi r22, 0x20 ; 32 - 1156: 05 c0 rjmp .+10 ; 0x1162 - 1158: 6d e2 ldi r22, 0x2D ; 45 - 115a: 03 c0 rjmp .+6 ; 0x1162 - 115c: 6b e2 ldi r22, 0x2B ; 43 - 115e: 01 c0 rjmp .+2 ; 0x1162 - 1160: 60 e0 ldi r22, 0x00 ; 0 - 1162: 73 ff sbrs r23, 3 - 1164: 3d c0 rjmp .+122 ; 0x11e0 - 1166: 66 23 and r22, r22 - 1168: 11 f0 breq .+4 ; 0x116e - 116a: 84 e0 ldi r24, 0x04 ; 4 - 116c: 01 c0 rjmp .+2 ; 0x1170 - 116e: 83 e0 ldi r24, 0x03 ; 3 - 1170: 8b 15 cp r24, r11 - 1172: 10 f4 brcc .+4 ; 0x1178 - 1174: b8 1a sub r11, r24 - 1176: 01 c0 rjmp .+2 ; 0x117a - 1178: b1 2c mov r11, r1 - 117a: e4 fc sbrc r14, 4 - 117c: 0b c0 rjmp .+22 ; 0x1194 - 117e: 8b 2d mov r24, r11 - 1180: f6 01 movw r30, r12 - 1182: 90 e2 ldi r25, 0x20 ; 32 - 1184: 02 c0 rjmp .+4 ; 0x118a - 1186: 91 93 st Z+, r25 - 1188: 81 50 subi r24, 0x01 ; 1 - 118a: 81 11 cpse r24, r1 - 118c: fc cf rjmp .-8 ; 0x1186 - 118e: cb 0c add r12, r11 - 1190: d1 1c adc r13, r1 - 1192: b1 2c mov r11, r1 - 1194: 66 23 and r22, r22 - 1196: 19 f0 breq .+6 ; 0x119e - 1198: d6 01 movw r26, r12 - 119a: 6d 93 st X+, r22 - 119c: 6d 01 movw r12, r26 - 119e: e2 fe sbrs r14, 2 - 11a0: 0a c0 rjmp .+20 ; 0x11b6 - 11a2: 8e e4 ldi r24, 0x4E ; 78 - 11a4: f6 01 movw r30, r12 - 11a6: 80 83 st Z, r24 - 11a8: 91 e4 ldi r25, 0x41 ; 65 - 11aa: 91 83 std Z+1, r25 ; 0x01 - 11ac: 82 83 std Z+2, r24 ; 0x02 - 11ae: f3 e0 ldi r31, 0x03 ; 3 - 11b0: cf 0e add r12, r31 - 11b2: d1 1c adc r13, r1 - 11b4: 0c c0 rjmp .+24 ; 0x11ce - 11b6: 8e e6 ldi r24, 0x6E ; 110 - 11b8: d6 01 movw r26, r12 - 11ba: 8c 93 st X, r24 - 11bc: 91 e6 ldi r25, 0x61 ; 97 - 11be: 11 96 adiw r26, 0x01 ; 1 - 11c0: 9c 93 st X, r25 - 11c2: 11 97 sbiw r26, 0x01 ; 1 - 11c4: 12 96 adiw r26, 0x02 ; 2 - 11c6: 8c 93 st X, r24 - 11c8: b3 e0 ldi r27, 0x03 ; 3 - 11ca: cb 0e add r12, r27 - 11cc: d1 1c adc r13, r1 - 11ce: 8b 2d mov r24, r11 - 11d0: f6 01 movw r30, r12 - 11d2: 90 e2 ldi r25, 0x20 ; 32 - 11d4: 02 c0 rjmp .+4 ; 0x11da - 11d6: 91 93 st Z+, r25 - 11d8: 81 50 subi r24, 0x01 ; 1 - 11da: 81 11 cpse r24, r1 - 11dc: fc cf rjmp .-8 ; 0x11d6 - 11de: 40 c0 rjmp .+128 ; 0x1260 - 11e0: 72 ff sbrs r23, 2 - 11e2: 45 c0 rjmp .+138 ; 0x126e - 11e4: 66 23 and r22, r22 - 11e6: 11 f0 breq .+4 ; 0x11ec - 11e8: 84 e0 ldi r24, 0x04 ; 4 - 11ea: 01 c0 rjmp .+2 ; 0x11ee - 11ec: 83 e0 ldi r24, 0x03 ; 3 - 11ee: 8b 15 cp r24, r11 - 11f0: 10 f4 brcc .+4 ; 0x11f6 - 11f2: b8 1a sub r11, r24 - 11f4: 01 c0 rjmp .+2 ; 0x11f8 - 11f6: b1 2c mov r11, r1 - 11f8: e4 fc sbrc r14, 4 - 11fa: 0b c0 rjmp .+22 ; 0x1212 - 11fc: 8b 2d mov r24, r11 - 11fe: f6 01 movw r30, r12 - 1200: 90 e2 ldi r25, 0x20 ; 32 - 1202: 02 c0 rjmp .+4 ; 0x1208 - 1204: 91 93 st Z+, r25 - 1206: 81 50 subi r24, 0x01 ; 1 - 1208: 81 11 cpse r24, r1 - 120a: fc cf rjmp .-8 ; 0x1204 - 120c: cb 0c add r12, r11 - 120e: d1 1c adc r13, r1 - 1210: b1 2c mov r11, r1 - 1212: 66 23 and r22, r22 - 1214: 19 f0 breq .+6 ; 0x121c - 1216: f6 01 movw r30, r12 - 1218: 61 93 st Z+, r22 - 121a: 6f 01 movw r12, r30 - 121c: e2 fe sbrs r14, 2 - 121e: 0e c0 rjmp .+28 ; 0x123c - 1220: 89 e4 ldi r24, 0x49 ; 73 - 1222: d6 01 movw r26, r12 - 1224: 8c 93 st X, r24 - 1226: 8e e4 ldi r24, 0x4E ; 78 - 1228: 11 96 adiw r26, 0x01 ; 1 - 122a: 8c 93 st X, r24 - 122c: 11 97 sbiw r26, 0x01 ; 1 - 122e: 86 e4 ldi r24, 0x46 ; 70 - 1230: 12 96 adiw r26, 0x02 ; 2 - 1232: 8c 93 st X, r24 - 1234: b3 e0 ldi r27, 0x03 ; 3 - 1236: cb 0e add r12, r27 - 1238: d1 1c adc r13, r1 - 123a: 0a c0 rjmp .+20 ; 0x1250 - 123c: 89 e6 ldi r24, 0x69 ; 105 - 123e: f6 01 movw r30, r12 - 1240: 80 83 st Z, r24 - 1242: 8e e6 ldi r24, 0x6E ; 110 - 1244: 81 83 std Z+1, r24 ; 0x01 - 1246: 86 e6 ldi r24, 0x66 ; 102 - 1248: 82 83 std Z+2, r24 ; 0x02 - 124a: f3 e0 ldi r31, 0x03 ; 3 - 124c: cf 0e add r12, r31 - 124e: d1 1c adc r13, r1 - 1250: 8b 2d mov r24, r11 - 1252: f6 01 movw r30, r12 - 1254: 90 e2 ldi r25, 0x20 ; 32 - 1256: 02 c0 rjmp .+4 ; 0x125c - 1258: 91 93 st Z+, r25 - 125a: 81 50 subi r24, 0x01 ; 1 - 125c: 81 11 cpse r24, r1 - 125e: fc cf rjmp .-8 ; 0x1258 - 1260: f6 01 movw r30, r12 - 1262: eb 0d add r30, r11 - 1264: f1 1d adc r31, r1 - 1266: 10 82 st Z, r1 - 1268: 2e ef ldi r18, 0xFE ; 254 - 126a: 3f ef ldi r19, 0xFF ; 255 - 126c: ac c0 rjmp .+344 ; 0x13c6 - 126e: a1 e0 ldi r26, 0x01 ; 1 - 1270: 61 11 cpse r22, r1 - 1272: 01 c0 rjmp .+2 ; 0x1276 - 1274: a0 e0 ldi r26, 0x00 ; 0 - 1276: 4a 2f mov r20, r26 - 1278: 50 e0 ldi r21, 0x00 ; 0 - 127a: 18 16 cp r1, r24 - 127c: 19 06 cpc r1, r25 - 127e: 24 f4 brge .+8 ; 0x1288 - 1280: 9c 01 movw r18, r24 - 1282: 2f 5f subi r18, 0xFF ; 255 - 1284: 3f 4f sbci r19, 0xFF ; 255 - 1286: 02 c0 rjmp .+4 ; 0x128c - 1288: 21 e0 ldi r18, 0x01 ; 1 - 128a: 30 e0 ldi r19, 0x00 ; 0 - 128c: 24 0f add r18, r20 - 128e: 35 1f adc r19, r21 - 1290: 11 23 and r17, r17 - 1292: 29 f0 breq .+10 ; 0x129e - 1294: 41 2f mov r20, r17 - 1296: 50 e0 ldi r21, 0x00 ; 0 - 1298: 4f 5f subi r20, 0xFF ; 255 - 129a: 5f 4f sbci r21, 0xFF ; 255 - 129c: 02 c0 rjmp .+4 ; 0x12a2 - 129e: 40 e0 ldi r20, 0x00 ; 0 - 12a0: 50 e0 ldi r21, 0x00 ; 0 - 12a2: 42 0f add r20, r18 - 12a4: 53 1f adc r21, r19 - 12a6: 2b 2d mov r18, r11 - 12a8: 30 e0 ldi r19, 0x00 ; 0 - 12aa: 42 17 cp r20, r18 - 12ac: 53 07 cpc r21, r19 - 12ae: 14 f4 brge .+4 ; 0x12b4 - 12b0: b4 1a sub r11, r20 - 12b2: 01 c0 rjmp .+2 ; 0x12b6 - 12b4: b1 2c mov r11, r1 - 12b6: 3e 2d mov r19, r14 - 12b8: 30 71 andi r19, 0x10 ; 16 - 12ba: e4 fc sbrc r14, 4 - 12bc: 0d c0 rjmp .+26 ; 0x12d8 - 12be: e3 fc sbrc r14, 3 - 12c0: 0b c0 rjmp .+22 ; 0x12d8 - 12c2: 2b 2d mov r18, r11 - 12c4: f6 01 movw r30, r12 - 12c6: 40 e2 ldi r20, 0x20 ; 32 - 12c8: 02 c0 rjmp .+4 ; 0x12ce - 12ca: 41 93 st Z+, r20 - 12cc: 21 50 subi r18, 0x01 ; 1 - 12ce: 21 11 cpse r18, r1 - 12d0: fc cf rjmp .-8 ; 0x12ca - 12d2: cb 0c add r12, r11 - 12d4: d1 1c adc r13, r1 - 12d6: b1 2c mov r11, r1 - 12d8: aa 23 and r26, r26 - 12da: 19 f0 breq .+6 ; 0x12e2 - 12dc: d6 01 movw r26, r12 - 12de: 6d 93 st X+, r22 - 12e0: 6d 01 movw r12, r26 - 12e2: 31 11 cpse r19, r1 - 12e4: 0b c0 rjmp .+22 ; 0x12fc - 12e6: 2b 2d mov r18, r11 - 12e8: f6 01 movw r30, r12 - 12ea: 30 e3 ldi r19, 0x30 ; 48 - 12ec: 02 c0 rjmp .+4 ; 0x12f2 - 12ee: 31 93 st Z+, r19 - 12f0: 21 50 subi r18, 0x01 ; 1 - 12f2: 21 11 cpse r18, r1 - 12f4: fc cf rjmp .-8 ; 0x12ee - 12f6: cb 0c add r12, r11 - 12f8: d1 1c adc r13, r1 - 12fa: b1 2c mov r11, r1 - 12fc: f8 0e add r15, r24 - 12fe: 0a 81 ldd r16, Y+2 ; 0x02 - 1300: 40 e1 ldi r20, 0x10 ; 16 - 1302: a4 2e mov r10, r20 - 1304: a7 22 and r10, r23 - 1306: 74 ff sbrs r23, 4 - 1308: 03 c0 rjmp .+6 ; 0x1310 - 130a: 01 33 cpi r16, 0x31 ; 49 - 130c: 09 f4 brne .+2 ; 0x1310 - 130e: fa 94 dec r15 - 1310: 1f 14 cp r1, r15 - 1312: 2c f4 brge .+10 ; 0x131e - 1314: 2f 2d mov r18, r15 - 1316: 29 30 cpi r18, 0x09 ; 9 - 1318: 18 f0 brcs .+6 ; 0x1320 - 131a: 28 e0 ldi r18, 0x08 ; 8 - 131c: 01 c0 rjmp .+2 ; 0x1320 - 131e: 21 e0 ldi r18, 0x01 ; 1 - 1320: ac 01 movw r20, r24 - 1322: 97 ff sbrs r25, 7 - 1324: 02 c0 rjmp .+4 ; 0x132a - 1326: 40 e0 ldi r20, 0x00 ; 0 - 1328: 50 e0 ldi r21, 0x00 ; 0 - 132a: 60 e0 ldi r22, 0x00 ; 0 - 132c: 70 e0 ldi r23, 0x00 ; 0 - 132e: 3e e2 ldi r19, 0x2E ; 46 - 1330: 93 2e mov r9, r19 - 1332: fc 01 movw r30, r24 - 1334: e2 1b sub r30, r18 - 1336: f1 09 sbc r31, r1 - 1338: 9f 01 movw r18, r30 - 133a: dc 01 movw r26, r24 - 133c: a4 1b sub r26, r20 - 133e: b5 0b sbc r27, r21 - 1340: fe 01 movw r30, r28 - 1342: 31 96 adiw r30, 0x01 ; 1 - 1344: ea 0f add r30, r26 - 1346: fb 1f adc r31, r27 - 1348: a1 2f mov r26, r17 - 134a: b0 e0 ldi r27, 0x00 ; 0 - 134c: 66 24 eor r6, r6 - 134e: 77 24 eor r7, r7 - 1350: 6a 1a sub r6, r26 - 1352: 7b 0a sbc r7, r27 - 1354: 4f 3f cpi r20, 0xFF ; 255 - 1356: 1f ef ldi r17, 0xFF ; 255 - 1358: 51 07 cpc r21, r17 - 135a: 19 f4 brne .+6 ; 0x1362 - 135c: d6 01 movw r26, r12 - 135e: 9d 92 st X+, r9 - 1360: 6d 01 movw r12, r26 - 1362: 84 17 cp r24, r20 - 1364: 95 07 cpc r25, r21 - 1366: 54 f0 brlt .+20 ; 0x137c - 1368: 24 17 cp r18, r20 - 136a: 35 07 cpc r19, r21 - 136c: 3c f4 brge .+14 ; 0x137c - 136e: 7f 01 movw r14, r30 - 1370: e6 0e add r14, r22 - 1372: f7 1e adc r15, r23 - 1374: d7 01 movw r26, r14 - 1376: 11 96 adiw r26, 0x01 ; 1 - 1378: 1c 91 ld r17, X - 137a: 01 c0 rjmp .+2 ; 0x137e - 137c: 10 e3 ldi r17, 0x30 ; 48 - 137e: 41 50 subi r20, 0x01 ; 1 - 1380: 51 09 sbc r21, r1 - 1382: 6f 5f subi r22, 0xFF ; 255 - 1384: 7f 4f sbci r23, 0xFF ; 255 - 1386: 46 15 cp r20, r6 - 1388: 57 05 cpc r21, r7 - 138a: 24 f0 brlt .+8 ; 0x1394 - 138c: d6 01 movw r26, r12 - 138e: 1d 93 st X+, r17 - 1390: 6d 01 movw r12, r26 - 1392: e0 cf rjmp .-64 ; 0x1354 - 1394: 48 17 cp r20, r24 - 1396: 59 07 cpc r21, r25 - 1398: 39 f4 brne .+14 ; 0x13a8 - 139a: 06 33 cpi r16, 0x36 ; 54 - 139c: 20 f4 brcc .+8 ; 0x13a6 - 139e: 05 33 cpi r16, 0x35 ; 53 - 13a0: 19 f4 brne .+6 ; 0x13a8 - 13a2: a1 10 cpse r10, r1 - 13a4: 01 c0 rjmp .+2 ; 0x13a8 - 13a6: 11 e3 ldi r17, 0x31 ; 49 - 13a8: f6 01 movw r30, r12 - 13aa: 11 93 st Z+, r17 - 13ac: 8b 2d mov r24, r11 - 13ae: df 01 movw r26, r30 - 13b0: 90 e2 ldi r25, 0x20 ; 32 - 13b2: 02 c0 rjmp .+4 ; 0x13b8 - 13b4: 9d 93 st X+, r25 - 13b6: 81 50 subi r24, 0x01 ; 1 - 13b8: 81 11 cpse r24, r1 - 13ba: fc cf rjmp .-8 ; 0x13b4 - 13bc: eb 0d add r30, r11 - 13be: f1 1d adc r31, r1 - 13c0: 10 82 st Z, r1 - 13c2: 20 e0 ldi r18, 0x00 ; 0 - 13c4: 30 e0 ldi r19, 0x00 ; 0 - 13c6: c9 01 movw r24, r18 - 13c8: 29 96 adiw r28, 0x09 ; 9 - 13ca: 0f b6 in r0, 0x3f ; 63 - 13cc: f8 94 cli - 13ce: de bf out 0x3e, r29 ; 62 - 13d0: 0f be out 0x3f, r0 ; 63 - 13d2: cd bf out 0x3d, r28 ; 61 - 13d4: df 91 pop r29 - 13d6: cf 91 pop r28 - 13d8: 1f 91 pop r17 - 13da: 0f 91 pop r16 - 13dc: ff 90 pop r15 - 13de: ef 90 pop r14 - 13e0: df 90 pop r13 - 13e2: cf 90 pop r12 - 13e4: bf 90 pop r11 - 13e6: af 90 pop r10 - 13e8: 9f 90 pop r9 - 13ea: 7f 90 pop r7 - 13ec: 6f 90 pop r6 - 13ee: 08 95 ret +00001600 <__umulhisi3>: + 1600: a2 9f mul r26, r18 + 1602: b0 01 movw r22, r0 + 1604: b3 9f mul r27, r19 + 1606: c0 01 movw r24, r0 + 1608: a3 9f mul r26, r19 + 160a: 01 d0 rcall .+2 ; 0x160e <__umulhisi3+0xe> + 160c: b2 9f mul r27, r18 + 160e: 70 0d add r23, r0 + 1610: 81 1d adc r24, r1 + 1612: 11 24 eor r1, r1 + 1614: 91 1d adc r25, r1 + 1616: 08 95 ret -000013f0 <__ftoa_engine>: - 13f0: 28 30 cpi r18, 0x08 ; 8 - 13f2: 08 f0 brcs .+2 ; 0x13f6 <__ftoa_engine+0x6> - 13f4: 27 e0 ldi r18, 0x07 ; 7 - 13f6: 33 27 eor r19, r19 - 13f8: da 01 movw r26, r20 - 13fa: 99 0f add r25, r25 - 13fc: 31 1d adc r19, r1 - 13fe: 87 fd sbrc r24, 7 - 1400: 91 60 ori r25, 0x01 ; 1 - 1402: 00 96 adiw r24, 0x00 ; 0 - 1404: 61 05 cpc r22, r1 - 1406: 71 05 cpc r23, r1 - 1408: 39 f4 brne .+14 ; 0x1418 <__ftoa_engine+0x28> - 140a: 32 60 ori r19, 0x02 ; 2 - 140c: 2e 5f subi r18, 0xFE ; 254 - 140e: 3d 93 st X+, r19 - 1410: 30 e3 ldi r19, 0x30 ; 48 - 1412: 2a 95 dec r18 - 1414: e1 f7 brne .-8 ; 0x140e <__ftoa_engine+0x1e> - 1416: 08 95 ret - 1418: 9f 3f cpi r25, 0xFF ; 255 - 141a: 30 f0 brcs .+12 ; 0x1428 <__ftoa_engine+0x38> - 141c: 80 38 cpi r24, 0x80 ; 128 - 141e: 71 05 cpc r23, r1 - 1420: 61 05 cpc r22, r1 - 1422: 09 f0 breq .+2 ; 0x1426 <__ftoa_engine+0x36> - 1424: 3c 5f subi r19, 0xFC ; 252 - 1426: 3c 5f subi r19, 0xFC ; 252 - 1428: 3d 93 st X+, r19 - 142a: 91 30 cpi r25, 0x01 ; 1 - 142c: 08 f0 brcs .+2 ; 0x1430 <__ftoa_engine+0x40> - 142e: 80 68 ori r24, 0x80 ; 128 - 1430: 91 1d adc r25, r1 - 1432: df 93 push r29 - 1434: cf 93 push r28 - 1436: 1f 93 push r17 - 1438: 0f 93 push r16 - 143a: ff 92 push r15 - 143c: ef 92 push r14 - 143e: 19 2f mov r17, r25 - 1440: 98 7f andi r25, 0xF8 ; 248 - 1442: 96 95 lsr r25 - 1444: e9 2f mov r30, r25 - 1446: 96 95 lsr r25 - 1448: 96 95 lsr r25 - 144a: e9 0f add r30, r25 - 144c: ff 27 eor r31, r31 - 144e: e2 55 subi r30, 0x52 ; 82 - 1450: ff 4f sbci r31, 0xFF ; 255 - 1452: 99 27 eor r25, r25 - 1454: 33 27 eor r19, r19 - 1456: ee 24 eor r14, r14 - 1458: ff 24 eor r15, r15 - 145a: a7 01 movw r20, r14 - 145c: e7 01 movw r28, r14 - 145e: 05 90 lpm r0, Z+ - 1460: 08 94 sec - 1462: 07 94 ror r0 - 1464: 28 f4 brcc .+10 ; 0x1470 <__ftoa_engine+0x80> - 1466: 36 0f add r19, r22 - 1468: e7 1e adc r14, r23 - 146a: f8 1e adc r15, r24 - 146c: 49 1f adc r20, r25 - 146e: 51 1d adc r21, r1 - 1470: 66 0f add r22, r22 - 1472: 77 1f adc r23, r23 - 1474: 88 1f adc r24, r24 - 1476: 99 1f adc r25, r25 - 1478: 06 94 lsr r0 - 147a: a1 f7 brne .-24 ; 0x1464 <__ftoa_engine+0x74> - 147c: 05 90 lpm r0, Z+ - 147e: 07 94 ror r0 - 1480: 28 f4 brcc .+10 ; 0x148c <__ftoa_engine+0x9c> - 1482: e7 0e add r14, r23 - 1484: f8 1e adc r15, r24 - 1486: 49 1f adc r20, r25 - 1488: 56 1f adc r21, r22 - 148a: c1 1d adc r28, r1 - 148c: 77 0f add r23, r23 - 148e: 88 1f adc r24, r24 - 1490: 99 1f adc r25, r25 - 1492: 66 1f adc r22, r22 - 1494: 06 94 lsr r0 - 1496: a1 f7 brne .-24 ; 0x1480 <__ftoa_engine+0x90> - 1498: 05 90 lpm r0, Z+ - 149a: 07 94 ror r0 - 149c: 28 f4 brcc .+10 ; 0x14a8 <__ftoa_engine+0xb8> - 149e: f8 0e add r15, r24 - 14a0: 49 1f adc r20, r25 - 14a2: 56 1f adc r21, r22 - 14a4: c7 1f adc r28, r23 - 14a6: d1 1d adc r29, r1 - 14a8: 88 0f add r24, r24 - 14aa: 99 1f adc r25, r25 - 14ac: 66 1f adc r22, r22 - 14ae: 77 1f adc r23, r23 - 14b0: 06 94 lsr r0 - 14b2: a1 f7 brne .-24 ; 0x149c <__ftoa_engine+0xac> - 14b4: 05 90 lpm r0, Z+ - 14b6: 07 94 ror r0 - 14b8: 20 f4 brcc .+8 ; 0x14c2 <__ftoa_engine+0xd2> - 14ba: 49 0f add r20, r25 - 14bc: 56 1f adc r21, r22 - 14be: c7 1f adc r28, r23 - 14c0: d8 1f adc r29, r24 - 14c2: 99 0f add r25, r25 - 14c4: 66 1f adc r22, r22 - 14c6: 77 1f adc r23, r23 - 14c8: 88 1f adc r24, r24 - 14ca: 06 94 lsr r0 - 14cc: a9 f7 brne .-22 ; 0x14b8 <__ftoa_engine+0xc8> - 14ce: 84 91 lpm r24, Z - 14d0: 10 95 com r17 - 14d2: 17 70 andi r17, 0x07 ; 7 - 14d4: 41 f0 breq .+16 ; 0x14e6 <__ftoa_engine+0xf6> - 14d6: d6 95 lsr r29 - 14d8: c7 95 ror r28 - 14da: 57 95 ror r21 - 14dc: 47 95 ror r20 - 14de: f7 94 ror r15 - 14e0: e7 94 ror r14 - 14e2: 1a 95 dec r17 - 14e4: c1 f7 brne .-16 ; 0x14d6 <__ftoa_engine+0xe6> - 14e6: e4 e5 ldi r30, 0x54 ; 84 - 14e8: f0 e0 ldi r31, 0x00 ; 0 - 14ea: 68 94 set - 14ec: 15 90 lpm r1, Z+ - 14ee: 15 91 lpm r17, Z+ - 14f0: 35 91 lpm r19, Z+ - 14f2: 65 91 lpm r22, Z+ - 14f4: 95 91 lpm r25, Z+ - 14f6: 05 90 lpm r0, Z+ - 14f8: 7f e2 ldi r23, 0x2F ; 47 - 14fa: 73 95 inc r23 - 14fc: e1 18 sub r14, r1 - 14fe: f1 0a sbc r15, r17 - 1500: 43 0b sbc r20, r19 - 1502: 56 0b sbc r21, r22 - 1504: c9 0b sbc r28, r25 - 1506: d0 09 sbc r29, r0 - 1508: c0 f7 brcc .-16 ; 0x14fa <__ftoa_engine+0x10a> - 150a: e1 0c add r14, r1 - 150c: f1 1e adc r15, r17 - 150e: 43 1f adc r20, r19 - 1510: 56 1f adc r21, r22 - 1512: c9 1f adc r28, r25 - 1514: d0 1d adc r29, r0 - 1516: 7e f4 brtc .+30 ; 0x1536 <__ftoa_engine+0x146> - 1518: 70 33 cpi r23, 0x30 ; 48 - 151a: 11 f4 brne .+4 ; 0x1520 <__ftoa_engine+0x130> - 151c: 8a 95 dec r24 - 151e: e6 cf rjmp .-52 ; 0x14ec <__ftoa_engine+0xfc> - 1520: e8 94 clt - 1522: 01 50 subi r16, 0x01 ; 1 - 1524: 30 f0 brcs .+12 ; 0x1532 <__ftoa_engine+0x142> - 1526: 08 0f add r16, r24 - 1528: 0a f4 brpl .+2 ; 0x152c <__ftoa_engine+0x13c> - 152a: 00 27 eor r16, r16 - 152c: 02 17 cp r16, r18 - 152e: 08 f4 brcc .+2 ; 0x1532 <__ftoa_engine+0x142> - 1530: 20 2f mov r18, r16 - 1532: 23 95 inc r18 - 1534: 02 2f mov r16, r18 - 1536: 7a 33 cpi r23, 0x3A ; 58 - 1538: 28 f0 brcs .+10 ; 0x1544 <__ftoa_engine+0x154> - 153a: 79 e3 ldi r23, 0x39 ; 57 - 153c: 7d 93 st X+, r23 - 153e: 2a 95 dec r18 - 1540: e9 f7 brne .-6 ; 0x153c <__ftoa_engine+0x14c> - 1542: 10 c0 rjmp .+32 ; 0x1564 <__ftoa_engine+0x174> - 1544: 7d 93 st X+, r23 - 1546: 2a 95 dec r18 - 1548: 89 f6 brne .-94 ; 0x14ec <__ftoa_engine+0xfc> - 154a: 06 94 lsr r0 - 154c: 97 95 ror r25 - 154e: 67 95 ror r22 - 1550: 37 95 ror r19 - 1552: 17 95 ror r17 - 1554: 17 94 ror r1 - 1556: e1 18 sub r14, r1 - 1558: f1 0a sbc r15, r17 - 155a: 43 0b sbc r20, r19 - 155c: 56 0b sbc r21, r22 - 155e: c9 0b sbc r28, r25 - 1560: d0 09 sbc r29, r0 - 1562: 98 f0 brcs .+38 ; 0x158a <__ftoa_engine+0x19a> - 1564: 23 95 inc r18 - 1566: 7e 91 ld r23, -X - 1568: 73 95 inc r23 - 156a: 7a 33 cpi r23, 0x3A ; 58 - 156c: 08 f0 brcs .+2 ; 0x1570 <__ftoa_engine+0x180> - 156e: 70 e3 ldi r23, 0x30 ; 48 - 1570: 7c 93 st X, r23 - 1572: 20 13 cpse r18, r16 - 1574: b8 f7 brcc .-18 ; 0x1564 <__ftoa_engine+0x174> - 1576: 7e 91 ld r23, -X - 1578: 70 61 ori r23, 0x10 ; 16 - 157a: 7d 93 st X+, r23 - 157c: 30 f0 brcs .+12 ; 0x158a <__ftoa_engine+0x19a> - 157e: 83 95 inc r24 - 1580: 71 e3 ldi r23, 0x31 ; 49 - 1582: 7d 93 st X+, r23 - 1584: 70 e3 ldi r23, 0x30 ; 48 - 1586: 2a 95 dec r18 - 1588: e1 f7 brne .-8 ; 0x1582 <__ftoa_engine+0x192> - 158a: 11 24 eor r1, r1 - 158c: ef 90 pop r14 - 158e: ff 90 pop r15 - 1590: 0f 91 pop r16 - 1592: 1f 91 pop r17 - 1594: cf 91 pop r28 - 1596: df 91 pop r29 - 1598: 99 27 eor r25, r25 - 159a: 87 fd sbrc r24, 7 - 159c: 90 95 com r25 - 159e: 08 95 ret +00001618 <__udivmodhi4>: + 1618: aa 1b sub r26, r26 + 161a: bb 1b sub r27, r27 + 161c: 51 e1 ldi r21, 0x11 ; 17 + 161e: 07 c0 rjmp .+14 ; 0x162e <__udivmodhi4_ep> -000015a0 : - 15a0: dc 01 movw r26, r24 - 15a2: fc 01 movw r30, r24 - 15a4: 67 2f mov r22, r23 - 15a6: 71 91 ld r23, Z+ - 15a8: 77 23 and r23, r23 - 15aa: e1 f7 brne .-8 ; 0x15a4 - 15ac: 32 97 sbiw r30, 0x02 ; 2 - 15ae: 04 c0 rjmp .+8 ; 0x15b8 - 15b0: 7c 91 ld r23, X - 15b2: 6d 93 st X+, r22 - 15b4: 70 83 st Z, r23 - 15b6: 62 91 ld r22, -Z - 15b8: ae 17 cp r26, r30 - 15ba: bf 07 cpc r27, r31 - 15bc: c8 f3 brcs .-14 ; 0x15b0 - 15be: 08 95 ret +00001620 <__udivmodhi4_loop>: + 1620: aa 1f adc r26, r26 + 1622: bb 1f adc r27, r27 + 1624: a6 17 cp r26, r22 + 1626: b7 07 cpc r27, r23 + 1628: 10 f0 brcs .+4 ; 0x162e <__udivmodhi4_ep> + 162a: a6 1b sub r26, r22 + 162c: b7 0b sbc r27, r23 -000015c0 <__udivmodhi4>: - 15c0: aa 1b sub r26, r26 - 15c2: bb 1b sub r27, r27 - 15c4: 51 e1 ldi r21, 0x11 ; 17 - 15c6: 07 c0 rjmp .+14 ; 0x15d6 <__udivmodhi4_ep> +0000162e <__udivmodhi4_ep>: + 162e: 88 1f adc r24, r24 + 1630: 99 1f adc r25, r25 + 1632: 5a 95 dec r21 + 1634: a9 f7 brne .-22 ; 0x1620 <__udivmodhi4_loop> + 1636: 80 95 com r24 + 1638: 90 95 com r25 + 163a: bc 01 movw r22, r24 + 163c: cd 01 movw r24, r26 + 163e: 08 95 ret -000015c8 <__udivmodhi4_loop>: - 15c8: aa 1f adc r26, r26 - 15ca: bb 1f adc r27, r27 - 15cc: a6 17 cp r26, r22 - 15ce: b7 07 cpc r27, r23 - 15d0: 10 f0 brcs .+4 ; 0x15d6 <__udivmodhi4_ep> - 15d2: a6 1b sub r26, r22 - 15d4: b7 0b sbc r27, r23 +00001640 <__tablejump2__>: + 1640: ee 0f add r30, r30 + 1642: ff 1f adc r31, r31 -000015d6 <__udivmodhi4_ep>: - 15d6: 88 1f adc r24, r24 - 15d8: 99 1f adc r25, r25 - 15da: 5a 95 dec r21 - 15dc: a9 f7 brne .-22 ; 0x15c8 <__udivmodhi4_loop> - 15de: 80 95 com r24 - 15e0: 90 95 com r25 - 15e2: bc 01 movw r22, r24 - 15e4: cd 01 movw r24, r26 - 15e6: 08 95 ret +00001644 <__tablejump__>: + 1644: 05 90 lpm r0, Z+ + 1646: f4 91 lpm r31, Z + 1648: e0 2d mov r30, r0 + 164a: 09 94 ijmp -000015e8 <_exit>: - 15e8: f8 94 cli +0000164c : + 164c: ef 92 push r14 + 164e: 0f 93 push r16 + 1650: 1f 93 push r17 + 1652: cf 93 push r28 + 1654: c0 2f mov r28, r16 + 1656: 47 ff sbrs r20, 7 + 1658: 02 c0 rjmp .+4 ; 0x165e + 165a: 34 e1 ldi r19, 0x14 ; 20 + 165c: 01 c0 rjmp .+2 ; 0x1660 + 165e: 34 e0 ldi r19, 0x04 ; 4 + 1660: e4 2f mov r30, r20 + 1662: ff 27 eor r31, r31 + 1664: e7 fd sbrc r30, 7 + 1666: f0 95 com r31 + 1668: f7 ff sbrs r31, 7 + 166a: 03 c0 rjmp .+6 ; 0x1672 + 166c: f1 95 neg r31 + 166e: e1 95 neg r30 + 1670: f1 09 sbc r31, r1 + 1672: e3 2e mov r14, r19 + 1674: 02 2f mov r16, r18 + 1676: 2e 2f mov r18, r30 + 1678: 4c 2f mov r20, r28 + 167a: 51 2f mov r21, r17 + 167c: 0e 94 5d 0b call 0x16ba ; 0x16ba + 1680: 8c 2f mov r24, r28 + 1682: 91 2f mov r25, r17 + 1684: cf 91 pop r28 + 1686: 1f 91 pop r17 + 1688: 0f 91 pop r16 + 168a: ef 90 pop r14 + 168c: 08 95 ret -000015ea <__stop_program>: - 15ea: ff cf rjmp .-2 ; 0x15ea <__stop_program> +0000168e : + 168e: fb 01 movw r30, r22 + 1690: 9f 01 movw r18, r30 + 1692: 42 30 cpi r20, 0x02 ; 2 + 1694: 74 f0 brlt .+28 ; 0x16b2 + 1696: 45 32 cpi r20, 0x25 ; 37 + 1698: 64 f4 brge .+24 ; 0x16b2 + 169a: 64 2f mov r22, r20 + 169c: 77 27 eor r23, r23 + 169e: 0e 94 0c 0b call 0x1618 ; 0x1618 <__udivmodhi4> + 16a2: 80 5d subi r24, 0xD0 ; 208 + 16a4: 8a 33 cpi r24, 0x3A ; 58 + 16a6: 0c f0 brlt .+2 ; 0x16aa + 16a8: 89 5d subi r24, 0xD9 ; 217 + 16aa: 81 93 st Z+, r24 + 16ac: cb 01 movw r24, r22 + 16ae: 00 97 sbiw r24, 0x00 ; 0 + 16b0: a1 f7 brne .-24 ; 0x169a + 16b2: 10 82 st Z, r1 + 16b4: c9 01 movw r24, r18 + 16b6: 0c 94 b2 0d jmp 0x1b64 ; 0x1b64 + +000016ba : + 16ba: 6f 92 push r6 + 16bc: 7f 92 push r7 + 16be: 9f 92 push r9 + 16c0: af 92 push r10 + 16c2: bf 92 push r11 + 16c4: cf 92 push r12 + 16c6: df 92 push r13 + 16c8: ef 92 push r14 + 16ca: ff 92 push r15 + 16cc: 0f 93 push r16 + 16ce: 1f 93 push r17 + 16d0: cf 93 push r28 + 16d2: df 93 push r29 + 16d4: cd b7 in r28, 0x3d ; 61 + 16d6: de b7 in r29, 0x3e ; 62 + 16d8: 29 97 sbiw r28, 0x09 ; 9 + 16da: 0f b6 in r0, 0x3f ; 63 + 16dc: f8 94 cli + 16de: de bf out 0x3e, r29 ; 62 + 16e0: 0f be out 0x3f, r0 ; 63 + 16e2: cd bf out 0x3d, r28 ; 61 + 16e4: 6a 01 movw r12, r20 + 16e6: b2 2e mov r11, r18 + 16e8: 10 2f mov r17, r16 + 16ea: 0c 33 cpi r16, 0x3C ; 60 + 16ec: 18 f4 brcc .+6 ; 0x16f4 + 16ee: f0 2e mov r15, r16 + 16f0: f3 94 inc r15 + 16f2: 02 c0 rjmp .+4 ; 0x16f8 + 16f4: 5c e3 ldi r21, 0x3C ; 60 + 16f6: f5 2e mov r15, r21 + 16f8: 0f 2d mov r16, r15 + 16fa: 27 e0 ldi r18, 0x07 ; 7 + 16fc: ae 01 movw r20, r28 + 16fe: 4f 5f subi r20, 0xFF ; 255 + 1700: 5f 4f sbci r21, 0xFF ; 255 + 1702: 0e 94 da 0c call 0x19b4 ; 0x19b4 <__ftoa_engine> + 1706: 79 81 ldd r23, Y+1 ; 0x01 + 1708: 27 2f mov r18, r23 + 170a: 29 70 andi r18, 0x09 ; 9 + 170c: 21 30 cpi r18, 0x01 ; 1 + 170e: 31 f0 breq .+12 ; 0x171c + 1710: e1 fc sbrc r14, 1 + 1712: 06 c0 rjmp .+12 ; 0x1720 + 1714: e0 fe sbrs r14, 0 + 1716: 06 c0 rjmp .+12 ; 0x1724 + 1718: 60 e2 ldi r22, 0x20 ; 32 + 171a: 05 c0 rjmp .+10 ; 0x1726 + 171c: 6d e2 ldi r22, 0x2D ; 45 + 171e: 03 c0 rjmp .+6 ; 0x1726 + 1720: 6b e2 ldi r22, 0x2B ; 43 + 1722: 01 c0 rjmp .+2 ; 0x1726 + 1724: 60 e0 ldi r22, 0x00 ; 0 + 1726: 73 ff sbrs r23, 3 + 1728: 3d c0 rjmp .+122 ; 0x17a4 + 172a: 66 23 and r22, r22 + 172c: 11 f0 breq .+4 ; 0x1732 + 172e: 84 e0 ldi r24, 0x04 ; 4 + 1730: 01 c0 rjmp .+2 ; 0x1734 + 1732: 83 e0 ldi r24, 0x03 ; 3 + 1734: 8b 15 cp r24, r11 + 1736: 10 f4 brcc .+4 ; 0x173c + 1738: b8 1a sub r11, r24 + 173a: 01 c0 rjmp .+2 ; 0x173e + 173c: b1 2c mov r11, r1 + 173e: e4 fc sbrc r14, 4 + 1740: 0b c0 rjmp .+22 ; 0x1758 + 1742: 8b 2d mov r24, r11 + 1744: f6 01 movw r30, r12 + 1746: 90 e2 ldi r25, 0x20 ; 32 + 1748: 02 c0 rjmp .+4 ; 0x174e + 174a: 91 93 st Z+, r25 + 174c: 81 50 subi r24, 0x01 ; 1 + 174e: 81 11 cpse r24, r1 + 1750: fc cf rjmp .-8 ; 0x174a + 1752: cb 0c add r12, r11 + 1754: d1 1c adc r13, r1 + 1756: b1 2c mov r11, r1 + 1758: 66 23 and r22, r22 + 175a: 19 f0 breq .+6 ; 0x1762 + 175c: d6 01 movw r26, r12 + 175e: 6d 93 st X+, r22 + 1760: 6d 01 movw r12, r26 + 1762: e2 fe sbrs r14, 2 + 1764: 0a c0 rjmp .+20 ; 0x177a + 1766: 8e e4 ldi r24, 0x4E ; 78 + 1768: f6 01 movw r30, r12 + 176a: 80 83 st Z, r24 + 176c: 91 e4 ldi r25, 0x41 ; 65 + 176e: 91 83 std Z+1, r25 ; 0x01 + 1770: 82 83 std Z+2, r24 ; 0x02 + 1772: f3 e0 ldi r31, 0x03 ; 3 + 1774: cf 0e add r12, r31 + 1776: d1 1c adc r13, r1 + 1778: 0c c0 rjmp .+24 ; 0x1792 + 177a: 8e e6 ldi r24, 0x6E ; 110 + 177c: d6 01 movw r26, r12 + 177e: 8c 93 st X, r24 + 1780: 91 e6 ldi r25, 0x61 ; 97 + 1782: 11 96 adiw r26, 0x01 ; 1 + 1784: 9c 93 st X, r25 + 1786: 11 97 sbiw r26, 0x01 ; 1 + 1788: 12 96 adiw r26, 0x02 ; 2 + 178a: 8c 93 st X, r24 + 178c: b3 e0 ldi r27, 0x03 ; 3 + 178e: cb 0e add r12, r27 + 1790: d1 1c adc r13, r1 + 1792: 8b 2d mov r24, r11 + 1794: f6 01 movw r30, r12 + 1796: 90 e2 ldi r25, 0x20 ; 32 + 1798: 02 c0 rjmp .+4 ; 0x179e + 179a: 91 93 st Z+, r25 + 179c: 81 50 subi r24, 0x01 ; 1 + 179e: 81 11 cpse r24, r1 + 17a0: fc cf rjmp .-8 ; 0x179a + 17a2: 40 c0 rjmp .+128 ; 0x1824 + 17a4: 72 ff sbrs r23, 2 + 17a6: 45 c0 rjmp .+138 ; 0x1832 + 17a8: 66 23 and r22, r22 + 17aa: 11 f0 breq .+4 ; 0x17b0 + 17ac: 84 e0 ldi r24, 0x04 ; 4 + 17ae: 01 c0 rjmp .+2 ; 0x17b2 + 17b0: 83 e0 ldi r24, 0x03 ; 3 + 17b2: 8b 15 cp r24, r11 + 17b4: 10 f4 brcc .+4 ; 0x17ba + 17b6: b8 1a sub r11, r24 + 17b8: 01 c0 rjmp .+2 ; 0x17bc + 17ba: b1 2c mov r11, r1 + 17bc: e4 fc sbrc r14, 4 + 17be: 0b c0 rjmp .+22 ; 0x17d6 + 17c0: 8b 2d mov r24, r11 + 17c2: f6 01 movw r30, r12 + 17c4: 90 e2 ldi r25, 0x20 ; 32 + 17c6: 02 c0 rjmp .+4 ; 0x17cc + 17c8: 91 93 st Z+, r25 + 17ca: 81 50 subi r24, 0x01 ; 1 + 17cc: 81 11 cpse r24, r1 + 17ce: fc cf rjmp .-8 ; 0x17c8 + 17d0: cb 0c add r12, r11 + 17d2: d1 1c adc r13, r1 + 17d4: b1 2c mov r11, r1 + 17d6: 66 23 and r22, r22 + 17d8: 19 f0 breq .+6 ; 0x17e0 + 17da: f6 01 movw r30, r12 + 17dc: 61 93 st Z+, r22 + 17de: 6f 01 movw r12, r30 + 17e0: e2 fe sbrs r14, 2 + 17e2: 0e c0 rjmp .+28 ; 0x1800 + 17e4: 89 e4 ldi r24, 0x49 ; 73 + 17e6: d6 01 movw r26, r12 + 17e8: 8c 93 st X, r24 + 17ea: 8e e4 ldi r24, 0x4E ; 78 + 17ec: 11 96 adiw r26, 0x01 ; 1 + 17ee: 8c 93 st X, r24 + 17f0: 11 97 sbiw r26, 0x01 ; 1 + 17f2: 86 e4 ldi r24, 0x46 ; 70 + 17f4: 12 96 adiw r26, 0x02 ; 2 + 17f6: 8c 93 st X, r24 + 17f8: b3 e0 ldi r27, 0x03 ; 3 + 17fa: cb 0e add r12, r27 + 17fc: d1 1c adc r13, r1 + 17fe: 0a c0 rjmp .+20 ; 0x1814 + 1800: 89 e6 ldi r24, 0x69 ; 105 + 1802: f6 01 movw r30, r12 + 1804: 80 83 st Z, r24 + 1806: 8e e6 ldi r24, 0x6E ; 110 + 1808: 81 83 std Z+1, r24 ; 0x01 + 180a: 86 e6 ldi r24, 0x66 ; 102 + 180c: 82 83 std Z+2, r24 ; 0x02 + 180e: f3 e0 ldi r31, 0x03 ; 3 + 1810: cf 0e add r12, r31 + 1812: d1 1c adc r13, r1 + 1814: 8b 2d mov r24, r11 + 1816: f6 01 movw r30, r12 + 1818: 90 e2 ldi r25, 0x20 ; 32 + 181a: 02 c0 rjmp .+4 ; 0x1820 + 181c: 91 93 st Z+, r25 + 181e: 81 50 subi r24, 0x01 ; 1 + 1820: 81 11 cpse r24, r1 + 1822: fc cf rjmp .-8 ; 0x181c + 1824: f6 01 movw r30, r12 + 1826: eb 0d add r30, r11 + 1828: f1 1d adc r31, r1 + 182a: 10 82 st Z, r1 + 182c: 2e ef ldi r18, 0xFE ; 254 + 182e: 3f ef ldi r19, 0xFF ; 255 + 1830: ac c0 rjmp .+344 ; 0x198a + 1832: a1 e0 ldi r26, 0x01 ; 1 + 1834: 61 11 cpse r22, r1 + 1836: 01 c0 rjmp .+2 ; 0x183a + 1838: a0 e0 ldi r26, 0x00 ; 0 + 183a: 4a 2f mov r20, r26 + 183c: 50 e0 ldi r21, 0x00 ; 0 + 183e: 18 16 cp r1, r24 + 1840: 19 06 cpc r1, r25 + 1842: 24 f4 brge .+8 ; 0x184c + 1844: 9c 01 movw r18, r24 + 1846: 2f 5f subi r18, 0xFF ; 255 + 1848: 3f 4f sbci r19, 0xFF ; 255 + 184a: 02 c0 rjmp .+4 ; 0x1850 + 184c: 21 e0 ldi r18, 0x01 ; 1 + 184e: 30 e0 ldi r19, 0x00 ; 0 + 1850: 24 0f add r18, r20 + 1852: 35 1f adc r19, r21 + 1854: 11 23 and r17, r17 + 1856: 29 f0 breq .+10 ; 0x1862 + 1858: 41 2f mov r20, r17 + 185a: 50 e0 ldi r21, 0x00 ; 0 + 185c: 4f 5f subi r20, 0xFF ; 255 + 185e: 5f 4f sbci r21, 0xFF ; 255 + 1860: 02 c0 rjmp .+4 ; 0x1866 + 1862: 40 e0 ldi r20, 0x00 ; 0 + 1864: 50 e0 ldi r21, 0x00 ; 0 + 1866: 42 0f add r20, r18 + 1868: 53 1f adc r21, r19 + 186a: 2b 2d mov r18, r11 + 186c: 30 e0 ldi r19, 0x00 ; 0 + 186e: 42 17 cp r20, r18 + 1870: 53 07 cpc r21, r19 + 1872: 14 f4 brge .+4 ; 0x1878 + 1874: b4 1a sub r11, r20 + 1876: 01 c0 rjmp .+2 ; 0x187a + 1878: b1 2c mov r11, r1 + 187a: 3e 2d mov r19, r14 + 187c: 30 71 andi r19, 0x10 ; 16 + 187e: e4 fc sbrc r14, 4 + 1880: 0d c0 rjmp .+26 ; 0x189c + 1882: e3 fc sbrc r14, 3 + 1884: 0b c0 rjmp .+22 ; 0x189c + 1886: 2b 2d mov r18, r11 + 1888: f6 01 movw r30, r12 + 188a: 40 e2 ldi r20, 0x20 ; 32 + 188c: 02 c0 rjmp .+4 ; 0x1892 + 188e: 41 93 st Z+, r20 + 1890: 21 50 subi r18, 0x01 ; 1 + 1892: 21 11 cpse r18, r1 + 1894: fc cf rjmp .-8 ; 0x188e + 1896: cb 0c add r12, r11 + 1898: d1 1c adc r13, r1 + 189a: b1 2c mov r11, r1 + 189c: aa 23 and r26, r26 + 189e: 19 f0 breq .+6 ; 0x18a6 + 18a0: d6 01 movw r26, r12 + 18a2: 6d 93 st X+, r22 + 18a4: 6d 01 movw r12, r26 + 18a6: 31 11 cpse r19, r1 + 18a8: 0b c0 rjmp .+22 ; 0x18c0 + 18aa: 2b 2d mov r18, r11 + 18ac: f6 01 movw r30, r12 + 18ae: 30 e3 ldi r19, 0x30 ; 48 + 18b0: 02 c0 rjmp .+4 ; 0x18b6 + 18b2: 31 93 st Z+, r19 + 18b4: 21 50 subi r18, 0x01 ; 1 + 18b6: 21 11 cpse r18, r1 + 18b8: fc cf rjmp .-8 ; 0x18b2 + 18ba: cb 0c add r12, r11 + 18bc: d1 1c adc r13, r1 + 18be: b1 2c mov r11, r1 + 18c0: f8 0e add r15, r24 + 18c2: 0a 81 ldd r16, Y+2 ; 0x02 + 18c4: 40 e1 ldi r20, 0x10 ; 16 + 18c6: a4 2e mov r10, r20 + 18c8: a7 22 and r10, r23 + 18ca: 74 ff sbrs r23, 4 + 18cc: 03 c0 rjmp .+6 ; 0x18d4 + 18ce: 01 33 cpi r16, 0x31 ; 49 + 18d0: 09 f4 brne .+2 ; 0x18d4 + 18d2: fa 94 dec r15 + 18d4: 1f 14 cp r1, r15 + 18d6: 2c f4 brge .+10 ; 0x18e2 + 18d8: 2f 2d mov r18, r15 + 18da: 29 30 cpi r18, 0x09 ; 9 + 18dc: 18 f0 brcs .+6 ; 0x18e4 + 18de: 28 e0 ldi r18, 0x08 ; 8 + 18e0: 01 c0 rjmp .+2 ; 0x18e4 + 18e2: 21 e0 ldi r18, 0x01 ; 1 + 18e4: ac 01 movw r20, r24 + 18e6: 97 ff sbrs r25, 7 + 18e8: 02 c0 rjmp .+4 ; 0x18ee + 18ea: 40 e0 ldi r20, 0x00 ; 0 + 18ec: 50 e0 ldi r21, 0x00 ; 0 + 18ee: 60 e0 ldi r22, 0x00 ; 0 + 18f0: 70 e0 ldi r23, 0x00 ; 0 + 18f2: 3e e2 ldi r19, 0x2E ; 46 + 18f4: 93 2e mov r9, r19 + 18f6: fc 01 movw r30, r24 + 18f8: e2 1b sub r30, r18 + 18fa: f1 09 sbc r31, r1 + 18fc: 9f 01 movw r18, r30 + 18fe: dc 01 movw r26, r24 + 1900: a4 1b sub r26, r20 + 1902: b5 0b sbc r27, r21 + 1904: fe 01 movw r30, r28 + 1906: 31 96 adiw r30, 0x01 ; 1 + 1908: ea 0f add r30, r26 + 190a: fb 1f adc r31, r27 + 190c: a1 2f mov r26, r17 + 190e: b0 e0 ldi r27, 0x00 ; 0 + 1910: 66 24 eor r6, r6 + 1912: 77 24 eor r7, r7 + 1914: 6a 1a sub r6, r26 + 1916: 7b 0a sbc r7, r27 + 1918: 4f 3f cpi r20, 0xFF ; 255 + 191a: 1f ef ldi r17, 0xFF ; 255 + 191c: 51 07 cpc r21, r17 + 191e: 19 f4 brne .+6 ; 0x1926 + 1920: d6 01 movw r26, r12 + 1922: 9d 92 st X+, r9 + 1924: 6d 01 movw r12, r26 + 1926: 84 17 cp r24, r20 + 1928: 95 07 cpc r25, r21 + 192a: 54 f0 brlt .+20 ; 0x1940 + 192c: 24 17 cp r18, r20 + 192e: 35 07 cpc r19, r21 + 1930: 3c f4 brge .+14 ; 0x1940 + 1932: 7f 01 movw r14, r30 + 1934: e6 0e add r14, r22 + 1936: f7 1e adc r15, r23 + 1938: d7 01 movw r26, r14 + 193a: 11 96 adiw r26, 0x01 ; 1 + 193c: 1c 91 ld r17, X + 193e: 01 c0 rjmp .+2 ; 0x1942 + 1940: 10 e3 ldi r17, 0x30 ; 48 + 1942: 41 50 subi r20, 0x01 ; 1 + 1944: 51 09 sbc r21, r1 + 1946: 6f 5f subi r22, 0xFF ; 255 + 1948: 7f 4f sbci r23, 0xFF ; 255 + 194a: 46 15 cp r20, r6 + 194c: 57 05 cpc r21, r7 + 194e: 24 f0 brlt .+8 ; 0x1958 + 1950: d6 01 movw r26, r12 + 1952: 1d 93 st X+, r17 + 1954: 6d 01 movw r12, r26 + 1956: e0 cf rjmp .-64 ; 0x1918 + 1958: 48 17 cp r20, r24 + 195a: 59 07 cpc r21, r25 + 195c: 39 f4 brne .+14 ; 0x196c + 195e: 06 33 cpi r16, 0x36 ; 54 + 1960: 20 f4 brcc .+8 ; 0x196a + 1962: 05 33 cpi r16, 0x35 ; 53 + 1964: 19 f4 brne .+6 ; 0x196c + 1966: a1 10 cpse r10, r1 + 1968: 01 c0 rjmp .+2 ; 0x196c + 196a: 11 e3 ldi r17, 0x31 ; 49 + 196c: f6 01 movw r30, r12 + 196e: 11 93 st Z+, r17 + 1970: 8b 2d mov r24, r11 + 1972: df 01 movw r26, r30 + 1974: 90 e2 ldi r25, 0x20 ; 32 + 1976: 02 c0 rjmp .+4 ; 0x197c + 1978: 9d 93 st X+, r25 + 197a: 81 50 subi r24, 0x01 ; 1 + 197c: 81 11 cpse r24, r1 + 197e: fc cf rjmp .-8 ; 0x1978 + 1980: eb 0d add r30, r11 + 1982: f1 1d adc r31, r1 + 1984: 10 82 st Z, r1 + 1986: 20 e0 ldi r18, 0x00 ; 0 + 1988: 30 e0 ldi r19, 0x00 ; 0 + 198a: c9 01 movw r24, r18 + 198c: 29 96 adiw r28, 0x09 ; 9 + 198e: 0f b6 in r0, 0x3f ; 63 + 1990: f8 94 cli + 1992: de bf out 0x3e, r29 ; 62 + 1994: 0f be out 0x3f, r0 ; 63 + 1996: cd bf out 0x3d, r28 ; 61 + 1998: df 91 pop r29 + 199a: cf 91 pop r28 + 199c: 1f 91 pop r17 + 199e: 0f 91 pop r16 + 19a0: ff 90 pop r15 + 19a2: ef 90 pop r14 + 19a4: df 90 pop r13 + 19a6: cf 90 pop r12 + 19a8: bf 90 pop r11 + 19aa: af 90 pop r10 + 19ac: 9f 90 pop r9 + 19ae: 7f 90 pop r7 + 19b0: 6f 90 pop r6 + 19b2: 08 95 ret + +000019b4 <__ftoa_engine>: + 19b4: 28 30 cpi r18, 0x08 ; 8 + 19b6: 08 f0 brcs .+2 ; 0x19ba <__ftoa_engine+0x6> + 19b8: 27 e0 ldi r18, 0x07 ; 7 + 19ba: 33 27 eor r19, r19 + 19bc: da 01 movw r26, r20 + 19be: 99 0f add r25, r25 + 19c0: 31 1d adc r19, r1 + 19c2: 87 fd sbrc r24, 7 + 19c4: 91 60 ori r25, 0x01 ; 1 + 19c6: 00 96 adiw r24, 0x00 ; 0 + 19c8: 61 05 cpc r22, r1 + 19ca: 71 05 cpc r23, r1 + 19cc: 39 f4 brne .+14 ; 0x19dc <__ftoa_engine+0x28> + 19ce: 32 60 ori r19, 0x02 ; 2 + 19d0: 2e 5f subi r18, 0xFE ; 254 + 19d2: 3d 93 st X+, r19 + 19d4: 30 e3 ldi r19, 0x30 ; 48 + 19d6: 2a 95 dec r18 + 19d8: e1 f7 brne .-8 ; 0x19d2 <__ftoa_engine+0x1e> + 19da: 08 95 ret + 19dc: 9f 3f cpi r25, 0xFF ; 255 + 19de: 30 f0 brcs .+12 ; 0x19ec <__ftoa_engine+0x38> + 19e0: 80 38 cpi r24, 0x80 ; 128 + 19e2: 71 05 cpc r23, r1 + 19e4: 61 05 cpc r22, r1 + 19e6: 09 f0 breq .+2 ; 0x19ea <__ftoa_engine+0x36> + 19e8: 3c 5f subi r19, 0xFC ; 252 + 19ea: 3c 5f subi r19, 0xFC ; 252 + 19ec: 3d 93 st X+, r19 + 19ee: 91 30 cpi r25, 0x01 ; 1 + 19f0: 08 f0 brcs .+2 ; 0x19f4 <__ftoa_engine+0x40> + 19f2: 80 68 ori r24, 0x80 ; 128 + 19f4: 91 1d adc r25, r1 + 19f6: df 93 push r29 + 19f8: cf 93 push r28 + 19fa: 1f 93 push r17 + 19fc: 0f 93 push r16 + 19fe: ff 92 push r15 + 1a00: ef 92 push r14 + 1a02: 19 2f mov r17, r25 + 1a04: 98 7f andi r25, 0xF8 ; 248 + 1a06: 96 95 lsr r25 + 1a08: e9 2f mov r30, r25 + 1a0a: 96 95 lsr r25 + 1a0c: 96 95 lsr r25 + 1a0e: e9 0f add r30, r25 + 1a10: ff 27 eor r31, r31 + 1a12: e2 55 subi r30, 0x52 ; 82 + 1a14: ff 4f sbci r31, 0xFF ; 255 + 1a16: 99 27 eor r25, r25 + 1a18: 33 27 eor r19, r19 + 1a1a: ee 24 eor r14, r14 + 1a1c: ff 24 eor r15, r15 + 1a1e: a7 01 movw r20, r14 + 1a20: e7 01 movw r28, r14 + 1a22: 05 90 lpm r0, Z+ + 1a24: 08 94 sec + 1a26: 07 94 ror r0 + 1a28: 28 f4 brcc .+10 ; 0x1a34 <__ftoa_engine+0x80> + 1a2a: 36 0f add r19, r22 + 1a2c: e7 1e adc r14, r23 + 1a2e: f8 1e adc r15, r24 + 1a30: 49 1f adc r20, r25 + 1a32: 51 1d adc r21, r1 + 1a34: 66 0f add r22, r22 + 1a36: 77 1f adc r23, r23 + 1a38: 88 1f adc r24, r24 + 1a3a: 99 1f adc r25, r25 + 1a3c: 06 94 lsr r0 + 1a3e: a1 f7 brne .-24 ; 0x1a28 <__ftoa_engine+0x74> + 1a40: 05 90 lpm r0, Z+ + 1a42: 07 94 ror r0 + 1a44: 28 f4 brcc .+10 ; 0x1a50 <__ftoa_engine+0x9c> + 1a46: e7 0e add r14, r23 + 1a48: f8 1e adc r15, r24 + 1a4a: 49 1f adc r20, r25 + 1a4c: 56 1f adc r21, r22 + 1a4e: c1 1d adc r28, r1 + 1a50: 77 0f add r23, r23 + 1a52: 88 1f adc r24, r24 + 1a54: 99 1f adc r25, r25 + 1a56: 66 1f adc r22, r22 + 1a58: 06 94 lsr r0 + 1a5a: a1 f7 brne .-24 ; 0x1a44 <__ftoa_engine+0x90> + 1a5c: 05 90 lpm r0, Z+ + 1a5e: 07 94 ror r0 + 1a60: 28 f4 brcc .+10 ; 0x1a6c <__ftoa_engine+0xb8> + 1a62: f8 0e add r15, r24 + 1a64: 49 1f adc r20, r25 + 1a66: 56 1f adc r21, r22 + 1a68: c7 1f adc r28, r23 + 1a6a: d1 1d adc r29, r1 + 1a6c: 88 0f add r24, r24 + 1a6e: 99 1f adc r25, r25 + 1a70: 66 1f adc r22, r22 + 1a72: 77 1f adc r23, r23 + 1a74: 06 94 lsr r0 + 1a76: a1 f7 brne .-24 ; 0x1a60 <__ftoa_engine+0xac> + 1a78: 05 90 lpm r0, Z+ + 1a7a: 07 94 ror r0 + 1a7c: 20 f4 brcc .+8 ; 0x1a86 <__ftoa_engine+0xd2> + 1a7e: 49 0f add r20, r25 + 1a80: 56 1f adc r21, r22 + 1a82: c7 1f adc r28, r23 + 1a84: d8 1f adc r29, r24 + 1a86: 99 0f add r25, r25 + 1a88: 66 1f adc r22, r22 + 1a8a: 77 1f adc r23, r23 + 1a8c: 88 1f adc r24, r24 + 1a8e: 06 94 lsr r0 + 1a90: a9 f7 brne .-22 ; 0x1a7c <__ftoa_engine+0xc8> + 1a92: 84 91 lpm r24, Z + 1a94: 10 95 com r17 + 1a96: 17 70 andi r17, 0x07 ; 7 + 1a98: 41 f0 breq .+16 ; 0x1aaa <__ftoa_engine+0xf6> + 1a9a: d6 95 lsr r29 + 1a9c: c7 95 ror r28 + 1a9e: 57 95 ror r21 + 1aa0: 47 95 ror r20 + 1aa2: f7 94 ror r15 + 1aa4: e7 94 ror r14 + 1aa6: 1a 95 dec r17 + 1aa8: c1 f7 brne .-16 ; 0x1a9a <__ftoa_engine+0xe6> + 1aaa: e4 e5 ldi r30, 0x54 ; 84 + 1aac: f0 e0 ldi r31, 0x00 ; 0 + 1aae: 68 94 set + 1ab0: 15 90 lpm r1, Z+ + 1ab2: 15 91 lpm r17, Z+ + 1ab4: 35 91 lpm r19, Z+ + 1ab6: 65 91 lpm r22, Z+ + 1ab8: 95 91 lpm r25, Z+ + 1aba: 05 90 lpm r0, Z+ + 1abc: 7f e2 ldi r23, 0x2F ; 47 + 1abe: 73 95 inc r23 + 1ac0: e1 18 sub r14, r1 + 1ac2: f1 0a sbc r15, r17 + 1ac4: 43 0b sbc r20, r19 + 1ac6: 56 0b sbc r21, r22 + 1ac8: c9 0b sbc r28, r25 + 1aca: d0 09 sbc r29, r0 + 1acc: c0 f7 brcc .-16 ; 0x1abe <__ftoa_engine+0x10a> + 1ace: e1 0c add r14, r1 + 1ad0: f1 1e adc r15, r17 + 1ad2: 43 1f adc r20, r19 + 1ad4: 56 1f adc r21, r22 + 1ad6: c9 1f adc r28, r25 + 1ad8: d0 1d adc r29, r0 + 1ada: 7e f4 brtc .+30 ; 0x1afa <__ftoa_engine+0x146> + 1adc: 70 33 cpi r23, 0x30 ; 48 + 1ade: 11 f4 brne .+4 ; 0x1ae4 <__ftoa_engine+0x130> + 1ae0: 8a 95 dec r24 + 1ae2: e6 cf rjmp .-52 ; 0x1ab0 <__ftoa_engine+0xfc> + 1ae4: e8 94 clt + 1ae6: 01 50 subi r16, 0x01 ; 1 + 1ae8: 30 f0 brcs .+12 ; 0x1af6 <__ftoa_engine+0x142> + 1aea: 08 0f add r16, r24 + 1aec: 0a f4 brpl .+2 ; 0x1af0 <__ftoa_engine+0x13c> + 1aee: 00 27 eor r16, r16 + 1af0: 02 17 cp r16, r18 + 1af2: 08 f4 brcc .+2 ; 0x1af6 <__ftoa_engine+0x142> + 1af4: 20 2f mov r18, r16 + 1af6: 23 95 inc r18 + 1af8: 02 2f mov r16, r18 + 1afa: 7a 33 cpi r23, 0x3A ; 58 + 1afc: 28 f0 brcs .+10 ; 0x1b08 <__ftoa_engine+0x154> + 1afe: 79 e3 ldi r23, 0x39 ; 57 + 1b00: 7d 93 st X+, r23 + 1b02: 2a 95 dec r18 + 1b04: e9 f7 brne .-6 ; 0x1b00 <__ftoa_engine+0x14c> + 1b06: 10 c0 rjmp .+32 ; 0x1b28 <__ftoa_engine+0x174> + 1b08: 7d 93 st X+, r23 + 1b0a: 2a 95 dec r18 + 1b0c: 89 f6 brne .-94 ; 0x1ab0 <__ftoa_engine+0xfc> + 1b0e: 06 94 lsr r0 + 1b10: 97 95 ror r25 + 1b12: 67 95 ror r22 + 1b14: 37 95 ror r19 + 1b16: 17 95 ror r17 + 1b18: 17 94 ror r1 + 1b1a: e1 18 sub r14, r1 + 1b1c: f1 0a sbc r15, r17 + 1b1e: 43 0b sbc r20, r19 + 1b20: 56 0b sbc r21, r22 + 1b22: c9 0b sbc r28, r25 + 1b24: d0 09 sbc r29, r0 + 1b26: 98 f0 brcs .+38 ; 0x1b4e <__ftoa_engine+0x19a> + 1b28: 23 95 inc r18 + 1b2a: 7e 91 ld r23, -X + 1b2c: 73 95 inc r23 + 1b2e: 7a 33 cpi r23, 0x3A ; 58 + 1b30: 08 f0 brcs .+2 ; 0x1b34 <__ftoa_engine+0x180> + 1b32: 70 e3 ldi r23, 0x30 ; 48 + 1b34: 7c 93 st X, r23 + 1b36: 20 13 cpse r18, r16 + 1b38: b8 f7 brcc .-18 ; 0x1b28 <__ftoa_engine+0x174> + 1b3a: 7e 91 ld r23, -X + 1b3c: 70 61 ori r23, 0x10 ; 16 + 1b3e: 7d 93 st X+, r23 + 1b40: 30 f0 brcs .+12 ; 0x1b4e <__ftoa_engine+0x19a> + 1b42: 83 95 inc r24 + 1b44: 71 e3 ldi r23, 0x31 ; 49 + 1b46: 7d 93 st X+, r23 + 1b48: 70 e3 ldi r23, 0x30 ; 48 + 1b4a: 2a 95 dec r18 + 1b4c: e1 f7 brne .-8 ; 0x1b46 <__ftoa_engine+0x192> + 1b4e: 11 24 eor r1, r1 + 1b50: ef 90 pop r14 + 1b52: ff 90 pop r15 + 1b54: 0f 91 pop r16 + 1b56: 1f 91 pop r17 + 1b58: cf 91 pop r28 + 1b5a: df 91 pop r29 + 1b5c: 99 27 eor r25, r25 + 1b5e: 87 fd sbrc r24, 7 + 1b60: 90 95 com r25 + 1b62: 08 95 ret + +00001b64 : + 1b64: dc 01 movw r26, r24 + 1b66: fc 01 movw r30, r24 + 1b68: 67 2f mov r22, r23 + 1b6a: 71 91 ld r23, Z+ + 1b6c: 77 23 and r23, r23 + 1b6e: e1 f7 brne .-8 ; 0x1b68 + 1b70: 32 97 sbiw r30, 0x02 ; 2 + 1b72: 04 c0 rjmp .+8 ; 0x1b7c + 1b74: 7c 91 ld r23, X + 1b76: 6d 93 st X+, r22 + 1b78: 70 83 st Z, r23 + 1b7a: 62 91 ld r22, -Z + 1b7c: ae 17 cp r26, r30 + 1b7e: bf 07 cpc r27, r31 + 1b80: c8 f3 brcs .-14 ; 0x1b74 + 1b82: 08 95 ret + +00001b84 <_exit>: + 1b84: f8 94 cli + +00001b86 <__stop_program>: + 1b86: ff cf rjmp .-2 ; 0x1b86 <__stop_program> diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.map b/USBLaminator/USBLaminator/Debug/USBLaminator.map index c9aa419..90f5b06 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.map +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.map @@ -36,6 +36,8 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- USBLaminator.o (__mulsf3) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) (__mulsf3x) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + USBLaminator.o (__divmodhi4) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o (exit) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_copy_data.o) @@ -44,6 +46,10 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- USBLaminator.o (__do_clear_bss) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) USBLaminator.o (__do_global_ctors) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + USBLaminator.o (__umulhisi3) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) (__udivmodhi4) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) (__tablejump__) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) @@ -56,8 +62,6 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) (__ftoa_engine) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) (strrev) -c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) (__udivmodhi4) Discarded input sections @@ -103,6 +107,17 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) .text.libgcc.mul @@ -155,6 +170,28 @@ Discarded input sections 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) .text.libgcc.fmul 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) .text.libgcc.mul @@ -177,17 +214,6 @@ Discarded input sections .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ftoa_engine.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) - .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - .text.libgcc.mul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - .text.libgcc.prologue - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - .text.libgcc.builtins - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - .text.libgcc.fmul - 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) Memory Configuration @@ -304,7 +330,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x15ec +.text 0x00000000 0x1b88 *(.vectors) .vectors 0x00000000 0x54 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o 0x00000000 __vector_default @@ -367,7 +393,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x000001a0 __vector_12 0x000001a0 __bad_interrupt 0x000001a0 __vector_3 - 0x000001a0 __vector_11 0x000001a0 __vector_13 0x000001a0 __vector_17 0x000001a0 __vector_19 @@ -388,122 +413,132 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .text._Z5setupv 0x000001a4 0x216 USBLaminator.o 0x000001a4 _Z5setupv - .text.main 0x000003ba 0x666 USBLaminator.o + .text.main 0x000003ba 0xb00 USBLaminator.o 0x000003ba main .text.__vector_6 - 0x00000a20 0x108 USBLaminator.o - 0x00000a20 __vector_6 + 0x00000eba 0x108 USBLaminator.o + 0x00000eba __vector_6 .text.__vector_1 - 0x00000b28 0x1c USBLaminator.o - 0x00000b28 __vector_1 + 0x00000fc2 0x1c USBLaminator.o + 0x00000fc2 __vector_1 + .text.__vector_11 + 0x00000fde 0xba USBLaminator.o + 0x00000fde __vector_11 .text._ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev - 0x00000b44 0x34 USBLaminator.o - 0x00000b44 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev - 0x00000b44 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev + 0x00001098 0x34 USBLaminator.o + 0x00001098 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC2Ev + 0x00001098 _ZN3SSRIN6avrlib5portcELi2ELi3ELi4ELi5ELi6ELi7EEC1Ev .text._ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000b78 0x5a USBLaminator.o - 0x00000b78 _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000b78 _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE + 0x000010cc 0x62 USBLaminator.o + 0x000010cc _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC1E3LedINS0_5portbELi4ELi3ELi2EE + 0x000010cc _ZN5UsartILm38400EN6avrlib5portdELi5ELi4ELi3EEC2E3LedINS0_5portbELi4ELi3ELi2EE .text._ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000bd2 0x2c USBLaminator.o - 0x00000bd2 _ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE - 0x00000bd2 _ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE + 0x0000112e 0x2c USBLaminator.o + 0x0000112e _ZN6ButtonIN6avrlib5portdELi2EEC1E3LedINS0_5portbELi4ELi3ELi2EE + 0x0000112e _ZN6ButtonIN6avrlib5portdELi2EEC2E3LedINS0_5portbELi4ELi3ELi2EE .text._ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv - 0x00000bfe 0x14 USBLaminator.o - 0x00000bfe _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv + 0x0000115a 0x14 USBLaminator.o + 0x0000115a _ZN3LedIN6avrlib5portbELi4ELi3ELi2EE4initEv .text._GLOBAL__sub_I_l - 0x00000c12 0x3e USBLaminator.o + 0x0000116e 0x3e USBLaminator.o .text.avr-libc.fplib - 0x00000c50 0xa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) - 0x00000c50 __subsf3 - 0x00000c52 __addsf3 + 0x000011ac 0xa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3.o) + 0x000011ac __subsf3 + 0x000011ae __addsf3 .text.avr-libc.fplib - 0x00000c5a 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) - 0x00000c74 __addsf3x + 0x000011b6 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(addsf3x.o) + 0x000011d0 __addsf3x .text.avr-libc.fplib - 0x00000d1a 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) - 0x00000d1a __nesf2 - 0x00000d1a __eqsf2 - 0x00000d1a __cmpsf2 - 0x00000d1a __ltsf2 - 0x00000d1a __lesf2 + 0x00001276 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + 0x00001276 __nesf2 + 0x00001276 __eqsf2 + 0x00001276 __cmpsf2 + 0x00001276 __ltsf2 + 0x00001276 __lesf2 .text.avr-libc.fplib - 0x00000d22 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(divsf3.o) - 0x00000d22 __divsf3 + 0x0000127e 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(divsf3.o) + 0x0000127e __divsf3 .text.avr-libc.fplib - 0x00000d26 0xcc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) - 0x00000d3c __divsf3x - 0x00000d40 __divsf3_pse + 0x00001282 0xcc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(divsf3x.o) + 0x00001298 __divsf3x + 0x0000129c __divsf3_pse .text.avr-libc.fplib - 0x00000df2 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) - 0x00000df2 __fixunssfsi + 0x0000134e 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + 0x0000134e __fixunssfsi .text.avr-libc.fplib - 0x00000e4a 0x7a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) - 0x00000e4a __floatunsisf - 0x00000e4e __floatsisf + 0x000013a6 0x7a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(floatsisf.o) + 0x000013a6 __floatunsisf + 0x000013aa __floatsisf .text.avr-libc.fplib - 0x00000ec4 0x48 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) - 0x00000ec4 __fp_cmp + 0x00001420 0x48 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + 0x00001420 __fp_cmp .text.avr-libc.fplib - 0x00000f0c 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) - 0x00000f0c __fp_inf + 0x00001468 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_inf.o) + 0x00001468 __fp_inf .text.avr-libc.fplib - 0x00000f18 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) - 0x00000f18 __fp_nan + 0x00001474 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_nan.o) + 0x00001474 __fp_nan .text.avr-libc.fplib - 0x00000f1e 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) - 0x00000f1e __fp_pscA + 0x0000147a 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + 0x0000147a __fp_pscA .text.avr-libc.fplib - 0x00000f2c 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) - 0x00000f2c __fp_pscB + 0x00001488 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + 0x00001488 __fp_pscB .text.avr-libc.fplib - 0x00000f3a 0x22 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) - 0x00000f3a __fp_round + 0x00001496 0x22 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_round.o) + 0x00001496 __fp_round .text.avr-libc.fplib - 0x00000f5c 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) - 0x00000f5c __fp_split3 - 0x00000f6c __fp_splitA + 0x000014b8 0x44 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_split3.o) + 0x000014b8 __fp_split3 + 0x000014c8 __fp_splitA .text.avr-libc.fplib - 0x00000fa0 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) - 0x00000fa0 __fp_zero - 0x00000fa2 __fp_szero + 0x000014fc 0xe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(fp_zero.o) + 0x000014fc __fp_zero + 0x000014fe __fp_szero .text.avr-libc.fplib - 0x00000fae 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) - 0x00000fae __gesf2 - 0x00000fae __gtsf2 + 0x0000150a 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) + 0x0000150a __gesf2 + 0x0000150a __gtsf2 .text.avr-libc.fplib - 0x00000fb6 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) - 0x00000fb6 __mulsf3 + 0x00001512 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) + 0x00001512 __mulsf3 .text.avr-libc.fplib - 0x00000fba 0xc2 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) - 0x00000fce __mulsf3x - 0x00000fd2 __mulsf3_pse - .text.libgcc 0x0000107c 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) - 0x0000107c __tablejump2__ - 0x00001080 __tablejump__ - .text.avr-libc - 0x00001088 0x42 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - 0x00001088 dtostrf - .text.avr-libc - 0x000010ca 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) - 0x000010ca utoa - .text.avr-libc - 0x000010f6 0x2fa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) - 0x000010f6 dtoa_prf - .text.avr-libc - 0x000013f0 0x1b0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ftoa_engine.o) - 0x000013f0 __ftoa_engine - .text.avr-libc - 0x000015a0 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) - 0x000015a0 strrev + 0x00001516 0xc2 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + 0x0000152a __mulsf3x + 0x0000152e __mulsf3_pse .text.libgcc.div - 0x000015c0 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) - 0x000015c0 __udivmodhi4 - 0x000015e8 . = ALIGN (0x2) + 0x000015d8 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) + 0x000015d8 _div + 0x000015d8 __divmodhi4 + .text.libgcc.mul + 0x00001600 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + 0x00001600 __umulhisi3 + .text.libgcc.div + 0x00001618 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) + 0x00001618 __udivmodhi4 + .text.libgcc 0x00001640 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) + 0x00001640 __tablejump2__ + 0x00001644 __tablejump__ + .text.avr-libc + 0x0000164c 0x42 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + 0x0000164c dtostrf + .text.avr-libc + 0x0000168e 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) + 0x0000168e utoa + .text.avr-libc + 0x000016ba 0x2fa c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + 0x000016ba dtoa_prf + .text.avr-libc + 0x000019b4 0x1b0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ftoa_engine.o) + 0x000019b4 __ftoa_engine + .text.avr-libc + 0x00001b64 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) + 0x00001b64 strrev + 0x00001b84 . = ALIGN (0x2) *(.fini9) - .fini9 0x000015e8 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) - 0x000015e8 _exit - 0x000015e8 exit + .fini9 0x00001b84 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + 0x00001b84 _exit + 0x00001b84 exit *(.fini9) *(.fini8) *(.fini8) @@ -522,11 +557,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000015e8 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) + .fini0 0x00001b84 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) *(.fini0) - 0x000015ec _etext = . + 0x00001b88 _etext = . -.data 0x00800060 0x136 load address 0x000015ec +.data 0x00800060 0x142 load address 0x00001b88 0x00800060 PROVIDE (__data_start, .) *(.data) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5/crtm16a.o @@ -549,50 +584,53 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(gesf2.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_divmodhi4.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_exit.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_copy_data.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_clear_bss.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_ctors.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_umulhisi3.o) + .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_tablejump.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(utoa.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(ftoa_engine.o) .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(strrev.o) - .data 0x00800060 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr5\libgcc.a(_udivmodhi4.o) *(.data*) *(.rodata) .rodata 0x00800060 0x30 USBLaminator.o *(.rodata*) .rodata.str1.1 - 0x00800090 0x105 USBLaminator.o + 0x00800090 0x111 USBLaminator.o + 0x114 (size before relaxing) *(.gnu.linkonce.d*) - 0x00800196 . = ALIGN (0x2) - *fill* 0x00800195 0x1 - 0x00800196 _edata = . - 0x00800196 PROVIDE (__data_end, .) + 0x008001a2 . = ALIGN (0x2) + *fill* 0x008001a1 0x1 + 0x008001a2 _edata = . + 0x008001a2 PROVIDE (__data_end, .) -.bss 0x00800196 0x3c - 0x00800196 PROVIDE (__bss_start, .) +.bss 0x008001a2 0x43 + 0x008001a2 PROVIDE (__bss_start, .) *(.bss) - .bss 0x00800196 0x3c USBLaminator.o - 0x00800196 b - 0x00800197 a - 0x008001c7 r - 0x008001ca o - 0x008001d1 l + .bss 0x008001a2 0x43 USBLaminator.o + 0x008001a2 b + 0x008001a3 a + 0x008001d3 r + 0x008001dd o + 0x008001e4 l *(.bss*) *(COMMON) - 0x008001d2 PROVIDE (__bss_end, .) - 0x000015ec __data_load_start = LOADADDR (.data) - 0x00001722 __data_load_end = (__data_load_start + SIZEOF (.data)) + 0x008001e5 PROVIDE (__bss_end, .) + 0x00001b88 __data_load_start = LOADADDR (.data) + 0x00001cca __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x008001d2 0x0 - 0x008001d2 PROVIDE (__noinit_start, .) +.noinit 0x008001e5 0x0 + 0x008001e5 PROVIDE (__noinit_start, .) *(.noinit*) - 0x008001d2 PROVIDE (__noinit_end, .) - 0x008001d2 _end = . - 0x008001d2 PROVIDE (__heap_start, .) + 0x008001e5 PROVIDE (__noinit_end, .) + 0x008001e5 _end = . + 0x008001e5 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -694,57 +732,57 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0xa0 +.debug_aranges 0x00000000 0xa8 *(.debug_aranges) .debug_aranges - 0x00000000 0x60 USBLaminator.o + 0x00000000 0x68 USBLaminator.o .debug_aranges - 0x00000060 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + 0x00000068 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) .debug_aranges - 0x00000080 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + 0x00000088 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x756b +.debug_info 0x00000000 0x8098 *(.debug_info) - .debug_info 0x00000000 0x72ba USBLaminator.o - .debug_info 0x000072ba 0x121 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - .debug_info 0x000073db 0x190 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_info 0x00000000 0x7de7 USBLaminator.o + .debug_info 0x00007de7 0x121 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_info 0x00007f08 0x190 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x659 +.debug_abbrev 0x00000000 0x682 *(.debug_abbrev) - .debug_abbrev 0x00000000 0x4c0 USBLaminator.o - .debug_abbrev 0x000004c0 0xad c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - .debug_abbrev 0x0000056d 0xec c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_abbrev 0x00000000 0x4e9 USBLaminator.o + .debug_abbrev 0x000004e9 0xad c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_abbrev 0x00000596 0xec c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) -.debug_line 0x00000000 0xb99 +.debug_line 0x00000000 0xcc0 *(.debug_line) - .debug_line 0x00000000 0x8b3 USBLaminator.o - .debug_line 0x000008b3 0x96 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - .debug_line 0x00000949 0x250 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_line 0x00000000 0x9da USBLaminator.o + .debug_line 0x000009da 0x96 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_line 0x00000a70 0x250 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) -.debug_frame 0x00000000 0x1d8 +.debug_frame 0x00000000 0x21c *(.debug_frame) - .debug_frame 0x00000000 0x134 USBLaminator.o - .debug_frame 0x00000134 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - .debug_frame 0x0000016c 0x6c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_frame 0x00000000 0x178 USBLaminator.o + .debug_frame 0x00000178 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_frame 0x000001b0 0x6c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) -.debug_str 0x00000000 0x1945 +.debug_str 0x00000000 0x1a0c *(.debug_str) - .debug_str 0x00000000 0x185a USBLaminator.o - 0x18c2 (size before relaxing) - .debug_str 0x0000185a 0x7b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_str 0x00000000 0x1921 USBLaminator.o + 0x1996 (size before relaxing) + .debug_str 0x00001921 0x7b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) 0xfc (size before relaxing) - .debug_str 0x000018d5 0x70 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_str 0x0000199c 0x70 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) 0x118 (size before relaxing) -.debug_loc 0x00000000 0x1a95 +.debug_loc 0x00000000 0x1e5f *(.debug_loc) - .debug_loc 0x00000000 0x1479 USBLaminator.o - .debug_loc 0x00001479 0x108 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - .debug_loc 0x00001581 0x514 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_loc 0x00000000 0x1843 USBLaminator.o + .debug_loc 0x00001843 0x108 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_loc 0x0000194b 0x514 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) .debug_macinfo *(.debug_macinfo) @@ -752,11 +790,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0xd0 +.debug_ranges 0x00000000 0xe0 *(.debug_ranges) - .debug_ranges 0x00000000 0xb0 USBLaminator.o - .debug_ranges 0x000000b0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) - .debug_ranges 0x000000c0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) + .debug_ranges 0x00000000 0xc0 USBLaminator.o + .debug_ranges 0x000000c0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtostrf.o) + .debug_ranges 0x000000d0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr5\libc.a(dtoa_prf.o) .debug_macro *(.debug_macro) diff --git a/USBLaminator/USBLaminator/Debug/USBLaminator.srec b/USBLaminator/USBLaminator/Debug/USBLaminator.srec index 28c2bf0..f6a86cd 100644 --- a/USBLaminator/USBLaminator/Debug/USBLaminator.srec +++ b/USBLaminator/USBLaminator/Debug/USBLaminator.srec @@ -1,7 +1,7 @@ S01400005553424C616D696E61746F722E737265637F -S11300000C94A8000C9494050C94D0000C94D0008B -S11300100C94D0000C94D0000C9410050C94D000D7 -S11300200C94D0000C94D0000C94D0000C94D0000C +S11300000C94A8000C94E1070C94D0000C94D0003C +S11300100C94D0000C94D0000C945D070C94D00088 +S11300200C94D0000C94D0000C94D0000C94EF07E6 S11300300C94D0000C94D0000C94D0000C94D000FC S11300400C94D0000C94D0000C94D0000C94D000EC S11300500C94D00000407A10F35A00A0724E180994 @@ -19,12 +19,12 @@ S1130100902E0300943577050080841E080000209B S11301104E0A000000C80C333333330F986E128339 S11301201141EF8D2114893BE65516CFFEE6DB180D S1130130D1844B381BF77C1D901DA4BBE4242032D2 -S113014084725E228100C9F124ECA1E53D270906F1 +S113014084725E228100C9F124ECA1E53D27B70841 S113015011241FBECFE5D4E0DEBFCDBF11E0A0E681 -S1130160B0E0ECEEF5E102C005900D92A639B107BE -S1130170D9F721E0A6E9B1E001C01D92A23DB20782 +S1130160B0E0E8E8FBE102C005900D92A23AB107C5 +S1130170D9F721E0A2EAB1E001C01D92A53EB20781 S1130180E1F711E0C0E5D1E004C02297FE010E942E -S11301904008CE34D107C9F70E94DD010C94F40A5B +S1130190220BCE34D107C9F70E94DD010C94C20DA5 S11301A00C940000CF93C49ABC9AAA98A29AAB98D4 S11301B0A39AAC98A49AAD98A59AAE98A69AAF982B S11301C0A79AE1E9F0E083E2C39ABB9A5D9BFECF74 @@ -59,315 +59,406 @@ S11303808111F6CFC29ABA9A16C0C498BC9AC39A7D S1130390BB9AEFE3F1E083E2C9CF379A2FEF81EE06 S11303A094E0215080409040E1F700C00000ECE46C S11303B0F1E083E2C6CFCF910895CF93DF93CDB719 -S11303C0DEB7AB970FB6F894DEBF0FBECDBF0E9469 -S11303D0D20024E130E039A728A787B1887F87B904 -S11303E087B187B935E33A95F1F70000369A349B23 -S11303F0FECFA4B0B5B087B1887F87B9389A85E3BA -S11304008A95F1F70000369A349BFECF84B095B0FC -S113041099EEA91693E0B90668F4E9EE8E16E3E0C6 -S11304209E0640F4F5E0AF16B10420F025E08216F4 -S1130430910478F4C49ABC9A1092CC011092CD0124 -S11304401092CE011092CF011092D0011092D101DE -S1130450FFCFE7E9F1E06081718180E090E00E94E4 -S113046025076AA37BA38CA39DA3E9E9F1E060813E -S1130470718180E090E00E942507262E372E082FF8 -S1130480192FEBE9F1E06081718180E090E00E9436 -S113049025079B01AC01BAA1ABA1FCA1EDA16B2F77 -S11304A07A2F8F2F9E2F0E9428066B017C01EDE985 -S11304B0F1E06081718180E090E00E9425079B015A -S11304C0AC01622D732D802F912F0E9428069B0171 -S11304D0AC01C701B6010E949106D62EC72EE82EA4 -S11304E0F92E462E572E682E792EB50180E090E025 -S11304F00E9425079B01AC016D2D7C2D8E2D9F2D17 -S11305000E94DB076B017C01A30192015058622D0C -S1130510732D802F912F0E94DB079B01AC01C70133 -S1130520B6010E9429069B01AC01BAA1ABA1FCA1B2 -S1130530EDA16B2F7A2F8F2F9E2F0E9429066AA37D -S11305407BA38CA39DA3EFE9F1E06081718180E03E -S113055090E00E9425076EA37FA38AA79BA7E1EAE8 -S1130560F1E06081718180E090E00E942507262EF1 -S1130570372E082F192FE3EAF1E06081718180E0C2 -S113058090E00E9425079B01AC01BEA1AFA1FAA592 -S1130590EBA56B2F7A2F8F2F9E2F0E9428066B01BD -S11305A07C01E5EAF1E06081718180E090E00E94E5 -S11305B025079B01AC01622D732D802F912F0E9482 -S11305C028069B01AC01C701B6010E949106D62EF4 -S11305D0C72EE82EF92E462E572E682E792EB401FA -S11305E080E090E00E9425079B01AC016D2D7C2DDD -S11305F08E2D9F2D0E94DB076B017C01A3019201CC -S11306005058622D732D802F912F0E94DB079B0180 -S1130610AC01C701B6010E9429069B01AC01BEA131 -S1130620AFA1FAA5EBA56B2F7A2F8F2F9E2F0E94D7 -S113063029066EA37FA3D82EC92E762F6FA1272F4C -S1130640362F4D2D5C2DBAA1ABA1FCA1EDA16B2FD2 -S11306507A2F8F2F9E2F0E94290620E030E040E061 -S11306605FE30E94DB07762E672E582E492EE8ECB6 -S1130670F1E0808191812FEF3FEF318320838F3F21 -S11306803FEF930711F099A788A768A579A56B5F39 -S11306907F4F882777FD8095982F0E942707272D65 -S11306A0362D452D542D0E942806F62EE72E382E81 -S11306B0292E20E030E0A9010E948D0688230CF445 -S11306C099C120E030E040EA51E46F2D7E2D832D66 -S11306D0922D0E94D70718160CF491C13F2D2E2D90 -S11306E0932D822D90C1C39ABB9A5D9BFECF8CB98A -S11306F0C398BB9A81918111F6CF8E01095E1F4F79 -S113070022E04AE06F2D7E2D832D922D0E94440815 -S1130710FC012081222359F03196C39ABB9A5D9B38 -S1130720FECF2CB9C398BB9A21912111F6CFC39A5D -S1130730BB9A5D9BFECF8BE38CB9C398BB9A0F2EFB -S1130740FAE6EF2EF1E0FF2EF02DF70183E6C39ACF -S1130750BB9A5D9BFECF8CB9C398BB9A81918111E2 -S1130760F6CFB4016A0D7B1D80E090E00E9425075E -S113077020E030E040E05FE30E94DB078E01045F8D -S11307801F4F22E04AE00E944408FC0120812223FA -S113079059F03196C39ABB9A5D9BFECF2CB9C3988E -S11307A0BB9A21912111F6CFC39ABB9A5D9BFECFD0 -S11307B08BE38CB9C398BB9AEEE6F1E086E7C39A63 -S11307C0BB9A5D9BFECF8CB9C398BB9A8191811172 -S11307D0F6CF4AE050E0BE01645F7F4FC5010E943E -S11307E06508FC012081222359F03196C39ABB9AF3 -S11307F05D9BFECF2CB9C398BB9A21912111F6CFF2 -S1130800C39ABB9A5D9BFECF8BE38CB9C398BB9A0A -S1130810E2E7F1E086E7C39ABB9A5D9BFECF8CB911 -S1130820C398BB9A81918111F6CF4AE050E0BE0192 -S1130830645F7F4FC4010E946508FC01208122236C -S113084059F03196C39ABB9A5D9BFECF2CB9C398DD -S1130850BB9A21912111F6CFC39ABB9A5D9BFECF1F -S11308608BE38CB9C398BB9A83E6F701C39ABB9A0E -S11308705D9BFECF8CB9C398BB9A81918111F6CF51 -S11308808E010F5F1F4F22E04AE0672D762D852DE4 -S1130890942D0E944408FC012081222359F03196B2 -S11308A0C39ABB9A5D9BFECF2CB9C398BB9A219186 -S11308B02111F6CFC39ABB9A5D9BFECF8BE38CB913 -S11308C0C398BB9AE6E7F1E083E6C39ABB9A5D9BC3 -S11308D0FECF8CB9C398BB9A81918111F6CF8E015A -S11308E00F5F1F4F22E04AE0FAA1EBA15CA13DA1FA -S11308F06F2F7E2F852F932F0E944408FC012081A7 -S1130900222359F03196C39ABB9A5D9BFECF2CB932 -S1130910C398BB9A21912111F6CFC39ABB9A5D9BD0 -S1130920FECF8BE38CB9C398BB9AEAE7F1E083E688 -S1130930C39ABB9A5D9BFECF8CB9C398BB9A819135 -S11309408111F6CF8E010F5F1F4F22E04AE0FEA116 -S1130950EFA16F2F7E2F8D2D9C2D0E944408FC014A -S11309602081222359F03196C39ABB9A5D9BFECF16 -S11309702CB9C398BB9A21912111F6CFC39ABB9A83 -S11309805D9BFECF8BE38CB9C398BB9AEEE7F1E095 -S113099088E6C39ABB9A5D9BFECF8CB9C398BB9A79 -S11309A081918111F6CF9A9B03C0E2E6F1E002C087 -S11309B0EBE5F1E08081882359F03196C39ABB9A24 -S11309C05D9BFECF8CB9C398BB9A81918111F6CF00 -S11309D0C39ABB9A5D9BFECF8AE08CB9C398BB9A3D -S11309E0FFEF21EE34E0F15020403040E1F700C049 -S11309F00000F3CC30E020E090E080E004C030E080 -S1130A0020E090EA81E4482F632F722F892F942FDE -S1130A100E94F9066093CB01E5E8F1E080E763CE3C -S1130A201F920F920FB60F9211242F933F934F935F -S1130A305F936F937F938F939F93AF93BF93EF9342 -S1130A40FF938091CA01843108F451C01092CA0105 -S1130A5051C0822F91916C91961718F1992309F145 -S1130A60BA01022E02C0660F771F0A94E2F7CB0187 -S1130A7060FF02C0AA9AA29A81FF02C0AB9AA39A0D -S1130A8082FF02C0AC9AA49A83FF02C0AD9AA59AD1 -S1130A9084FF02C0AE9AA69A85FF22C0AF9AA79A95 -S1130AA01FC0BA0102C0660F771F8A95E2F7CB0117 -S1130AB060FF02C0AA98A29A81FF02C0AB98A39AD1 -S1130AC082FF02C0AC98A49A83FF02C0AD98A59A95 -S1130AD084FF02C0AE98A69A85FF02C0AF98A79A79 -S1130AE02F5F3F4F2630310509F0B3CF0CC08F5F25 -S1130AF08093CA01EBECF1E020E030E0AAECB1E035 -S1130B0041E050E0A6CFFF91EF91BF91AF919F914B -S1130B108F917F916F915F914F913F912F910F90A2 -S1130B200FBE0F901F9018951F920F920FB60F9241 -S1130B3011248F9380E48ABF8F910F900FBE0F9082 -S1130B401F901895FC01119286E0DF011D928A9591 -S1130B50E9F7A29AA39AA49AA59AA69AA79AAA98F8 -S1130B60A29AAB98A39AAC98A49AAD98A59AAE9879 -S1130B70A69AAF98A79A0895CF93DF931F92CDB703 -S1130B80DEB76983BC9ABB9ABA9AC498BC9AC398D4 -S1130B90BB9AC298BA9A2FEF3FEFFC0132832183AC -S1130BA01BB888E08AB986EA80BD10BC89E189B99E -S1130BB0EAE8F1E085E5C39ABB9A5D9BFECF8CB968 -S1130BC0C398BB9A81918111F6CF0F90DF91CF9199 -S1130BD00895CF93DF931F92CDB7DEB76983BC9A94 -S1130BE0BB9ABA9AC498BC9AC398BB9AC298BA9A48 -S1130BF08A989298929A0F90DF91CF910895BC9A17 -S1130C00BB9ABA9AC498BC9AC398BB9AC298BA9A27 -S1130C10089581ED91E00E94FF058AEC91E00E9425 -S1130C20A20560E087EC91E00E94BC0580E3E0E669 -S1130C30F0E0A7E9B1E001900D928A95E1F784E034 -S1130C4086B917B860E086E991E00E94E905089545 -S1130C505058BB27AA270ED070C161D130F066D19D -S1130C6020F031F49F3F11F41EF456C10EF4E095C8 -S1130C70E7FB4CC1E92F72D180F3BA1762077307FF -S1130C808407950718F071F49EF58AC10EF4E09577 -S1130C900B2EBA2FA02D0B01B90190010C01CA0132 -S1130CA0A0011124FF27591B99F0593F50F4503EDD -S1130CB068F11A16F040A22F232F342F4427585FCF -S1130CC0F3CF469537952795A795F0405395C9F7E7 -S1130CD07EF41F16BA0B620B730B840BBAF091509F -S1130CE0A1F0FF0FBB1F661F771F881FC2F70EC03E -S1130CF0BA0F621F731F841F48F487957795679511 -S1130D00B795F7959E3F08F0B3CF9395880F08F0F9 -S1130D109927EE0F979587950895D4D008F481E02C -S1130D2008950CD00AC102D140F0F9D030F021F47A -S1130D305F3F19F0EBC0511134C1EEC00FD198F3ED -S1130D409923C9F35523B1F3951B550BBB27AA2748 -S1130D5062177307840738F09F5F5F4F220F331FBA -S1130D60441FAA1FA9F333D00E2E3AF0E0E830D086 -S1130D7091505040E695001CCAF729D0FE2F27D089 -S1130D80660F771F881FBB1F261737074807AB0757 -S1130D90B0E809F0BB0B802DBF01FF2793585F4FCC -S1130DA02AF09E3F510568F0B1C0FBC05F3FECF3F1 -S1130DB0983EDCF3869577956795B795F7959F5F91 -S1130DC0C9F7880F911D9695879597F90895E1E0E5 -S1130DD0660F771F881FBB1F621773078407BA0744 -S1130DE020F0621B730B840BBA0BEE1F88F7E0959F -S1130DF00895BCD088F09F5790F0B92F9927B75128 -S1130E00A0F0D1F0660F771F881F991F1AF0BA95CA -S1130E10C9F712C0B13081F0C3D0B1E00895C0C0A9 -S1130E20672F782F8827B85F39F0B93FCCF38695C0 -S1130E3077956795B395D9F73EF49095809570951D -S1130E4061957F4F8F4F9F4F0895E89409C097FB9A -S1130E503EF490958095709561957F4F8F4F9F4F8D -S1130E609923A9F0F92F96E9BB279395F6958795D1 -S1130E7077956795B795F111F8CFFAF4BB0F11F494 -S1130E8060FF1BC06F5F7F4F8F4F9F4F16C088233B -S1130E9011F096E911C0772321F09EE8872F762F71 -S1130EA005C0662371F096E8862F70E060E02AF0B2 -S1130EB09A95660F771F881FDAF7880F969587959E -S1130EC097F90895990F0008550FAA0BE0E8FEEF73 -S1130ED016161706E807F907C0F012161306E407FA -S1130EE0F50798F0621B730B840B950B39F40A26F3 -S1130EF061F0232B242B252B21F408950A2609F4D1 -S1130F00A140A6958FEF811D811D089597F99F67D4 -S1130F1080E870E060E008959FEF80EC089500247D -S1130F200A941616170618060906089500240A944A -S1130F3012161306140605060895092E0394000CD0 -S1130F4011F4882352F0BB0F40F4BF2B11F460FF5F -S1130F5004C06F5F7F4F8F4F9F4F089557FD905888 -S1130F60440F551F59F05F3F71F04795880F97FB69 -S1130F70991F61F09F3F79F0879508951216130623 -S1130F801406551FF2CF4695F1DF08C01616170652 -S1130F901806991FF1CF8695710561050894089587 -S1130FA0E894BB2766277727CB0197F908958ADF52 -S1130FB008F48FEF08950BD0C0CFB1DF28F0B6DF6F -S1130FC018F0952309F0A2CFA7CF1124EACFC6DFEA -S1130FD0A0F3959FD1F3950F50E0551F629FF00148 -S1130FE0729FBB27F00DB11D639FAA27F00DB11DA1 -S1130FF0AA1F649F6627B00DA11D661F829F22272A -S1131000B00DA11D621F739FB00DA11D621F839FB0 -S1131010A00D611D221F749F3327A00D611D231F86 -S1131020849F600D211D822F762F6A2F11249F57D4 -S113103050408AF0E1F088234AF0EE0FFF1FBB1FF7 -S1131040661F771F881F91505040A9F79E3F510596 -S113105070F05CCFA6CF5F3FECF3983EDCF386954F -S113106077956795B795F795E7959F5FC1F7FE2B41 -S1131070880F911D9695879597F90895EE0FFF1F98 -S11310800590F491E02D0994EF920F931F93CF9361 -S1131090C02F47FF02C034E101C034E0E42FFF2732 -S11310A0E7FDF095F7FF03C0F195E195F109E32E13 -S11310B0022F2E2F4C2F512F0E947B088C2F912F03 -S11310C0CF911F910F91EF900895FB019F01423042 -S11310D074F0453264F4642F77270E94E00A805D3F -S11310E08A330CF0895D8193CB010097A1F71082BC -S11310F0C9010C94D00A6F927F929F92AF92BF92D3 -S1131100CF92DF92EF92FF920F931F93CF93DF93CF -S1131110CDB7DEB729970FB6F894DEBF0FBECDBFAB -S11311206A01B22E102F0C3318F4F02EF39402C07F -S11311305CE3F52E0F2D27E0AE014F5F5F4F0E9459 -S1131140F8097981272F2970213031F0E1FC06C09C -S1131150E0FE06C060E205C06DE203C06BE201C0C0 -S113116060E073FF3DC0662311F084E001C083E0BA -S11311708B1510F4B81A01C0B12CE4FC0BC08B2DF4 -S1131180F60190E202C0919381508111FCCFCB0C07 -S1131190D11CB12C662319F0D6016D936D01E2FECA -S11311A00AC08EE4F601808391E491838283F3E0A4 -S11311B0CF0ED11C0CC08EE6D6018C9391E611960D -S11311C09C93119712968C93B3E0CB0ED11C8B2D6C -S11311D0F60190E202C0919381508111FCCF40C08E -S11311E072FF45C0662311F084E001C083E08B15D3 -S11311F010F4B81A01C0B12CE4FC0BC08B2DF6011D -S113120090E202C0919381508111FCCFCB0CD11C90 -S1131210B12C662319F0F60161936F01E2FE0EC052 -S113122089E4D6018C938EE411968C93119786E40D -S113123012968C93B3E0CB0ED11C0AC089E6F6015A -S113124080838EE6818386E68283F3E0CF0ED11C11 -S11312508B2DF60190E202C0919381508111FCCF55 -S1131260F601EB0DF11D10822EEF3FEFACC0A1E0B3 -S1131270611101C0A0E04A2F50E01816190624F4A9 -S11312809C012F5F3F4F02C021E030E0240F351F47 -S1131290112329F0412F50E04F5F5F4F02C040E01F -S11312A050E0420F531F2B2D30E04217530714F424 -S11312B0B41A01C0B12C3E2D3071E4FC0DC0E3FC26 -S11312C00BC02B2DF60140E202C0419321502111A5 -S11312D0FCCFCB0CD11CB12CAA2319F0D6016D93F1 -S11312E06D0131110BC02B2DF60130E302C0319397 -S11312F021502111FCCFCB0CD11CB12CF80E0A814A -S113130040E1A42EA72274FF03C0013309F4FA9428 -S11313101F142CF42F2D293018F028E001C021E0EF -S1131320AC0197FF02C040E050E060E070E03EE2B4 -S1131330932EFC01E21BF1099F01DC01A41BB50BF8 -S1131340FE013196EA0FFB1FA12FB0E0662477243B -S11313506A1A7B0A4F3F1FEF510719F4D6019D9279 -S11313606D018417950754F0241735073CF47F0169 -S1131370E60EF71ED70111961C9101C010E34150EF -S113138051096F5F7F4F4615570524F0D6011D9311 -S11313906D01E0CF4817590739F4063320F40533BB -S11313A019F4A11001C011E3F60111938B2DDF0193 -S11313B090E202C09D9381508111FCCFEB0DF11D91 -S11313C0108220E030E0C90129960FB6F894DEBF00 -S11313D00FBECDBFDF91CF911F910F91FF90EF9082 -S11313E0DF90CF90BF90AF909F907F906F900895C3 -S11313F0283008F027E03327DA01990F311D87FDE3 -S1131400916000966105710539F432602E5F3D9359 -S113141030E32A95E1F708959F3F30F08038710555 -S1131420610509F03C5F3C5F3D93913008F08068B2 -S1131430911DDF93CF931F930F93FF92EF92192F78 -S1131440987F9695E92F96959695E90FFF27E25593 -S1131450FF4F99273327EE24FF24A701E7010590C6 -S11314600894079428F4360FE71EF81E491F511DEF -S1131470660F771F881F991F0694A1F7059007949C -S113148028F4E70EF81E491F561FC11D770F881F49 -S1131490991F661F0694A1F70590079428F4F80E87 -S11314A0491F561FC71FD11D880F991F661F771F1D -S11314B00694A1F70590079420F4490F561FC71FFF -S11314C0D81F990F661F771F881F0694A9F7849168 -S11314D01095177041F0D695C79557954795F79491 -S11314E0E7941A95C1F7E4E5F0E068941590159136 -S11314F035916591959105907FE27395E118F10A14 -S1131500430B560BC90BD009C0F7E10CF11E431F66 -S1131510561FC91FD01D7EF4703311F48A95E6CF8F -S1131520E894015030F0080F0AF40027021708F479 -S1131530202F2395022F7A3328F079E37D932A957F -S1131540E9F710C07D932A9589F6069497956795D7 -S1131550379517951794E118F10A430B560BC90BED -S1131560D00998F023957E9173957A3308F070E34F -S11315707C932013B8F77E9170617D9330F083954E -S113158071E37D9370E32A95E1F71124EF90FF90C6 -S11315900F911F91CF91DF91992787FD9095089521 -S11315A0DC01FC01672F71917723E1F7329704C0C6 -S11315B07C916D9370836291AE17BF07C8F3089551 -S11315C0AA1BBB1B51E107C0AA1FBB1FA617B70765 -S11315D010F0A61BB70B881F991F5A95A9F7809581 -S10F15E09095BC01CD010895F894FFCF54 -S11315EC1F00FC01C80080011F00F801C800700135 -S11315FC00000000000000000000000000000000DB -S113160C00000000000000000000000000000000CA -S113161C2323232320426567696E20426F6F747500 -S113162C7020232323232323232323232323232330 -S113163C232323232323232323232323232323236A -S113164C23232323232323232323230A0023205468 -S113165C657374204F75747075740A002320536578 -S113166C7475702054696D65720A002323204F75BC -S113167C7470757420496E697420446F6E65210A08 -S113168C002323232320456E6420426F6F747570EE -S113169C202323232323232323232323232323230D -S11316AC23232323232323232323232323232323FA -S11316BC2323232323232323232323230A00232029 -S11316CC5365747570204144430A00232053657498 -S11316DC757020427574746F6E0A006D6F6E3D30B8 -S11316EC3B006D6F6E3D313B00636D3D0076303DCC -S11316FC0076313D0063303D0063313D00686F6E10 -S113170C3D303B0070776D3D005561727420646F01 -S109171C6E65210A0000C5 +S11303C0DEB7C35AD1090FB6F894DEBF0FBECDBF56 +S11303D00E94D20088E2FE01B996DF01282F1D9207 +S11303E02A95E9F7FE013196DF011D928A95E9F716 +S11303F0C956DF4F1882C759D040B4E1CA56DF4FFF +S1130400B883C659D040E4E1F0E0CC56DF4FF9831D +S1130410E883C459D0409E012F5F3F4FC857DF4F38 +S113042039832883C858D040CE55DF4F2883C25A19 +S1130430D040CD55DF4F3883C35AD0400F2EF9E258 +S1130440AF2EB12CF02DAC0EBD1E38E2A30EB11CA4 +S1130450C956DF4F8881C759D040482F50E087B133 +S1130460887F87B987B187B995E39A95F1F700003A +S1130470369A349BFECF84B195B1FA01EE0FFF1F7B +S1130480A1E0B0E0AC0FBD1FEA0FFB1F91A780A74E +S113049087B1887F87B9389AB5E3BA95F1F7000038 +S11304A0369A349BFECF84B195B1FA01EE0FFF1F4B +S11304B021E030E02C0F3D1FE20FF31F9183808376 +S11304C0FE01B996CE55DF4FA881C25AD040CD5512 +S11304D0DF4FB881C35AD04000E010E020E030E0A4 +S11304E081919191280F391F8D919D91080F191FAA +S11304F0EA15FB05A9F7ADECBCEC0E94000B7C01EE +S1130500F694E794F694E794F694E794F694E794D3 +S113051098010E94000B6C01D694C794D694C7949A +S1130520D694C794D694C794CA01019664E170E046 +S11305300E94EC0AC956DF4F8883C759D04039EE70 +S1130540E31633E0F30668F489EEC81683E0D806B0 +S113055040F495E0E916F10420F0A5E0CA16D104B0 +S113056068F4C49ABC9A1092E0011092E1011092CE +S1130570E2011092E3011092E401FFCFE3EAF1E01B +S11305806081718180E090E00E94D309362E272E8D +S1130590C657DF4F8883CA58D040C557DF4F98836A +S11305A0CB58D040A5EAB1E06D917C9180E090E019 +S11305B00E94D309062F172F982E892EE7EAF1E01F +S11305C06081718180E090E00E94D3099B01AC01BD +S11305D0C657DF4FF881CA58D040C557DF4FE8816E +S11305E0CB58D040632D722D8F2F9E2F0E94D6089A +S11305F02B013C016091A9017091AA0180E090E077 +S11306000E94D3099B01AC01602F712F892D982D75 +S11306100E94D6089B01AC01C301B2010E943F09AC +S1130620562E472E682E792E862F942DA62DB72D63 +S1130630C457DF4F88839983AA83BB83CC58D040A7 +S1130640B70180E090E00E94D3099B01AC01652DC5 +S1130650742D862D972D0E94890A2B013C01C457C5 +S1130660DF4F288139814A815B81CC58D040505872 +S1130670602F712F892D982D0E94890A9B01AC014E +S1130680C301B2010E94D7089B01AC01C657DF4FDA +S1130690F881CA58D040C557DF4FE881CB58D040C5 +S11306A0632D722D8F2F9E2F0E94D708C457DF4FC2 +S11306B06883CC58D040C856DF4F7883C859D0409F +S11306C0C756DF4F8883C959D040C656DF4F988339 +S11306D0CA59D0406091AB017091AC0180E090E0C8 +S11306E00E94D309362E272EC657DF4F8883CA5857 +S11306F0D040C557DF4F9883CB58D0406091AD01AF +S11307007091AE0180E090E00E94D309062F172F6C +S1130710982E892E6091AF017091B00180E090E035 +S11307200E94D3099B01AC01C657DF4FF881CA5818 +S1130730D040C557DF4FE881CB58D040632D722D90 +S11307408F2F9E2F0E94D6082B013C016091B1018E +S11307507091B20180E090E00E94D3099B01AC014A +S1130760602F712F892D982D0E94D6089B01AC0112 +S1130770C301B2010E943F09562E472E682E792EDE +S1130780862F942DA62DB72DC057DF4F88839983CC +S1130790AA83BB83C059D040B60180E090E00E9498 +S11307A0D3099B01AC01652D742D862D972D0E94D4 +S11307B0890A2B013C01C057DF4F288139814A81C6 +S11307C05B81C059D0405058602F712F892D982DCE +S11307D00E94890A9B01AC01C301B2010E94D7089F +S11307E09B01AC01C657DF4FF881CA58D040C557AA +S11307F0DF4FE881CB58D040632D722D8F2F9E2F71 +S11308000E94D708C057DF4F6883C059D040C556EF +S1130810DF4F7883CB59D040C456DF4F8883CC59FF +S1130820D040C356DF4F9883CD59D040762FC5565C +S1130830DF4F6881CB59D040982FC356DF4F888152 +S1130840CD59D040272F362F492F582FC457DF4F6B +S1130850B881CC58D040C856DF4FA881C859D04081 +S1130860C756DF4FF881C959D040C656DF4FE881DB +S1130870CA59D0406B2F7A2F8F2F9E2F0E94D708F2 +S113088020E030E040E05FE30E94890AC256DF4F77 +S11308906883CE59D040C156DF4F7883CF59D040BA +S11308A0C056DF4F8883C05AD040CF55DF4F98835E +S11308B0C15AD040E4EDF1E0808191812FEF3FEF08 +S11308C0318320838F3FFFEF9F0731F0CC56DF4FFA +S11308D099838883C459D040E6EDF1E080819FEF8D +S11308E090838F3F29F0CA56DF4F8883C659D04082 +S11308F0CC56DF4F68817981C459D0406B5F7F4FFC +S1130900882777FD8095982F0E94D509C256DF4F1E +S1130910B881CE59D040C156DF4FA881CF59D040BD +S1130920C056DF4FF881C05AD040CF55DF4FE88121 +S1130930C15AD0402B2F3A2F4F2F5E2F0E94D6083A +S1130940962E872E782E692E20E030E0A9010E9491 +S11309503B0988238CF020E030E040EA51E4692D23 +S1130960782D872D962D0E94850A181654F0392D5E +S1130970282D972D862D09C030E020E090E080E0FE +S113098004C030E020E090EA81E4482F632F722F06 +S1130990892F942F0E94A7096093DE01CA56DF4F66 +S11309A02881C659D040622F772767FD7095872F1D +S11309B0972F0E94D509262E372E082F192F462E41 +S11309C0572EC657DF4F8883CA58D040C557DF4FCC +S11309D09883CB58D04020E030E0A9010E943B0925 +S11309E088230CF439C220E030E040EA51E4622D5F +S11309F0732D802F912F0E94850A18160CF439C28A +S1130A0046C2C39ABB9A5D9BFECF8CB9C398BB9A6E +S1130A1081918111F6CF8E0103581F4F22E04AE0E5 +S1130A20692D782D872D962D0E94260BDC012C91A3 +S1130A30222361F0FC013196C39ABB9A5D9BFECFE1 +S1130A402CB9C398BB9A21912111F6CFC39ABB9AB2 +S1130A505D9BFECF8BE38CB9C398BB9AE6E7F1E0CC +S1130A6086E7C39ABB9A5D9BFECF8CB9C398BB9AA9 +S1130A7081918111F6CFB6016E0D7F1D80E090E06B +S1130A800E94D30920E030E040E05FE30E94890A3D +S1130A908E010E581F4F22E04AE00E94260BFC01F3 +S1130AA02081222359F03196C39ABB9A5D9BFECFD5 +S1130AB02CB9C398BB9A21912111F6CFC39ABB9A42 +S1130AC05D9BFECF8BE38CB9C398BB9AEAE7F1E058 +S1130AD086E7C39ABB9A5D9BFECF8CB9C398BB9A39 +S1130AE081918111F6CF4AE050E0BE016E587F4FEC +S1130AF0C7010E94470BDC012C91222361F0FC0109 +S1130B003196C39ABB9A5D9BFECF2CB9C398BB9A0E +S1130B1021912111F6CFC39ABB9A5D9BFECF8BE343 +S1130B208CB9C398BB9AEEE7F1E086E7C39ABB9A07 +S1130B305D9BFECF8CB9C398BB9A81918111F6CF8E +S1130B404AE050E0BE016E587F4FC6010E94470B39 +S1130B50FC012081222359F03196C39ABB9A5D9BF4 +S1130B60FECF2CB9C398BB9A21912111F6CFC39A19 +S1130B70BB9A5D9BFECF8BE38CB9C398BB9AE2E82A +S1130B80F1E083E6C39ABB9A5D9BFECF8CB9C39810 +S1130B90BB9A81918111F6CF8E0109591F4F22E032 +S1130BA04AE0C256DF4FF881CE59D040C156DF4FDC +S1130BB0E881CF59D040C056DF4F5881C05AD04049 +S1130BC0CF55DF4F3881C15AD0406F2F7E2F852FEC +S1130BD0932F0E94260BDC012C91222361F0FC014F +S1130BE03196C39ABB9A5D9BFECF2CB9C398BB9A2E +S1130BF021912111F6CFC39ABB9A5D9BFECF8BE363 +S1130C008CB9C398BB9AE6E8F1E083E6C39ABB9A31 +S1130C105D9BFECF8CB9C398BB9A81918111F6CFAD +S1130C208E0109591F4F22E04AE0C457DF4FF88173 +S1130C30CC58D040C856DF4FE881C859D040C75679 +S1130C40DF4F5881C959D040C656DF4F3881CA5941 +S1130C50D0406F2F7E2F852F932F0E94260BFC01EF +S1130C602081222359F03196C39ABB9A5D9BFECF13 +S1130C702CB9C398BB9A21912111F6CFC39ABB9A80 +S1130C805D9BFECF8BE38CB9C398BB9AEAE8F1E095 +S1130C9083E6C39ABB9A5D9BFECF8CB9C398BB9A7B +S1130CA081918111F6CF8E0109591F4F22E04AE04C +S1130CB0C057DF4FF881C059D040C556DF4FE88197 +S1130CC0CB59D040C456DF4F5881CC59D040C3567D +S1130CD0DF4F3881CD59D0406F2F7E2F852F932F32 +S1130CE00E94260BDC012C91222361F0FC01319639 +S1130CF0C39ABB9A5D9BFECF2CB9C398BB9A219132 +S1130D002111F6CFC39ABB9A5D9BFECF8BE38CB9BE +S1130D10C398BB9AEEE8F1E084E7C39ABB9A5D9B63 +S1130D20FECF8CB9C398BB9A81918111F6CF4AE06A +S1130D3050E0BE01645A7F4FCC56DF4F88819981C1 +S1130D40C459D0400E94470BFC012081222359F052 +S1130D503196C39ABB9A5D9BFECF2CB9C398BB9ABC +S1130D6021912111F6CFC39ABB9A5D9BFECF8BE3F1 +S1130D708CB9C398BB9AE3E8F1E08DE6C39ABB9AB9 +S1130D805D9BFECF8CB9C398BB9A81918111F6CF3C +S1130D904AE050E0BE016F5A7F4FCA56DF4FF881D8 +S1130DA0C659D0408F2F992787FD90950E94470BF5 +S1130DB0DC012C91222361F0FC013196C39ABB9A89 +S1130DC05D9BFECF2CB9C398BB9A21912111F6CF1C +S1130DD0C39ABB9A5D9BFECF8BE38CB9C398BB9A35 +S1130DE09A9B03C0E2E6F1E002C0EBE5F1E080810A +S1130DF0882359F03196C39ABB9A5D9BFECF8CB978 +S1130E00C398BB9A81918111F6CF9B9B03C0EFE6F7 +S1130E10F1E002C0E9E6F1E08081882359F03196DF +S1130E20C39ABB9A5D9BFECF8CB9C398BB9A819140 +S1130E308111F6CFC39ABB9A5D9BFECF8AE08CB931 +S1130E40C398BB9ABFEFE0E7F2E0B150E040F04056 +S1130E50E1F700C00000FCCA412C512CC657DF4FFB +S1130E601882CA58D040C557DF4F1882CB58D0409B +S1130E700EC0412C512C20EAC657DF4F2883CA5894 +S1130E80D04031E4C557DF4F3883CB58D040C657E4 +S1130E90DF4F3881CA58D040C557DF4F2881CB581F +S1130EA0D040642D752D832F922F0E94A709609343 +S1130EB0DF01E1E9F1E080E7A4CD1F920F920FB6C4 +S1130EC00F9211242F933F934F935F936F937F93CC +S1130ED08F939F93AF93BF93EF93FF938091DD0123 +S1130EE0843108F451C01092DD0151C0822F9191D8 +S1130EF06C91961718F1992309F1BA01022E02C0D8 +S1130F00660F771F0A94E2F7CB0160FF02C0AA9A2A +S1130F10A29A81FF02C0AB9AA39A82FF02C0AC9A44 +S1130F20A49A83FF02C0AD9AA59A84FF02C0AE9A28 +S1130F30A69A85FF22C0AF9AA79A1FC0BA0102C021 +S1130F40660F771F8A95E2F7CB0160FF02C0AA986B +S1130F50A29A81FF02C0AB98A39A82FF02C0AC9808 +S1130F60A49A83FF02C0AD98A59A84FF02C0AE98EC +S1130F70A69A85FF02C0AF98A79A2F5F3F4F2630ED +S1130F80310509F0B3CF0CC08F5F8093DD01EEED26 +S1130F90F1E020E030E0ADEDB1E041E050E0A6CF7B +S1130FA0FF91EF91BF91AF919F918F917F916F913D +S1130FB05F914F913F912F910F900FBE0F901F9013 +S1130FC018951F920F920FB60F9211248F9380E4FD +S1130FD08ABF8F910F900FBE0F901F9018951F928C +S1130FE00F920FB60F9211242F933F934F938F9329 +S1130FF09F93EF93FF938CB18A3079F08D3069F031 +S11310009091D701953048F4E92FF0E0ED52FE4F6E +S113101085839F5F9093D70133C08091D801843733 +S1131020F1F44091D9018091DA0190E0880F991F81 +S11310309C01220F331F220F331F820F931F24E6BC +S1131040429F800D911D11242091DB01820F911D7F +S1131050805D94419093D5018093D4010FC08D3667 +S113106069F49091DA0190518091D901880F282F69 +S1131070220F220F820F890F8093D6011092D7017D +S1131080FF91EF919F918F914F913F912F910F90ED +S11310900FBE0F901F901895FC01119286E0DF019E +S11310A01D928A95E9F7A29AA39AA49AA59AA69A58 +S11310B0A79AAA98A29AAB98A39AAC98A49AAD9826 +S11310C0A59AAE98A69AAF98A79A0895CF93DF935E +S11310D01F92CDB7DEB7FC016983BC9ABB9ABA9A5A +S11310E0C498BC9AC398BB9AC298BA9A8FEF9FEFE0 +S11310F0928381838FEF838314821BB888E98AB932 +S113110086EA80BD10BC89E189B97894E6E9F1E00A +S113111085E5C39ABB9A5D9BFECF8CB9C398BB9AF5 +S113112081918111F6CF0F90DF91CF910895CF93E4 +S1131130DF931F92CDB7DEB76983BC9ABB9ABA9A84 +S1131140C498BC9AC398BB9AC298BA9A8A9892983F +S1131150929A0F90DF91CF910895BC9ABB9ABA9A54 +S1131160C498BC9AC398BB9AC298BA9A089584EE5C +S113117091E00E94AD088DED91E00E944C0860E082 +S113118083ED91E00E94660880E3E0E6F0E0A3EAE4 +S1131190B1E001900D928A95E1F784E086B917B821 +S11311A060E082EA91E00E94970808955058BB27B6 +S11311B0AA270ED070C161D130F066D120F031F48D +S11311C09F3F11F41EF456C10EF4E095E7FB4CC1A9 +S11311D0E92F72D180F3BA17620773078407950762 +S11311E018F071F49EF58AC10EF4E0950B2EBA2F17 +S11311F0A02D0B01B90190010C01CA01A001112419 +S1131200FF27591B99F0593F50F4503E68F11A16C4 +S1131210F040A22F232F342F4427585FF3CF469555 +S113122037952795A795F0405395C9F77EF41F1677 +S1131230BA0B620B730B840BBAF09150A1F0FF0F41 +S1131240BB1F661F771F881FC2F70EC0BA0F621F2D +S1131250731F841F48F4879577956795B795F7951D +S11312609E3F08F0B3CF9395880F08F09927EE0FAF +S1131270979587950895D4D008F481E008950CD00B +S11312800AC102D140F0F9D030F021F45F3F19F0E7 +S1131290EBC0511134C1EEC00FD198F39923C9F3B7 +S11312A05523B1F3951B550BBB27AA276217730768 +S11312B0840738F09F5F5F4F220F331F441FAA1F1C +S11312C0A9F333D00E2E3AF0E0E830D091505040DC +S11312D0E695001CCAF729D0FE2F27D0660F771F8A +S11312E0881FBB1F261737074807AB07B0E809F06C +S11312F0BB0B802DBF01FF2793585F4F2AF09E3F01 +S1131300510568F0B1C0FBC05F3FECF3983EDCF3DD +S1131310869577956795B795F7959F5FC9F7880F79 +S1131320911D9695879597F90895E1E0660F771FCB +S1131330881FBB1F621773078407BA0720F0621B5C +S1131340730B840BBA0BEE1F88F7E0950895BCD09D +S113135088F09F5790F0B92F9927B751A0F0D1F09A +S1131360660F771F881F991F1AF0BA95C9F712C024 +S1131370B13081F0C3D0B1E00895C0C0672F782F99 +S11313808827B85F39F0B93FCCF386957795679590 +S1131390B395D9F73EF490958095709561957F4FFC +S11313A08F4F9F4F0895E89409C097FB3EF49095A2 +S11313B08095709561957F4F8F4F9F4F9923A9F02A +S11313C0F92F96E9BB279395F695879577956795B9 +S11313D0B795F111F8CFFAF4BB0F11F460FF1BC0FD +S11313E06F5F7F4F8F4F9F4F16C0882311F096E990 +S11313F011C0772321F09EE8872F762F05C066233E +S113140071F096E8862F70E060E02AF09A95660FF6 +S1131410771F881FDAF7880F9695879597F90895AF +S1131420990F0008550FAA0BE0E8FEEF16161706F1 +S1131430E807F907C0F012161306E407F50798F059 +S1131440621B730B840B950B39F40A2661F0232B72 +S1131450242B252B21F408950A2609F4A140A695EE +S11314608FEF811D811D089597F99F6780E870E0D3 +S113147060E008959FEF80EC089500240A94161606 +S1131480170618060906089500240A94121613066E +S1131490140605060895092E0394000C11F48823FC +S11314A052F0BB0F40F4BF2B11F460FF04C06F5F18 +S11314B07F4F8F4F9F4F089557FD9058440F551FEE +S11314C059F05F3F71F04795880F97FB991F61F0C2 +S11314D09F3F79F087950895121613061406551F39 +S11314E0F2CF4695F1DF08C0161617061806991FA5 +S11314F0F1CF86957105610508940895E894BB279A +S113150066277727CB0197F908958ADF08F48FEFD0 +S113151008950BD0C0CFB1DF28F0B6DF18F09523C3 +S113152009F0A2CFA7CF1124EACFC6DFA0F3959F7D +S1131530D1F3950F50E0551F629FF001729FBB27B6 +S1131540F00DB11D639FAA27F00DB11DAA1F649F62 +S11315506627B00DA11D661F829F2227B00DA11D15 +S1131560621F739FB00DA11D621F839FA00D611D9B +S1131570221F749F3327A00D611D231F849F600DBC +S1131580211D822F762F6A2F11249F5750408AF0F5 +S1131590E1F088234AF0EE0FFF1FBB1F661F771F81 +S11315A0881F91505040A9F79E3F510570F05CCFC1 +S11315B0A6CF5F3FECF3983EDCF38695779567956D +S11315C0B795F795E7959F5FC1F7FE2B880F911D9F +S11315D09695879597F9089597FB072E16F400942E +S11315E007D077FD09D00E940C0B07FC05D03EF410 +S11315F0909581959F4F0895709561957F4F0895BB +S1131600A29FB001B39FC001A39F01D0B29F700DF0 +S1131610811D1124911D0895AA1BBB1B51E107C014 +S1131620AA1FBB1FA617B70710F0A61BB70B881F6E +S1131630991F5A95A9F780959095BC01CD010895FD +S1131640EE0FFF1F0590F491E02D0994EF920F9394 +S11316501F93CF93C02F47FF02C034E101C034E091 +S1131660E42FFF27E7FDF095F7FF03C0F195E1951F +S1131670F109E32E022F2E2F4C2F512F0E945D0BC8 +S11316808C2F912FCF911F910F91EF900895FB0113 +S11316909F01423074F0453264F4642F77270E942E +S11316A00C0B805D8A330CF0895D8193CB0100972C +S11316B0A1F71082C9010C94B20D6F927F929F9290 +S11316C0AF92BF92CF92DF92EF92FF920F931F934C +S11316D0CF93DF93CDB7DEB729970FB6F894DEBF6B +S11316E00FBECDBF6A01B22E102F0C3318F4F02EAA +S11316F0F39402C05CE3F52E0F2D27E0AE014F5F9B +S11317005F4F0E94DA0C7981272F2970213031F044 +S1131710E1FC06C0E0FE06C060E205C06DE203C065 +S11317206BE201C060E073FF3DC0662311F084E00A +S113173001C083E08B1510F4B81A01C0B12CE4FC8D +S11317400BC08B2DF60190E202C091938150811160 +S1131750FCCFCB0CD11CB12C662319F0D6016D93B0 +S11317606D01E2FE0AC08EE4F601808391E4918368 +S11317708283F3E0CF0ED11C0CC08EE6D6018C938D +S113178091E611969C93119712968C93B3E0CB0E2D +S1131790D11C8B2DF60190E202C0919381508111EE +S11317A0FCCF40C072FF45C0662311F084E001C045 +S11317B083E08B1510F4B81A01C0B12CE4FC0BC003 +S11317C08B2DF60190E202C0919381508111FCCFE0 +S11317D0CB0CD11CB12C662319F0F60161936F0177 +S11317E0E2FE0EC089E4D6018C938EE411968C93AC +S11317F0119786E412968C93B3E0CB0ED11C0AC0E9 +S113180089E6F60180838EE6818386E68283F3E0AF +S1131810CF0ED11C8B2DF60190E202C09193815022 +S11318208111FCCFF601EB0DF11D10822EEF3FEF7D +S1131830ACC0A1E0611101C0A0E04A2F50E018162D +S1131840190624F49C012F5F3F4F02C021E030E0D1 +S1131850240F351F112329F0412F50E04F5F5F4FB4 +S113186002C040E050E0420F531F2B2D30E04217DE +S1131870530714F4B41A01C0B12C3E2D3071E4FCAA +S11318800DC0E3FC0BC02B2DF60140E202C04193D6 +S113189021502111FCCFCB0CD11CB12CAA2319F05F +S11318A0D6016D936D0131110BC02B2DF60130E380 +S11318B002C0319321502111FCCFCB0CD11CB12C8F +S11318C0F80E0A8140E1A42EA72274FF03C001335D +S11318D009F4FA941F142CF42F2D293018F028E061 +S11318E001C021E0AC0197FF02C040E050E060E09D +S11318F070E03EE2932EFC01E21BF1099F01DC0142 +S1131900A41BB50BFE013196EA0FFB1FA12FB0E01B +S1131910662477246A1A7B0A4F3F1FEF510719F494 +S1131920D6019D926D018417950754F0241735074D +S11319303CF47F01E60EF71ED70111961C9101C0FD +S113194010E3415051096F5F7F4F4615570524F04E +S1131950D6011D936D01E0CF4817590739F40633BA +S113196020F4053319F4A11001C011E3F601119319 +S11319708B2DDF0190E202C09D9381508111FCCF39 +S1131980EB0DF11D108220E030E0C90129960FB65D +S1131990F894DEBF0FBECDBFDF91CF911F910F91A1 +S11319A0FF90EF90DF90CF90BF90AF909F907F908B +S11319B06F900895283008F027E03327DA01990F53 +S11319C0311D87FD916000966105710539F432601F +S11319D02E5F3D9330E32A95E1F708959F3F30F061 +S11319E080387105610509F03C5F3C5F3D9391309F +S11319F008F08068911DDF93CF931F930F93FF929C +S1131A00EF92192F987F9695E92F96959695E90F61 +S1131A10FF27E255FF4F99273327EE24FF24A70120 +S1131A20E70105900894079428F4360FE71EF81E82 +S1131A30491F511D660F771F881F991F0694A1F730 +S1131A400590079428F4E70EF81E491F561FC11D80 +S1131A50770F881F991F661F0694A1F705900794B6 +S1131A6028F4F80E491F561FC71FD11D880F991F50 +S1131A70661F771F0694A1F70590079420F4490F79 +S1131A80561FC71FD81F990F661F771F881F0694FC +S1131A90A9F784911095177041F0D695C79557957D +S1131AA04795F794E7941A95C1F7E4E5F0E0689454 +S1131AB01590159135916591959105907FE27395F7 +S1131AC0E118F10A430B560BC90BD009C0F7E10C1E +S1131AD0F11E431F561FC91FD01D7EF4703311F42D +S1131AE08A95E6CFE894015030F0080F0AF40027F5 +S1131AF0021708F4202F2395022F7A3328F079E374 +S1131B007D932A95E9F710C07D932A9589F606946A +S1131B1097956795379517951794E118F10A430B34 +S1131B20560BC90BD00998F023957E9173957A339F +S1131B3008F070E37C932013B8F77E9170617D9375 +S1131B4030F0839571E37D9370E32A95E1F71124D6 +S1131B50EF90FF900F911F91CF91DF91992787FD0F +S1131B6090950895DC01FC01672F71917723E1F7CB +S1131B70329704C07C916D9370836291AE17BF0756 +S10B1B80C8F30895F894FFCFA7 +S1131B881F00FC01C80080011F00F801C800800183 +S1131B980000000000000000000000000000000039 +S1131BA80000000000000000000000000000000029 +S1131BB82323232320426567696E20426F6F74755F +S1131BC8702023232323232323232323232323238F +S1131BD823232323232323232323232323232323C9 +S1131BE823232323232323232323230A00232054C7 +S1131BF8657374204F75747075740A0023205365D7 +S1131C087475702054696D65720A002323204F751A +S1131C187470757420496E697420446F6E65210A66 +S1131C28002323232320456E6420426F6F7475704C +S1131C38202323232323232323232323232323236B +S1131C482323232323232323232323232323232358 +S1131C582323232323232323232323230A00232087 +S1131C685365747570204144430A002320536574F6 +S1131C78757020427574746F6E0A00686F6E3D301B +S1131C883B00686F6E3D313B006D6F6E3D30006DFB +S1131C986F6E3D3100766D3D0076303D0076313D06 +S1131CA800636D3D0063303D0063313D00743D00C9 +S1131CB870776D3D005561727420646F6E65210AFA +S1051CC8000016 S9030000FC diff --git a/USBLaminator/USBLaminator/USBLaminator.cpp b/USBLaminator/USBLaminator/USBLaminator.cpp index 962b249..6ce23e9 100644 --- a/USBLaminator/USBLaminator/USBLaminator.cpp +++ b/USBLaminator/USBLaminator/USBLaminator.cpp @@ -39,11 +39,25 @@ int main(void) { setup(); int16_t target_temp = 20; + int8_t target_motor = 20; float pwm_value = 0; + uint16_t v0a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t v1a[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint8_t p = 0; while(1) { - uint16_t v0 = a.get(0); - uint16_t v1 = a.get(1); + v0a[p] = a.get(0); + v1a[p] = a.get(1); + uint16_t v0s = 0; + uint16_t v1s = 0; + for (uint8_t i = 0; i < 20; i++) + { + v0s += v0a[i]; + v1s += v1a[i]; + } + uint16_t v0 = v0s/20; + uint16_t v1 = v1s/20; + p = (p + 1) % 20; if(v0 > 1000 || v1 > 1000 || v0 < 5 || v1 < 5) { l.on(l.RED); o.stop(); @@ -56,21 +70,26 @@ int main(void) if(temp != -1) { target_temp = temp; } + int8_t motor = r.readMotor(); + if(motor != -1) { + target_motor = motor; + } pwm_value = (target_temp+5) - tm; o.setPwm(0, pwm_value); + o.setPwm(1, target_motor); char pw[11]; r.send("pwm="); r.send(dtostrf(pwm_value, 10, 2, pw)); r.send(";"); - char vs[11]; r.send("cm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); + char vs[11]; r.send("vm="); r.send(dtostrf((((float)(v0+v1))/2), 10, 2, vs)); r.send(";"); r.send("v0="); r.send(utoa(v0, vs, 10)); r.send(";"); r.send("v1="); r.send(utoa(v1, vs, 10)); r.send(";"); char cs[11]; r.send("cm="); r.send(dtostrf(tm, 10, 2, cs)); r.send(";"); r.send("c0="); r.send(dtostrf(t0, 10, 2, cs)); r.send(";"); r.send("c1="); r.send(dtostrf(t1, 10, 2, cs)); r.send(";"); - //temp_ziel_wert - //motor_ziel_wert - r.send((o.isOn(0)==1)?"hon=1;":"hon=0;"); - r.send((o.isOn(1)==1)?"mon=1;":"mon=0;"); + char ts[11]; r.send("t="); r.send(utoa(target_temp, ts, 10)); r.send(";"); + char ms[11]; r.send("m="); r.send(utoa(target_motor, ms, 10)); r.send(";"); + r.send((o.isOn(o.OUT1)==1)?"hon=1;":"hon=0;"); + r.send((o.isOn(o.OUT2)==1)?"mon=1":"mon=0"); r.send("\n"); - _delay_ms(100); + _delay_ms(50); } } @@ -80,4 +99,8 @@ ISR(TIMER1_COMPA_vect) { ISR(INT0_vect) { b.intr(); +} + +ISR(USART_RXC_vect) { + r.intr(); } \ No newline at end of file diff --git a/USBLaminator/USBLaminator/io/ADC.hpp b/USBLaminator/USBLaminator/io/ADC.hpp index fe4a576..6f7dab1 100644 --- a/USBLaminator/USBLaminator/io/ADC.hpp +++ b/USBLaminator/USBLaminator/io/ADC.hpp @@ -51,8 +51,8 @@ class Adc { } } const uint16_t table[6][4] = { - {31, 508, 200, 384}, //ADC-Wert=520 @ 31°C, 84 @ 180°C - {31, 504, 200, 368}, //ADC-Wert=144 @ 26°C, 84 @ 180°C + {31, 508, 200, 384}, //ADC-Wert=508 @ 31°C, 384 @ 200°C + {31, 504, 200, 384}, //ADC-Wert=504 @ 31°C, 368 @ 200°C {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, diff --git a/USBLaminator/USBLaminator/io/Usart.hpp b/USBLaminator/USBLaminator/io/Usart.hpp index f6fb385..968fdfd 100644 --- a/USBLaminator/USBLaminator/io/Usart.hpp +++ b/USBLaminator/USBLaminator/io/Usart.hpp @@ -32,13 +32,35 @@ class Usart { this->temp = -1; return t; } + int8_t readMotor() { + int8_t m = this->motor; + this->motor = -1; + return m; + } + void intr() { + uint8_t nextChar = UDR; + //uart_putchar(nextChar); + if( nextChar != '\n' && nextChar != '\r' && this->uart_str_count < this->UART_MAXSTRLEN ) { + this->uart_string[this->uart_str_count] = nextChar; + this->uart_str_count++; + } else { + if(this->uart_string[0] == 't') { + this->temp = (this->uart_string[1]-48)*100+(this->uart_string[2]-48)*10+(this->uart_string[3]-48); + } + if(uart_string[0] == 'm') { + this->motor = (this->uart_string[1]-48)*10+(this->uart_string[2]-48); + } + this->uart_str_count = 0; + } + } private: void init() { UCSRA = 0; - UCSRB = (1< rts; const typedef avrlib::pin cts; const typedef avrlib::pin pwren; - int16_t temp = -1; + volatile int16_t temp = -1; + volatile int8_t motor = -1; + static const uint8_t UART_MAXSTRLEN = 5; + uint8_t uart_str_count = 0; + uint8_t uart_string[UART_MAXSTRLEN]; + }; #endif /* USART_H_ */ \ No newline at end of file