diff --git a/Documents/Dokumentation BJ-Keyer.aux b/Documents/Dokumentation BJ-Keyer.aux index 48d5084..950083e 100644 --- a/Documents/Dokumentation BJ-Keyer.aux +++ b/Documents/Dokumentation BJ-Keyer.aux @@ -32,62 +32,73 @@ \@writefile{lot}{\addvspace {10\p@ }} \BKM@entry{id=3,dest={636861707465722E33},srcline={158},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} \BKM@entry{id=4,dest={73656374696F6E2E332E31},srcline={159},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030745C303030725C303030695C303030655C303030625C303030735C303030615C303030725C303030745C303030655C3030306E5C3030305C3034305C303030655C303030695C3030306E5C303030655C303030735C3030305C3034305C3030304D5C3030306F5C303030725C303030735C303030655C3030302D5C3030304B5C303030655C303030795C303030655C303030725C30303073} -\BKM@entry{id=5,dest={73756273656374696F6E2E332E312E31},srcline={163},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305A5C303030655C303030695C303030745C303030765C303030655C303030725C303030685C303030615C3030306C5C303030745C303030655C3030306E} +\BKM@entry{id=5,dest={73756273656374696F6E2E332E312E31},srcline={165},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C30303041} +\BKM@entry{id=6,dest={73756273656374696F6E2E332E312E32},srcline={194},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030495C303030615C3030306D5C303030625C303030695C303030635C3030305C3034305C30303042} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Grundlagen}{9}{chapter.3}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Betriebsarten eines Morse-Keyers}{9}{section.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Zeitverhalten}{9}{subsection.3.1.1}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagramm Mode A\relax }}{9}{figure.caption.4}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Diagramm Mode B\relax }}{9}{figure.caption.5}\protected@file@percent } -\BKM@entry{id=6,dest={636861707465722E34},srcline={218},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030425C303030655C303030645C303030695C303030655C3030306E5C303030755C3030306E5C30303067} -\BKM@entry{id=7,dest={73656374696F6E2E342E31},srcline={219},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030645C303030695C303030655C3030306E5C303030655C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C30303065} -\BKM@entry{id=8,dest={73756273656374696F6E2E342E312E31},srcline={221},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305C3333345C303030625C303030655C303030725C303030735C303030695C303030635C303030685C30303074} -\@writefile{toc}{\contentsline {chapter}{\numberline {4}Die Bedienung}{11}{chapter.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Iambic A}{9}{subsection.3.1.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagramm Iambic Mode A\relax }}{9}{figure.caption.4}\protected@file@percent } +\BKM@entry{id=7,dest={73756273656374696F6E2E332E312E33},srcline={226},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030555C3030306C5C303030745C303030695C3030306D5C303030615C303030745C303030695C30303063} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Iambic B}{10}{subsection.3.1.2}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Diagramm Iambic Mode B\relax }}{10}{figure.caption.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Ultimatic}{10}{subsection.3.1.3}\protected@file@percent } +\BKM@entry{id=8,dest={73756273656374696F6E2E332E312E34},srcline={259},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030505C303030755C3030306E5C3030306B5C303030745C3030302D5C303030535C303030745C303030725C303030695C303030635C303030685C3030305C3034305C303030535C303030705C303030655C303030695C303030635C303030685C303030655C30303072} +\BKM@entry{id=9,dest={73756273656374696F6E2E332E312E35},srcline={262},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030485C303030615C3030306E5C303030645C303030745C303030615C303030735C303030745C30303065} +\BKM@entry{id=10,dest={73756273656374696F6E2E332E312E36},srcline={268},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305A5C303030655C303030695C303030745C303030765C303030655C303030725C303030685C303030615C3030306C5C303030745C303030655C3030306E} +\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces Diagramm Ultimatic Mode\relax }}{11}{figure.caption.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.4}Punkt-Strich Speicher}{11}{subsection.3.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.5}Handtaste}{11}{subsection.3.1.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.6}Zeitverhalten}{11}{subsection.3.1.6}\protected@file@percent } +\BKM@entry{id=11,dest={636861707465722E34},srcline={270},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030425C303030655C303030645C303030695C303030655C3030306E5C303030755C3030306E5C30303067} +\BKM@entry{id=12,dest={73656374696F6E2E342E31},srcline={271},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030645C303030695C303030655C3030306E5C303030655C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C30303065} +\BKM@entry{id=13,dest={73756273656374696F6E2E342E312E31},srcline={273},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C3030305C3333345C303030625C303030655C303030725C303030735C303030695C303030635C303030685C30303074} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Die Bedienung}{13}{chapter.4}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {4.1}Bedienelemente}{11}{section.4.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Übersicht}{11}{subsection.4.1.1}\protected@file@percent } -\BKM@entry{id=9,dest={636861707465722E35},srcline={222},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C303030635C303030685C303030615C3030306C5C303030745C303030755C3030306E5C30303067} -\BKM@entry{id=10,dest={73656374696F6E2E352E31},srcline={224},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030735C303030635C303030685C303030725C303030655C303030695C303030625C303030755C3030306E5C30303067} -\@writefile{toc}{\contentsline {chapter}{\numberline {5}Die Schaltung}{13}{chapter.5}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Bedienelemente}{13}{section.4.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Übersicht}{13}{subsection.4.1.1}\protected@file@percent } +\BKM@entry{id=14,dest={636861707465722E35},srcline={274},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C303030635C303030685C303030615C3030306C5C303030745C303030755C3030306E5C30303067} +\BKM@entry{id=15,dest={73656374696F6E2E352E31},srcline={276},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030425C303030655C303030735C303030635C303030685C303030725C303030655C303030695C303030625C303030755C3030306E5C30303067} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Die Schaltung}{15}{chapter.5}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {5.1}Beschreibung}{13}{section.5.1}\protected@file@percent } -\BKM@entry{id=11,dest={636861707465722E36},srcline={225},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C30303065} -\BKM@entry{id=12,dest={73656374696F6E2E362E31},srcline={226},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303032} -\BKM@entry{id=13,dest={73656374696F6E2E362E32},srcline={229},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303031} -\BKM@entry{id=14,dest={73656374696F6E2E362E33},srcline={232},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303030} -\BKM@entry{id=15,dest={73756273656374696F6E2E362E332E31},srcline={235},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C303030655C303030695C3030306E5C303030735C303030745C303030655C3030306C5C3030306C5C303030655C3030306E} -\BKM@entry{id=16,dest={73656374696F6E2E362E34},srcline={240},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C3030305C3034305C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E5C3030305C3034305C303030645C303030755C303030725C303030635C303030685C3030305C3034305C303030505C303030755C3030306C5C303030735C303030775C303030655C303030695C303030745C303030655C3030306E5C3030306D5C3030306F5C303030645C303030755C3030306C5C303030615C303030745C303030695C3030306F5C3030306E} -\BKM@entry{id=17,dest={73756273656374696F6E2E362E342E31},srcline={245},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} -\@writefile{toc}{\contentsline {chapter}{\numberline {6}Die Software}{15}{chapter.6}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Beschreibung}{15}{section.5.1}\protected@file@percent } +\BKM@entry{id=16,dest={636861707465722E36},srcline={277},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030445C303030695C303030655C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C30303065} +\BKM@entry{id=17,dest={73656374696F6E2E362E31},srcline={278},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303032} +\BKM@entry{id=18,dest={73656374696F6E2E362E32},srcline={281},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303031} +\BKM@entry{id=19,dest={73656374696F6E2E362E33},srcline={284},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C30303030} +\BKM@entry{id=20,dest={73756273656374696F6E2E362E332E31},srcline={287},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030695C3030306D5C303030655C303030725C3030305C3034305C303030655C303030695C3030306E5C303030735C303030745C303030655C3030306C5C3030306C5C303030655C3030306E} +\BKM@entry{id=21,dest={73656374696F6E2E362E34},srcline={292},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C3030305C3034305C3030304D5C303030695C303030745C303030685C3030305C3336365C303030725C303030745C3030306F5C3030306E5C3030305C3034305C303030645C303030755C303030725C303030635C303030685C3030305C3034305C303030505C303030755C3030306C5C303030735C303030775C303030655C303030695C303030745C303030655C3030306E5C3030306D5C3030306F5C303030645C303030755C3030306C5C303030615C303030745C303030695C3030306F5C3030306E} +\BKM@entry{id=22,dest={73756273656374696F6E2E362E342E31},srcline={297},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Die Software}{17}{chapter.6}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {6.1}Timer 2}{15}{section.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.2}Timer 1}{15}{section.6.2}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.3}Timer 0}{15}{section.6.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}Timer einstellen}{15}{subsection.6.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {6.4}Sinus Mithörton durch Pulsweitenmodulation}{15}{section.6.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}Grundlagen}{16}{subsection.6.4.1}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Pulswellenmodulation\relax }}{16}{figure.caption.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\nonumberline Pulsweitenmodulation}{16}{subsubsection*.8}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces Symmetrisches Rechtecksignal an PB3\relax }}{17}{figure.caption.9}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces PWM - Tastgrad - Sinus\relax }}{18}{figure.caption.10}\protected@file@percent } -\BKM@entry{id=18,dest={73756273656374696F6E2E362E342E32},srcline={373},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C303030745C303030615C303030625C303030655C3030306C5C3030306C5C30303065} -\@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces OCR1A Werte für verschiedene Frequenzen des Mithörtons\relax }}{19}{table.caption.11}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}Sinustabelle}{19}{subsection.6.4.2}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {6.4}{\ignorespaces Sinus nach Tabelle vom Python3 Script als Linie\relax }}{20}{figure.caption.12}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {6.5}{\ignorespaces Sinus nach der Tabelle vom Python3 Script mit Stützpunkten\relax }}{20}{figure.caption.13}\protected@file@percent } -\BKM@entry{id=19,dest={636861707465722E37},srcline={403},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C3030306E5C303030745C303030775C303030695C303030635C3030306B5C3030306C5C303030755C3030306E5C303030675C303030735C303030755C3030306D5C303030675C303030655C303030625C303030755C3030306E5C30303067} -\@writefile{toc}{\contentsline {chapter}{\numberline {7}Entwicklungsumgebung}{21}{chapter.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Timer 2}{17}{section.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Timer 1}{17}{section.6.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Timer 0}{17}{section.6.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}Timer einstellen}{17}{subsection.6.3.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6.4}Sinus Mithörton durch Pulsweitenmodulation}{17}{section.6.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}Grundlagen}{18}{subsection.6.4.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Pulswellenmodulation\relax }}{18}{figure.caption.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\nonumberline Pulsweitenmodulation}{18}{subsubsection*.9}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces Symmetrisches Rechtecksignal an PB3\relax }}{19}{figure.caption.10}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces PWM - Tastgrad - Sinus\relax }}{20}{figure.caption.11}\protected@file@percent } +\BKM@entry{id=23,dest={73756273656374696F6E2E362E342E32},srcline={425},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030535C303030695C3030306E5C303030755C303030735C303030745C303030615C303030625C303030655C3030306C5C3030306C5C30303065} +\@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces OCR1A Werte für verschiedene Frequenzen des Mithörtons\relax }}{21}{table.caption.12}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}Sinustabelle}{21}{subsection.6.4.2}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {6.4}{\ignorespaces Sinus nach Tabelle vom Python3 Script als Linie\relax }}{22}{figure.caption.13}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {6.5}{\ignorespaces Sinus nach der Tabelle vom Python3 Script mit Stützpunkten\relax }}{22}{figure.caption.14}\protected@file@percent } +\BKM@entry{id=24,dest={636861707465722E37},srcline={455},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030455C3030306E5C303030745C303030775C303030695C303030635C3030306B5C3030306C5C303030755C3030306E5C303030675C303030735C303030755C3030306D5C303030675C303030655C303030625C303030755C3030306E5C30303067} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Entwicklungsumgebung}{23}{chapter.7}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\BKM@entry{id=20,dest={636861707465722A2E3134},srcline={428},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030615C303030625C303030655C3030306C5C3030306C5C303030655C3030306E} -\@writefile{toc}{\contentsline {chapter}{\nonumberline Tabellen}{23}{chapter*.14}\protected@file@percent } +\BKM@entry{id=25,dest={636861707465722A2E3135},srcline={480},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030545C303030615C303030625C303030655C3030306C5C3030306C5C303030655C3030306E} +\@writefile{toc}{\contentsline {chapter}{\nonumberline Tabellen}{25}{chapter*.15}\protected@file@percent } \gdef\lot@l@number{41.11653pt} -\BKM@entry{id=21,dest={636861707465722A2E3135},srcline={429},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030415C303030625C303030625C303030695C3030306C5C303030645C303030755C3030306E5C303030675C303030655C3030306E} -\@writefile{toc}{\contentsline {chapter}{\nonumberline Abbildungen}{25}{chapter*.15}\protected@file@percent } +\BKM@entry{id=26,dest={636861707465722A2E3136},srcline={481},srcfile={2E2F446F6B756D656E746174696F6E20424A2D4B657965722E746578}}{5C3337365C3337375C303030415C303030625C303030625C303030695C3030306C5C303030645C303030755C3030306E5C303030675C303030655C3030306E} +\@writefile{toc}{\contentsline {chapter}{\nonumberline Abbildungen}{27}{chapter*.16}\protected@file@percent } \gdef\lof@l@number{43.9643pt} \global\@namedef{scr@dte@chapter@lastmaxnumwidth}{10.40242pt} \global\@namedef{scr@dte@section@lastmaxnumwidth}{16.60352pt} @@ -97,4 +108,4 @@ \@writefile{toc}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} \@writefile{lot}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} \@writefile{lof}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file} -\gdef \@abspage@last{25} +\gdef \@abspage@last{27} diff --git a/Documents/Dokumentation BJ-Keyer.lof b/Documents/Dokumentation BJ-Keyer.lof index 5c60606..5f4a85d 100644 --- a/Documents/Dokumentation BJ-Keyer.lof +++ b/Documents/Dokumentation BJ-Keyer.lof @@ -2,15 +2,16 @@ \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagramm Mode A\relax }}{9}{figure.caption.4}% -\contentsline {figure}{\numberline {3.2}{\ignorespaces Diagramm Mode B\relax }}{9}{figure.caption.5}% +\contentsline {figure}{\numberline {3.1}{\ignorespaces Diagramm Iambic Mode A\relax }}{9}{figure.caption.4}% +\contentsline {figure}{\numberline {3.2}{\ignorespaces Diagramm Iambic Mode B\relax }}{10}{figure.caption.5}% +\contentsline {figure}{\numberline {3.3}{\ignorespaces Diagramm Ultimatic Mode\relax }}{11}{figure.caption.6}% \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\contentsline {figure}{\numberline {6.1}{\ignorespaces Pulswellenmodulation\relax }}{16}{figure.caption.6}% -\contentsline {figure}{\numberline {6.2}{\ignorespaces Symmetrisches Rechtecksignal an PB3\relax }}{17}{figure.caption.9}% -\contentsline {figure}{\numberline {6.3}{\ignorespaces PWM - Tastgrad - Sinus\relax }}{18}{figure.caption.10}% -\contentsline {figure}{\numberline {6.4}{\ignorespaces Sinus nach Tabelle vom Python3 Script als Linie\relax }}{20}{figure.caption.12}% -\contentsline {figure}{\numberline {6.5}{\ignorespaces Sinus nach der Tabelle vom Python3 Script mit Stützpunkten\relax }}{20}{figure.caption.13}% +\contentsline {figure}{\numberline {6.1}{\ignorespaces Pulswellenmodulation\relax }}{18}{figure.caption.7}% +\contentsline {figure}{\numberline {6.2}{\ignorespaces Symmetrisches Rechtecksignal an PB3\relax }}{19}{figure.caption.10}% +\contentsline {figure}{\numberline {6.3}{\ignorespaces PWM - Tastgrad - Sinus\relax }}{20}{figure.caption.11}% +\contentsline {figure}{\numberline {6.4}{\ignorespaces Sinus nach Tabelle vom Python3 Script als Linie\relax }}{22}{figure.caption.13}% +\contentsline {figure}{\numberline {6.5}{\ignorespaces Sinus nach der Tabelle vom Python3 Script mit Stützpunkten\relax }}{22}{figure.caption.14}% \addvspace {10\p@ } \providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file diff --git a/Documents/Dokumentation BJ-Keyer.log b/Documents/Dokumentation BJ-Keyer.log index e5a0392..ce8ff86 100644 --- a/Documents/Dokumentation BJ-Keyer.log +++ b/Documents/Dokumentation BJ-Keyer.log @@ -1,4 +1,4 @@ -This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/Debian) (format=lualatex 2023.6.25) 21 JUL 2023 21:26 +This is LuaHBTeX, Version 1.12.0 (TeX Live 2020/Debian) (format=lualatex 2023.6.25) 13 AUG 2023 16:47 restricted system commands enabled. **"Dokumentation BJ-Keyer.tex" ("./Dokumentation BJ-Keyer.tex" @@ -2129,95 +2129,100 @@ chapter 2. ] chapter 3. -Overfull \hbox (17.32524pt too wide) in paragraph at lines 187--188 +Overfull \hbox (8.57524pt too wide) in paragraph at lines 190--191 +[][] + [] + +[9] +Overfull \hbox (8.57524pt too wide) in paragraph at lines 219--220 [][] [] -Overfull \hbox (17.32524pt too wide) in paragraph at lines 212--213 +Overfull \hbox (8.57524pt too wide) in paragraph at lines 253--254 [][] [] -[9] [10 +[10] [11] [12 ] chapter 4. -[11] [12 +[13] [14 ] chapter 5. -[13] [14 +[15] [16 ] chapter 6. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 7.34583pt on input line 238. +(Font) scaled to size 7.34583pt on input line 290. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 6.03767pt on input line 238. -[15] [16] +(Font) scaled to size 6.03767pt on input line 290. +[17] [18] LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 10.06277pt on input line 296. +(Font) scaled to size 10.06277pt on input line 348. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 7.34583pt on input line 296. +(Font) scaled to size 7.34583pt on input line 348. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 6.03767pt on input line 296. +(Font) scaled to size 6.03767pt on input line 348. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 3.67291pt on input line 296. +(Font) scaled to size 3.67291pt on input line 348. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 8.27078pt on input line 326. +(Font) scaled to size 8.27078pt on input line 378. LaTeX Font Info: Font shape `TU/AsanaMath(1)/m/n' will be -(Font) scaled to size 8.45096pt on input line 326. +(Font) scaled to size 8.45096pt on input line 378. LaTeX Font Info: Font shape `TU/AsanaMath(1)/m/n' will be -(Font) scaled to size 5.63397pt on input line 326. +(Font) scaled to size 5.63397pt on input line 378. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 8.27078pt on input line 326. +(Font) scaled to size 8.27078pt on input line 378. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 5.51385pt on input line 326. +(Font) scaled to size 5.51385pt on input line 378. LaTeX Font Info: Font shape `TU/TeXGyrePagella(1)/m/n' will be -(Font) scaled to size 4.59488pt on input line 326. +(Font) scaled to size 4.59488pt on input line 378. LaTeX Font Info: Font shape `TU/AsanaMath(2)/m/n' will be -(Font) scaled to size 8.45178pt on input line 326. +(Font) scaled to size 8.45178pt on input line 378. LaTeX Font Info: Font shape `TU/AsanaMath(2)/m/n' will be -(Font) scaled to size 5.63452pt on input line 326. +(Font) scaled to size 5.63452pt on input line 378. LaTeX Font Info: Font shape `TU/AsanaMath(3)/m/n' will be -(Font) scaled to size 8.45013pt on input line 326. +(Font) scaled to size 8.45013pt on input line 378. LaTeX Font Info: Font shape `TU/AsanaMath(3)/m/n' will be -(Font) scaled to size 5.63342pt on input line 326. +(Font) scaled to size 5.63342pt on input line 378. LaTeX Font Info: Font shape `TU/TeXGyrePagella(0)/m/n' will be -(Font) scaled to size 5.51385pt on input line 326. -<../Pictures/pwm_duty_cycle.jpg, id=156, 442.65375pt x 149.55875pt> +(Font) scaled to size 5.51385pt on input line 378. +<../Pictures/pwm_duty_cycle.jpg, id=175, 442.65375pt x 149.55875pt> File: ../Pictures/pwm_duty_cycle.jpg Graphic file (type jpg) -Package luatex.def Info: ../Pictures/pwm_duty_cycle.jpg used on input line 331. +Package luatex.def Info: ../Pictures/pwm_duty_cycle.jpg used on input line 383. (luatex.def) Requested size: 309.8555pt x 104.6904pt. - [17] [18<../Pictures/pwm_duty_cycle.jpg>] -<../Pictures/sinewave-line.jpg, id=180, 462.528pt x 346.896pt> + [19] [20<../Pictures/pwm_duty_cycle.jpg>] +<../Pictures/sinewave-line.jpg, id=199, 462.528pt x 346.896pt> File: ../Pictures/sinewave-line.jpg Graphic file (type jpg) -Package luatex.def Info: ../Pictures/sinewave-line.jpg used on input line 380. +Package luatex.def Info: ../Pictures/sinewave-line.jpg used on input line 432. (luatex.def) Requested size: 231.26343pt x 173.44757pt. -<../Pictures/sinewave-dots.jpg, id=181, 462.528pt x 346.896pt> +<../Pictures/sinewave-dots.jpg, id=200, 462.528pt x 346.896pt> File: ../Pictures/sinewave-dots.jpg Graphic file (type jpg) -Package luatex.def Info: ../Pictures/sinewave-dots.jpg used on input line 399. +Package luatex.def Info: ../Pictures/sinewave-dots.jpg used on input line 451. (luatex.def) Requested size: 231.26343pt x 173.44757pt. - [19] [20<../Pictures/sinewave-line.jpg><../Pictures/sinewave-dots.jpg>] + [21] [22<../Pictures/sinewave-line.jpg><../Pictures/sinewave-dots.jpg>] chapter 7. -[21 +[23 -] [22] ("./Dokumentation BJ-Keyer.lot") +] [24] ("./Dokumentation BJ-Keyer.lot") \tf@lot=\write6 \openout6 = Dokumentation BJ-Keyer.lot - [23 + [25 -] [24 +] [26 ] @@ -2225,32 +2230,32 @@ chapter 7. \tf@lof=\write7 \openout7 = Dokumentation BJ-Keyer.lof - [25] ("./Dokumentation BJ-Keyer.aux") + [27] ("./Dokumentation BJ-Keyer.aux") Package rerunfilecheck Info: File `"Dokumentation BJ-Keyer".out' has not changed . (rerunfilecheck) Checksum: . ) (\end occurred inside a group at level 1) -### simple group (level 1) entered at line 322 ({) +### simple group (level 1) entered at line 374 ({) ### bottom level Here is how much of LuaTeX's memory you used: - 51125 strings out of 478824 + 51138 strings out of 478824 100000,1977958 words of node,token memory allocated 1065 words of node memory still in use: 28 hlist, 2 vlist, 5 rule, 4 dir, 10 glue, 7 kern, 1 glyph, 36 attribute, 84 glue_spec, 27 attribute_list, 2 write nodes - avail lists: 2:3180,3:1097,4:224,5:602,6:67,7:6078,8:47,9:624,10:11,11:485 - 68866 multiletter control sequences out of 65536+600000 - 172 fonts using 38161183 bytes + avail lists: 2:3409,3:922,4:264,5:602,6:82,7:6078,8:57,9:552,10:11,11:485 + 68871 multiletter control sequences out of 65536+600000 + 172 fonts using 38160879 bytes 111i,16n,125p,10642b,2256s stack positions out of 5000i,500n,10000p,200000b,200000s -Output written on Dokumentation BJ-Keyer.pdf (25 pages, 191021 bytes). +Output written on Dokumentation BJ-Keyer.pdf (27 pages, 199024 bytes). -PDF statistics: 383 PDF objects out of 1000 (max. 8388607) - 302 compressed objects within 4 object streams - 76 named destinations out of 1000 (max. 131072) - 184 words of extra memory for PDF output out of 10000 (max. 100000000) +PDF statistics: 418 PDF objects out of 1000 (max. 8388607) + 335 compressed objects within 4 object streams + 84 named destinations out of 1000 (max. 131072) + 224 words of extra memory for PDF output out of 10000 (max. 100000000) diff --git a/Documents/Dokumentation BJ-Keyer.lot b/Documents/Dokumentation BJ-Keyer.lot index 0500494..4983b46 100644 --- a/Documents/Dokumentation BJ-Keyer.lot +++ b/Documents/Dokumentation BJ-Keyer.lot @@ -5,6 +5,6 @@ \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\contentsline {table}{\numberline {6.1}{\ignorespaces OCR1A Werte für verschiedene Frequenzen des Mithörtons\relax }}{19}{table.caption.11}% +\contentsline {table}{\numberline {6.1}{\ignorespaces OCR1A Werte für verschiedene Frequenzen des Mithörtons\relax }}{21}{table.caption.12}% \addvspace {10\p@ } \providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file diff --git a/Documents/Dokumentation BJ-Keyer.pdf b/Documents/Dokumentation BJ-Keyer.pdf index 8a4ad24..def4c33 100644 Binary files a/Documents/Dokumentation BJ-Keyer.pdf and b/Documents/Dokumentation BJ-Keyer.pdf differ diff --git a/Documents/Dokumentation BJ-Keyer.tex b/Documents/Dokumentation BJ-Keyer.tex index 938b660..6948d26 100644 --- a/Documents/Dokumentation BJ-Keyer.tex +++ b/Documents/Dokumentation BJ-Keyer.tex @@ -158,62 +158,114 @@ In dieser Dokumentation werden diverse gleichbleibende Darstellungsweisen verwen \chapter{Grundlagen} \section{Betriebsarten eines Morse-Keyers} -Bei Morse-Keyer +Ein Morse-Keyer, die Tastelektronik, hat verschiedene Betriebsarten, die sich in der automatischen Erzeugung der Zeichen unterscheiden. Je nach Betriebsart gibt es einen Punkt- und Strichspeicher oder die direkte Erzeugung der Zeichen. -\subsection{Zeitverhalten} +Bei einem zweiarmigen Paddle erzeugt ein Paddle (genauer die Tastelektronik) die Punkte und das andere Paddle die Striche. Diese Art von Paddle werden auch als Iambic oder Squeeze Paddle bezeichnet. + +\subsection{Iambic A} + +Im Iambic Mode A wird wird immer nur das Zeichen gegeben, dessen Paddle gerade betätigt wird. Wird das Paddle zu früh losgelassen, ergänzt die Tastelektronik das Zeichen auf die erforderliche Länge. Es wird kein weiteres Zeichen gesendet. Werden beide Paddle gleichzeitig gedrückt gehalten, ergibt sich eine Punkt-Strich-Folge. Wird der Kontakt wieder geöffnet, stoppt die Punkt-Strich-Folge. Es wird nur das Zeichen mit der erforderlichen Länge gesendet, welches beim Öffnen der Kontakte gerade gesendet wurde. \begin{figure}[!ht] \begin{tikztimingtable}[ timing/slope=0, - timing/coldist=2pt, + timing/coldist=0.25pt, xscale=5.0,yscale=3.1, - semithick + thick ] %% Timing - DIT\ & LH 1{2C} \\ - DAH\ & 0.5LLHH 1{2C} \\ - Mode A\ & LHLHH 1{2C} \\ + DIT\ & lhhhhhhhhhhlllll \\ + DAH\ & 0.25llhhhhhhhhh0.75hlllll \\ + Mode B\ & lhlhhhlhlhhhllll \\ \extracode \makeatletter \begin{pgfonlayer}{background} \begin{scope}[gray,semitransparent,semithick] \horlines{} - \vertlines{1,...,7} + \vertlines{0,0.5,...,8} \end{scope} - \node[anchor=south east,inner sep=0pt] - at (10,-4) {\tiny Output}; + \node[anchor=south east,inner sep=0pt] + at (10,-4) {\tiny Ausgabe}; \end{pgfonlayer} - \endextracode \end{tikztimingtable} -\caption{Diagramm Mode A} +\caption{Diagramm Iambic Mode A} \end{figure} +\subsection{Iambic B} + +Im Iambic Mode B verhält es sich im Prinzip wie im Iambic Mode A, nur dass beim gleichzeitigen Öffnen der Kontakte das entgegengesetzte Zeichen des zuletzt geöffneten Kontakts angefügt wird. + \begin{figure}[!ht] \begin{tikztimingtable}[ timing/slope=0, - timing/coldist=2pt, + timing/coldist=0.25pt, xscale=5.0,yscale=3.1, - semithick + thick ] %% Timing - DIT\ & LH 1{2C} \\ - DAH\ & 0.5LLHH 1{2C} \\ - Mode B\ & LHLHHLH 1{2C} \\ + DIT\ & lhhhhhhhhhhlllll \\ + DAH\ & 0.25llhhhhhhhhh0.75hlllll \\ + Mode B\ & lhlhhhlhlhhhlhll \\ \extracode \makeatletter \begin{pgfonlayer}{background} \begin{scope}[gray,semitransparent,semithick] \horlines{} - \vertlines{1,...,7} + \vertlines{0,0.5,...,8} \end{scope} \node[anchor=south east,inner sep=0pt] - at (10,-4) {\tiny Output}; + at (10,-4) {\tiny Ausgabe}; \end{pgfonlayer} \end{tikztimingtable} +\caption{Diagramm Iambic Mode B} +\end{figure} + +Wie im Diagramm zu sehen ist, wird erst das DIT Paddle betätigt, dann das DAH Paddle, es sind also beide Paddle gleichzeitig betätigt. Es wird eine Folge von DIT und DAH, beginnend mit einem DIT gegeben, solange beide Paddle betätigt werden. Werden die Kontakte gleichzeitig gelöst, wird das entgegengesetzte Zeichen des zuletzt ausgebenen Zeichens, angefügt. Hier ist das ein DIT. + -\caption{Diagramm Mode B} +\subsection{Ultimatic} + +Beim Ultimatic Mode wird im Gegensatz zu den Iambic Modes bei der gleichzeitigen Betätigung beider Paddles ein DIT oder DAH und eine Folge des jeweiligen entgegengesetzten Zeichens erzeugt. Es wird zuerst das Zeichen erzeugt, dessen Paddle zuerst betätigt wurde. Im Anschluß wird kontinuierlich das Zeichen erzeugt, dessen Paddle zuletzt betätigt wurde. + +Werden die Paddle gleichzeitig losgelassen, stoppt die Aussendung der Zeichen ohne die Ausgabe eines weiteren Zeichens wie beim Iambic Mode B. Wird ein Paddle losgelassen, wird die Aussendung mit dem noch betätigten Paddle fortgesetzt. Es kann somit eine ganze Folge von dem entgegengesetzten Zeichen in den Zeichenstrom des zuerst betätigten Paddles eingefügt werden. Damit können mehr Zeichen mit der Squeeze Technik gesendet werden, als es bei den Iambic Modes möglich ist. + +\begin{figure}[!ht] +\begin{tikztimingtable}[ + timing/slope=0, + timing/coldist=0.25pt, + xscale=5.0,yscale=3.1, + thick + ] + %% Timing + DIT\ & lhhhhhhhhhhhllll \\ + DAH\ & 0.25llhhhhhhh0.75hlllllll \\ + Mode B\ & lhlhhhlhhhlhllll \\ + \extracode + \makeatletter + \begin{pgfonlayer}{background} + \begin{scope}[gray,semitransparent,semithick] + \horlines{} + \vertlines{0,0.5,...,8} + \end{scope} + \node[anchor=south east,inner sep=0pt] + at (10,-4) {\tiny Ausgabe}; + \end{pgfonlayer} +\end{tikztimingtable} +\caption{Diagramm Ultimatic Mode} \end{figure} +Im Diagramm ist dieses Verhalten am Beispiel des Buchstabens P dargestellt. Zuerst wird das DIT Paddle betätigt, es wird ein DIT erzeugt. Noch während das DIT gesendet wird, kann das DAH Paddle betätigt werden und obwohl das DIT Paddle gehalten wird, erfolgt eine Aussendung von Strichen, so lange, wie das DAH Paddle gehalten wird. Wird der Kontakt nach zwei Strichen geöffnet, wird ein DIT gesendet, weil die DIT Taste immer noch gehalten wird. Nach dem Öffnen der Kontakte beide Paddles stoppt die Sendung sofort. + +\subsection{Punkt-Strich Speicher} + + +\subsection{Handtaste} + + + + + +\subsection{Zeitverhalten} \chapter{Die Bedienung} \section{Bedienelemente} diff --git a/Documents/Dokumentation BJ-Keyer.toc b/Documents/Dokumentation BJ-Keyer.toc index 7bd861a..dc63859 100644 --- a/Documents/Dokumentation BJ-Keyer.toc +++ b/Documents/Dokumentation BJ-Keyer.toc @@ -3,22 +3,27 @@ \contentsline {chapter}{\numberline {2}Hinweise zur Dokumentation}{7}{chapter.2}% \contentsline {chapter}{\numberline {3}Grundlagen}{9}{chapter.3}% \contentsline {section}{\numberline {3.1}Betriebsarten eines Morse-Keyers}{9}{section.3.1}% -\contentsline {subsection}{\numberline {3.1.1}Zeitverhalten}{9}{subsection.3.1.1}% -\contentsline {chapter}{\numberline {4}Die Bedienung}{11}{chapter.4}% -\contentsline {section}{\numberline {4.1}Bedienelemente}{11}{section.4.1}% -\contentsline {subsection}{\numberline {4.1.1}Übersicht}{11}{subsection.4.1.1}% -\contentsline {chapter}{\numberline {5}Die Schaltung}{13}{chapter.5}% -\contentsline {section}{\numberline {5.1}Beschreibung}{13}{section.5.1}% -\contentsline {chapter}{\numberline {6}Die Software}{15}{chapter.6}% -\contentsline {section}{\numberline {6.1}Timer 2}{15}{section.6.1}% -\contentsline {section}{\numberline {6.2}Timer 1}{15}{section.6.2}% -\contentsline {section}{\numberline {6.3}Timer 0}{15}{section.6.3}% -\contentsline {subsection}{\numberline {6.3.1}Timer einstellen}{15}{subsection.6.3.1}% -\contentsline {section}{\numberline {6.4}Sinus Mithörton durch Pulsweitenmodulation}{15}{section.6.4}% -\contentsline {subsection}{\numberline {6.4.1}Grundlagen}{16}{subsection.6.4.1}% -\contentsline {subsubsection}{\nonumberline Pulsweitenmodulation}{16}{subsubsection*.8}% -\contentsline {subsection}{\numberline {6.4.2}Sinustabelle}{19}{subsection.6.4.2}% -\contentsline {chapter}{\numberline {7}Entwicklungsumgebung}{21}{chapter.7}% -\contentsline {chapter}{\nonumberline Tabellen}{23}{chapter*.14}% -\contentsline {chapter}{\nonumberline Abbildungen}{25}{chapter*.15}% +\contentsline {subsection}{\numberline {3.1.1}Iambic A}{9}{subsection.3.1.1}% +\contentsline {subsection}{\numberline {3.1.2}Iambic B}{10}{subsection.3.1.2}% +\contentsline {subsection}{\numberline {3.1.3}Ultimatic}{10}{subsection.3.1.3}% +\contentsline {subsection}{\numberline {3.1.4}Punkt-Strich Speicher}{11}{subsection.3.1.4}% +\contentsline {subsection}{\numberline {3.1.5}Handtaste}{11}{subsection.3.1.5}% +\contentsline {subsection}{\numberline {3.1.6}Zeitverhalten}{11}{subsection.3.1.6}% +\contentsline {chapter}{\numberline {4}Die Bedienung}{13}{chapter.4}% +\contentsline {section}{\numberline {4.1}Bedienelemente}{13}{section.4.1}% +\contentsline {subsection}{\numberline {4.1.1}Übersicht}{13}{subsection.4.1.1}% +\contentsline {chapter}{\numberline {5}Die Schaltung}{15}{chapter.5}% +\contentsline {section}{\numberline {5.1}Beschreibung}{15}{section.5.1}% +\contentsline {chapter}{\numberline {6}Die Software}{17}{chapter.6}% +\contentsline {section}{\numberline {6.1}Timer 2}{17}{section.6.1}% +\contentsline {section}{\numberline {6.2}Timer 1}{17}{section.6.2}% +\contentsline {section}{\numberline {6.3}Timer 0}{17}{section.6.3}% +\contentsline {subsection}{\numberline {6.3.1}Timer einstellen}{17}{subsection.6.3.1}% +\contentsline {section}{\numberline {6.4}Sinus Mithörton durch Pulsweitenmodulation}{17}{section.6.4}% +\contentsline {subsection}{\numberline {6.4.1}Grundlagen}{18}{subsection.6.4.1}% +\contentsline {subsubsection}{\nonumberline Pulsweitenmodulation}{18}{subsubsection*.9}% +\contentsline {subsection}{\numberline {6.4.2}Sinustabelle}{21}{subsection.6.4.2}% +\contentsline {chapter}{\numberline {7}Entwicklungsumgebung}{23}{chapter.7}% +\contentsline {chapter}{\nonumberline Tabellen}{25}{chapter*.15}% +\contentsline {chapter}{\nonumberline Abbildungen}{27}{chapter*.16}% \providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file diff --git a/Source/controls.c b/Source/controls.c index 29e6510..04dab61 100644 --- a/Source/controls.c +++ b/Source/controls.c @@ -6,9 +6,8 @@ #include "controls.h" // Stringkonstanten für das Display -const char CALL[] = " DL7BJ "; -const char PRG[] = " BJ-Keyer "; -const char VER[] = " V1.00 "; + +// Programm Info const char Trx1[] = "TRX 1"; const char Trx2[] = "TRX 2"; const char IambicA[] = "Iambic A"; @@ -38,13 +37,14 @@ void Drehencoder(void) if(bConfig.WpM != st) { bConfig.WpM = st; // neuen Wert in bConfig speichern - bMerker.WpMChanged = 1; // Merker für Timer 0 setzen - bMenuCtrl.Update = 1; // Merker für UpdateDisplay setzen + bState.WpMChanged = 1; // Status für Timer 0 setzen + bMenuCtrl.Update = 1; // Status für UpdateDisplay setzen EncoderPos = st; // neuen Werte in EncoderPos speichern WpM = bConfig.WpM; // neuen Wert in WpM übernehmen cli(); StoreEEprom = 0; // Timer 0 Variable löschen für Update EEprom sei(); + SetRatio(0); } } @@ -161,7 +161,10 @@ void Drehencoder(void) bMenuCtrl.m_buttonPressed = 0; break; case M_TON: - bConfig.SidetoneEnabled = (bConfig.SidetoneEnabled == 1) ? 0 : 1; + if(bConfig.SidetoneEnabled == 1) + SidetoneDisable(); + else + SidetoneEnable(); bMenuCtrl.m_buttonPressed = 0; break; case M_TON_FREQ: @@ -379,7 +382,7 @@ void DisplayVersion(void) lcd_puts(VER); lcd_gotoxy(2,4); lcd_puts(CALL); - SideToneOff(); + SidetoneOff(); DelayMilliSeconds(1000); } diff --git a/Source/controls.h b/Source/controls.h index d3b7fde..7dfaa2d 100644 --- a/Source/controls.h +++ b/Source/controls.h @@ -11,7 +11,7 @@ // Externe Variablen extern struct Config bConfig; extern struct MenuCtrl bMenuCtrl; -extern struct Merker bMerker; +extern struct State bState; extern uint16_t MenuCtrlTimer; extern uint8_t WpM; // Externe Funktionen @@ -21,6 +21,10 @@ extern void WriteEEprom(void); extern void SideToneOff(void); extern void DelayMilliSeconds(uint16_t t); extern void Tone(uint16_t f, uint8_t t); +extern void SetRatio(uint8_t WPMCorrectFactor); +extern void SidetoneDisable(void); +extern void SidetoneEnable(void); +extern void SidetoneOff(void); // Prototypes void Drehencoder(void); void ConfigMenue(void); diff --git a/Source/eeprom.read b/Source/eeprom.read new file mode 100644 index 0000000..3044269 --- /dev/null +++ b/Source/eeprom.read @@ -0,0 +1,33 @@ +:200000000506050FBC02001E00000101020155FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +:20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +:20004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +:20006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +:20008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +:2000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +:2000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +:2000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +:20010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +:20012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +:20014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +:20016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +:20018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +:2001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +:2001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +:2001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +:20020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +:20022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +:20024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +:20026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +:20028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +:2002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +:2002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +:2002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +:20030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +:20032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +:20034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +:20036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +:20038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +:2003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +:2003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +:2003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +:00000001FF diff --git a/Source/encoder.h b/Source/encoder.h index 0d3171f..86c75ba 100644 --- a/Source/encoder.h +++ b/Source/encoder.h @@ -7,9 +7,9 @@ #define TwoStep #define ENC_A_PORT PORTB /**< port for line A */ -#define ENC_A_PIN PB0 /**< pin for line A */ +#define ENC_A_PIN PB1 /**< pin for line A */ #define ENC_B_PORT PORTB /**< port for line B */ -#define ENC_B_PIN PB1 /**< pin for line B */ +#define ENC_B_PIN PB0 /**< pin for line B */ #define ENC_T_PORT PORTB /**< port for button */ #define ENC_T_PIN PB2 /**< pin for button */ diff --git a/Source/functions.c b/Source/functions.c index ea70a6c..33e80fb 100644 --- a/Source/functions.c +++ b/Source/functions.c @@ -5,7 +5,7 @@ #include "functions.h" -// EEProm +// EEProm Speicher uint8_t Dummy; uint8_t ee_Dummy EEMEM = 0x55; // Dummy for Address 0 uint8_t ee_TRX EEMEM = 0; // TRX 1 oder 2 oder beide @@ -21,53 +21,51 @@ uint8_t ee_WpM EEMEM = 12; // WpM uint8_t ee_RiseTime EEMEM = 5; // Anstiegszeit Sinuston uint8_t ee_RiseTimeCounter EEMEM = 5; // Anzahl Sinusschwingungen für den Anstieg uint8_t ee_DebounceTime EEMEM = 6; // Entprellzeit für Straight Key Eingang - - // Stringkonstanten für VT100 Terminals -char CLRSCR[] = "\033[2J"; +const char CLRSCR[] = "\033[2J"; /** @brief Ein paar Millisekunden warten * - * Dieser Variable muss atomar sein, weil es eine 16Bit Variable ist, - * die im Timer 0 verwendet wird. * @param Zeit in Millisekunden, die gewartet werden soll * @return void */ void DelayMilliSeconds(uint16_t ms) { - t_delayms = 0; -// ResetMilliSeconds(); - //ATOMIC_BLOCK(ATOMIC_FORCEON) { - while(t_delayms < ms); - //} + volatile static uint16_t ctr; + ResetMilliSeconds(); + do + { + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + ctr = t_delayms; + } + } while (ctr < ms); } /** @brief Wert des Zählers für Millisekunden lesen * - * Dieser Variable muss atomar sein, weil es eine 16Bit Variable ist, - * die im Timer 0 verwendet wird. * @param none * @return milliseconds */ uint16_t GetMilliSeconds(void) { - uint16_t m; - ATOMIC_BLOCK(ATOMIC_FORCEON){ - m = t_delayms; - } - return m; + volatile static uint16_t ctr; + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + ctr = t_delayms; + } + return ctr; } /** @brief Setzt den Zähler für Millisekunden auf 0 * - * Dieser Variable muss atomar sein, weil es eine 16Bit Variable ist, - * die im Timer 0 verwendet wird. * @param none * @return none */ void ResetMilliSeconds(void) { - //ATOMIC_BLOCK(ATOMIC_FORCEON){ + ATOMIC_BLOCK(ATOMIC_FORCEON) + { t_delayms = 0; - //} + } } /** @brief SREG wieder herstellen und Interrupts erlauben * @param none @@ -92,7 +90,7 @@ void IntDisable(void) */ void WriteEEprom(void) { - cli(); + IntDisable(); eeprom_write_byte(&ee_Dummy,0x55); eeprom_write_byte(&ee_WpM, bConfig.WpM); eeprom_write_byte(&ee_KeyerMode, bConfig.KeyerMode); @@ -107,28 +105,59 @@ void WriteEEprom(void) eeprom_write_byte(&ee_RiseTime, bConfig.RiseTime); eeprom_write_byte(&ee_RiseTimeCounter, bConfig.RiseTimeCounter); eeprom_write_byte(&ee_DebounceTime, bConfig.DebounceTime); - sei(); + IntEnable(); } void ReadEEpromWpM(void) { - cli(); + IntDisable(); bConfig.WpM = eeprom_read_byte(&ee_WpM); - sei(); + IntEnable(); } void WriteEEpromWpM(void) { - cli(); + IntDisable(); eeprom_write_byte(&ee_WpM, bConfig.WpM); - sei(); + IntEnable(); } - +/** @brief Standardeinstellungen (bei neuem Controller) + * + * @param none + * @return none + */ +void SetEEprom(void) +{ + Dummy = 0x55; + bConfig.WpM = 15; + bConfig.KeyerMode = 2; + bConfig.SidetoneFreq = 600; + bConfig.TRX = 1; + bConfig.SidetoneEnabled = 1; + bConfig.WpMBpM = 1; + bConfig.Reverse = 0; + bConfig.WinkeyerEnabled = 0; + bConfig.Ratio = 30; + bConfig.Memory = 0; + bConfig.RiseTime = 5; + bConfig.RiseTimeCounter = 5; + bConfig.DebounceTime = 10; + WriteEEprom(); +} +/** @brief EEprom lesen + * @param none + * @return none + */ void ReadEEprom(void) { - sprintf(sdebug,"EEprom lesen\r\n"); - SerialWriteString(sdebug); - cli(); + IntDisable(); + Dummy = eeprom_read_byte(&ee_Dummy); + IntEnable(); + if(Dummy != 0x55) + { + SetEEprom(); + } + IntDisable(); bConfig.WpM = eeprom_read_byte(&ee_WpM); bConfig.KeyerMode = eeprom_read_byte(&ee_KeyerMode); bConfig.SidetoneFreq = eeprom_read_word(&ee_SidetoneFreq); @@ -142,7 +171,8 @@ void ReadEEprom(void) bConfig.RiseTime = eeprom_read_byte(&ee_RiseTime); bConfig.RiseTimeCounter = eeprom_read_byte(&ee_RiseTimeCounter); bConfig.DebounceTime = eeprom_read_byte(&ee_DebounceTime); - sei(); + IntEnable(); + if(bConfig.WpM > 50) { bConfig.WpM = 15; WriteEEpromWpM(); @@ -159,19 +189,64 @@ void ReadEEprom(void) bConfig.DebounceTime = 25; WriteEEprom(); } - sprintf(sdebug,"WpM : %i\r\n", bConfig.WpM); +} +/** @brief Aktuelle Einstellungen über serielle Schnittstelle ausgeben + * @param none + * @return none + */ +void SerialInfo(void) +{ + sprintf(sdebug,"WpM : %i\r\n", bConfig.WpM); + SerialWriteString(sdebug); + sprintf(sdebug,"KeyerMode : %i\r\n", bConfig.KeyerMode); + SerialWriteString(sdebug); + sprintf(sdebug,"SidetoneFreq : %u\r\n", bConfig.SidetoneFreq); + SerialWriteString(sdebug); + sprintf(sdebug,"TRX : %i\r\n", bConfig.TRX); + SerialWriteString(sdebug); + sprintf(sdebug,"SidetoneEnabled : %i\r\n", bConfig.SidetoneEnabled); + SerialWriteString(sdebug); + sprintf(sdebug,"Ratio : %i\r\n", bConfig.Ratio); SerialWriteString(sdebug); - sprintf(sdebug,"SidetoneFreq: %ul\r\n", bConfig.SidetoneFreq); + sprintf(sdebug,"WpMBpM : %i\r\n", bConfig.WpMBpM); SerialWriteString(sdebug); - sprintf(sdebug,"WpMBpM : %i\r\n", bConfig.WpMBpM); + sprintf(sdebug,"Reverse : %i\r\n", bConfig.Reverse); + SerialWriteString(sdebug); + sprintf(sdebug,"Memory : %i\r\n", bConfig.Memory); + SerialWriteString(sdebug); + sprintf(sdebug,"Winkeyer : %i\r\n", bConfig.WinkeyerEnabled); + SerialWriteString(sdebug); + sprintf(sdebug,"RiseTime : %i\r\n", bConfig.RiseTime); + SerialWriteString(sdebug); + sprintf(sdebug,"RiseTimeCounter : %i\r\n", bConfig.RiseTimeCounter); + SerialWriteString(sdebug); + sprintf(sdebug,"DebounceTime : %i\r\n", bConfig.DebounceTime); SerialWriteString(sdebug); } - +/** @brief Versionsinformation über serielle Schnittstelle ausgeben + * @param none + * @return none + */ +void SerialAbout(void) +{ + sprintf(sdebug,"%s", CLRSCR); + SerialWriteString(sdebug); + sprintf(sdebug,"%s %s %s\r\n\r\n", PRG,VER,CALL); + SerialWriteString(sdebug); +} +/** @brief Ein Zeichen über serielle Schnittstelle ausgeben + * @param Zeichen + * @return none + */ void SerialWriteChar(unsigned char data) { while(!(UCSR0A & (1< 0) { @@ -224,7 +207,7 @@ ISR(TIMER1_COMPA_vect) StateRiseTime--; } } - if(state_sidetoneoff == 1) + if(bState.SidetoneOff == 1) { if(StateRiseTime < bConfig.RiseTime) { @@ -277,14 +260,14 @@ ISR(TIMER0_COMPA_vect) { bMenuCtrl.buttonPressedLong = 1; if(bMenuCtrl.Config == 1) - bMerker.WriteEEprom = 1; + bState.WriteEEprom = 1; } } // WpM verändert? Nach 5 Sekunden im EEPROM Speichern - if((StoreEEprom > 1000) && (bMerker.WpMChanged)) + if((StoreEEprom > 1000) && (bState.WpMChanged)) { - bMerker.WriteWpMEEprom = 1; - bMerker.WpMChanged = 0; + bState.WriteWpMEEprom = 1; + bState.WpMChanged = 0; } // Softwareentprellung für StraightKey TimerStraightKeyPressed++; @@ -328,7 +311,7 @@ ISR(USART_RX_vect) */ void DoMorse(void) { - if((KeyerMode == IAMBIC_A) || (KeyerMode == IAMBIC_B) || KeyerMode == SINGLE_PADDLE) + if((KeyerMode == IAMBIC_A) || (KeyerMode == IAMBIC_B) || KeyerMode == ULTIMATIC) { if((KeyerMode == IAMBIC_A) && (IambicFlag) && (ReadKeyPin(LEFT_PADDLE))) { @@ -350,22 +333,6 @@ void DoMorse(void) } } } - else - { - if(KeyerMode == STRAIGHT) - { - if(DitBuffer) - { - DitBuffer = 0; - TXKey(1,MAN); - } - else - { - TXKey(0,MAN); - } - DitCounter = 0; - } - } } /** @brief Initialisierung bei Reset und Neustart * @param none @@ -373,21 +340,28 @@ void DoMorse(void) */ void ReStart(void) { + + MenuCtrlTimer = 0; + t_delayms = 0; + bState.SendStatus = SENDING_NOTHING; + + Init(); + DisplayVersion(); ReadEEprom(); WpM = bConfig.WpM; EncoderPos = bConfig.WpM; EncoderWrite(bConfig.WpM); EncoderPosConfig = 1; SetFrequency(bConfig.SidetoneFreq); - MenuCtrlTimer = 0; - t_delayms = 0; - SendStatus = SENDING_NOTHING; - Init(); - DisplayVersion(); + SetRatio(0); KeyerMode = bConfig.KeyerMode; PaddleMode = bConfig.Reverse; KeyTX = 1; - KeyState = 0; + bState.KeyState = 0; + if(bConfig.SidetoneEnabled) + SidetoneEnable(); + else + SidetoneDisable(); } /** @brief main() * @param none @@ -396,28 +370,31 @@ void ReStart(void) int main(void) { ReStart(); + SerialAbout(); + SerialInfo(); while(1) { Drehencoder(); // Wenn Geschwindigkeit verändert und Zeit abgelaufen, // dann im EEprom speichern und Merker löschen. - if(bMerker.WriteWpMEEprom) + if(bState.WriteWpMEEprom) { sprintf(sdebug," %i WpM in EEprom speichern\r\n", bConfig.WpM); SerialWriteString(sdebug); WriteEEpromWpM(); - bMerker.WriteWpMEEprom = 0; + bState.WriteWpMEEprom = 0; } - if(bMerker.WriteEEprom) + if(bState.WriteEEprom) { sprintf(sdebug,"Einstellungen in EEprom speichern\r\n"); SerialWriteString(sdebug); WriteEEprom(); - bMerker.WriteEEprom = 0; + bState.WriteEEprom = 0; } UpdateDisplay(); CheckStraightKey(); CheckPaddles(); + DitDahBuffers(); DoMorse(); } } diff --git a/Source/main.h b/Source/main.h index 3d88c9e..1771483 100644 --- a/Source/main.h +++ b/Source/main.h @@ -14,7 +14,7 @@ struct Config bConfig; struct MenuCtrl bMenuCtrl; -struct Merker bMerker; +struct State bState; // Function prototypes void Init(void); void InitTimer(void); @@ -27,7 +27,7 @@ void SendDit(uint8_t SendingType); void SendDah(uint8_t SendingType); void SideToneOff(void); void SideToneOn(void); -void TXKey(uint8_t State, uint8_t SendingType); +void TXKey(uint8_t State); void SendChar(uint8_t); void ChangeSpeed(void); void DoMorse(void); diff --git a/Tools/flash.sh b/Tools/flash.sh new file mode 100755 index 0000000..ca97242 --- /dev/null +++ b/Tools/flash.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# EEprom lesen und schreiben +# malkus elektronik GmbH +# 2010-09-07 +# +# +# Read EEPROM + +CPU="atmega328p" + +if [ $1 = "S" ] +then + echo EEPROM schreiben + avrdude -p $CPU -P /dev/ttyACM0 -c stk500v2 -B8 -U eeprom:w:eeprom.read + echo Fertig! + exit 0 +fi + +if [ $1 = "R" ] +then + echo EEPROM lesen + avrdude -p $CPU -P /dev/ttyACM0 -c stk500v2 -B8 -U eeprom:r:eeprom.read:i + exit 0 +fi +exit 0 +