|
Tonausgabe mit Atxmega128A1 / halvedDisc2®
Der kleine Lautsprecher der halvedDisc2® (auf der
Rückseite / hinter dem Display) ist an PORTF0 angeschlossen.
Experiment 1 - einfaches Toggeln des Bits 0 an Port F:
/*
* Programm: speaker.c
* Author:
tux@mikrocontrollerspielwiese.de
*/
#include
<avr/io.h> //
Bibliothek mit Befehlen für Mikrocontroller Ein- und
Ausgaben
#define F_CPU
2000000UL // Taktfrequenz 2 MHz
#include <util/delay.h>
int main (void) {
PORTF_DIR =
0b00000001; // Datenrichtungsregister: Pin des Speakers ist
nun Ausgang
while(1) {
PORTF.OUT = 0b00000001;
_delay_ms(0.1);
PORTF.OUT = 0b00000000;
_delay_ms(0.1);
}
return 0;
}
Experiment 2 - Benutzen eines Timers:
/*
* SpeakerMitTimer.c
* Author:
tux@mikrocontrollerspielwiese.de
*/
#include <avr/io.h>
#include <avr/interrupt.h>
// Interrupt Service Routine des
Timers F0
ISR(TCF0_OVF_vect) {
PORTF.OUT
^= 0b00000001; // Toggeln des Speaker-Pins
}
int main(void) {
PORTF_DIR = 0b00000001;
//Datenrichtungsregister: Pin von Speaker ist nun Ausgang
cli(); //Interrupts
deaktivieren, um in Ruhe die Timerinterrupts zu
konfigurieren
// Timer F0 konfigurieren
TCF0.CTRLA =
TC_CLKSEL_DIV64_gc; //Prescaler: 64
TCF0.CTRLB = 0;
//select Modus: Normal
TCF0.PER = 50;
//Zähler-Top-Wert, Werte: 1...65535
TCF0.CNT = 0;
//Zähler zurücksetzen
TCF0.INTCTRLA =
0b00000011; //Interrupt Highlevel
// Interrupts
High-,Medium- und Lowlevel freigeben
PMIC.CTRL |=
PMIC_HILVLEN_bm |PMIC_MEDLVLEN_bm|PMIC_LOLVLEN_bm;
sei(); //Interrupts
aktivieren
while(1)
{
//derzeit nix drin hier
}
}
Links:
Hochschule Mittweida
halvedDisc
halvedDisc2
Datenblatt
des ATxMega128A1
|