Drittes selbstgebautes System

 

 

Mit einem Mikrocomputer ATMEL AVR Tiny12V/Tiny12L wird eine kleine piepsende Schaltung aufgebaut.

 

Die Schaltung gibt mit niedriger Geschwindigkeit Morsesignale ab; die Morsecodezeichen werden schülerInnenspezifisch

programmiert, so dass jedeR einen eigenen Text als Morse-Pieptöne hören kann.

 

Der Mikrocomputer ist in minimaler Schaltung ausgeführt; es gibt nur einen Ein-Ausschalter zum ruhigstellen.

 

Die Programmierung erfolgt in Assembler mit einer Interruptroutine für einen gleichmäßigen Piepton (ca. 2,5 kHz).

Der Morsecode entsteht, indem im Programm die Unterprogramme S, P, A in richtiger Reihenfolge mehrfach aufgerufen werden.

  S: Strich, lang;   P: Punkt, kurz;   A: Abstand, lange Pause.

 

Als Lautsprecher wird ein Piezoelement (ohne eigene Elektronik) genutzt, dass im Gegentakt an zwei Portpins des Mikrocomputers

angeschlossen ist. Die Stromversorgung erfolgt durch eine Lithium-Knopfzelle 3V mit einem Abblock-Kondensator 220 nF.

Der Tiny12V ist wegen seines erweiterten Versorgungsspannungsbereichs vorzuziehen.

 

 

Vorderseite                                                                                                       Rückseite

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Als Basis dient eine Lochrasterplatine mit Leiterstreifen, die an einer Seite eine Leiterbahntrennung in fünf Streifen erhalten hat;

jenseits Pin 1 des Mikrocomputers bis zum Schalter am Rand.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Durch geschickte Platzierung der Bauteile entsteht die richtige Schaltung; es werden zwei Drahtbrücken benötigt –

in eine davon wird der Schalter eingeschleift.

 

 

    >>Audiobeispiel mit Zeichenkette  NO BS<<

 

 

 

Schaltplan

 

 

      

 

 

Bauteilanordnung

 

                         C:\Users\adm\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\ECYGHA9U\CAQ5RDUG.gif

von der Lötseite aus gesehen.

 

 

 

Programmlisting

 

 

Hier wird der Morsecode für die Zeichenkette  NO BS ausgegeben.

 

Der Mikrocomputer arbeitet mit internem Takt von ca. 1 MHz, alle 3 * 64 Takte wird der Interrupt durch einen Timer ausgelöst.

 

; es soll port b 3 - 4 auf pin 2 u 3 gemeinsam piepsen

 

.include "tn12def.inc"

.org 0x000

 

.def dauer = R18

 

;Registervariablen innerhalb der INT-Routine

.def intcnt = R21

.def intfrei = R22

.def inttogg = R23

.def intflgs = R24

.def inttmp = R25

 

; Vektoren

rjmp reset

nop

nop

rjmp timint

nop

reti

 

.org 0x20

reset:

   ldi dauer, 0x18

   out ddrb,dauer ; b3 b4 auf ausgang

   ldi dauer, 0x00

   out portb,dauer ; alles auf LOW

 

   ldi dauer, 253

   out tcnt0,dauer ; vorladen zaehler

 

   ldi dauer, 0x03   ;3

   out tccr0,dauer ; int clock / 64

 

   ldi dauer, 0x02

   out timsk,dauer ; tim int ena

 

   sei ; int enable   

 

   ldi inttogg, 0x10 ; initiales Port-Muster

   rjmp neu

 

 

timint:  ; ISR fuer Timer

 

   in intflgs, SREG ; flags sichern

 

   ldi inttmp, 253 ; 253 (256 - 3 ! )

   out tcnt0, inttmp ; vorladen zaehler

   dec intcnt ; Zeitzaehler manipulieren

 

   com inttogg ; ein-aus für piepsfrequenz

   mov inttmp,inttogg

   and inttmp,intfrei ; piepen an aus

   out portb,inttmp

 

   out SREG,intflgs ; flags restore

 

   reti

 

timwait: ; Verzoegerung , nutzt intcnt aus Timer-ISR

  

   ldi intcnt,255

 

wait:

   cpi intcnt,0 ; intcnt wird in Timer ISR heruntergezaehlt

   brne wait

 

   ret

 

;

neu:

 

; HIER die calls fuer die Morsezeichen

   rcall s

   rcall p

   rcall a

   rcall s

   rcall s

   rcall s

   rcall a

   rcall s

   rcall p

   rcall p

   rcall p

   rcall a

   rcall p

   rcall p

   rcall p

   rcall a

   rcall a

   rcall a

   rjmp neu

 

P:

   ldi intfrei, 255

   ldi dauer, 2

pl1:

   rcall timwait

   dec dauer

   brne pl1

 

   ldi intfrei, 0

   ldi dauer, 8

pl2:

   rcall timwait

   dec dauer

   brne pl2

   ret

 

S:

   ldi intfrei, 255

   ldi dauer, 10

sl1:

   rcall timwait

   dec dauer

   brne sl1

 

   ldi intfrei, 0

   ldi dauer, 8

sl2:

   rcall timwait

   dec dauer

   brne sl2

   ret

 

A:

   ldi intfrei, 0

   ldi dauer, 12

al1:

   rcall timwait

   dec dauer

   brne al1

   ret