mikron
19.07.2011, 09:51
Hallo,
vorab: ich bin Einsteiger in die Mikrocontrollertechnik und neu hier in diesem Forum.
Zur Zeit arbeite ich Roland Walters "AVR-Lehrbuch" mit Experimentierboard und ATmega8-16 durch.
Nun habe ich ein kleines Problem mit einer Beispiel-Aufgabe aus dem Buch. Mit folgendem kleinen Listing soll ein Text auf den PC-Bildschirm geschickt werden, während gleichzeitig ein Ton ausgegeben wird.
'0404bas: USART: Senden mit Warteschlange
'Hardware: MAX232 an PD0/PD1, Nullmodemkabel zum PC
'Speaker an Pin PD5
'------------------------------------------------------------
$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 3686400 'Quarz: 3,68464 MHz
$baud = 9600 'Baudrate der USART: 9600 Baud
Config Serialout = Buffered , Size = 20 '20 Bytes Warteschlange
Ddrd.5 = 1 'PD5 als Ausgang konfigurieren
Do
If _rs_head_ptrw0 = _rs_tail_ptrw0 Then
Print "Das ist ein Test."
Portd.5 = Not Portd.5 'PD 5 Speakerausgang invertieren
Waitms 1 '1 Millisekunden warten
End If
Loop
End
Leider funktioniert das so nicht. Laut Roland Walter wird mit „Config Serialout“ eine externe Assemblerroutine aus der MCS.LIB für den Interrupt „USART Transmit Complete“ eingebunden und dieser Interrupt eingeschaltet.
Dies scheint jedoch bei mir so nicht zu funktionieren. Erst, nachdem ich zusätzlich vor dem Statement noch den Befehl „Enable Interrupts“ eingebunden habe, funktioniert das Programm.
Meine Frage: Mache ich etwas falsch, oder stimmen die Angaben im Buch nicht? Schaltet die eingebundene Assemblerroutine doch nicht den benötigten Interrupt ein ?
Gruss,
Bernd
vorab: ich bin Einsteiger in die Mikrocontrollertechnik und neu hier in diesem Forum.
Zur Zeit arbeite ich Roland Walters "AVR-Lehrbuch" mit Experimentierboard und ATmega8-16 durch.
Nun habe ich ein kleines Problem mit einer Beispiel-Aufgabe aus dem Buch. Mit folgendem kleinen Listing soll ein Text auf den PC-Bildschirm geschickt werden, während gleichzeitig ein Ton ausgegeben wird.
'0404bas: USART: Senden mit Warteschlange
'Hardware: MAX232 an PD0/PD1, Nullmodemkabel zum PC
'Speaker an Pin PD5
'------------------------------------------------------------
$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 3686400 'Quarz: 3,68464 MHz
$baud = 9600 'Baudrate der USART: 9600 Baud
Config Serialout = Buffered , Size = 20 '20 Bytes Warteschlange
Ddrd.5 = 1 'PD5 als Ausgang konfigurieren
Do
If _rs_head_ptrw0 = _rs_tail_ptrw0 Then
Print "Das ist ein Test."
Portd.5 = Not Portd.5 'PD 5 Speakerausgang invertieren
Waitms 1 '1 Millisekunden warten
End If
Loop
End
Leider funktioniert das so nicht. Laut Roland Walter wird mit „Config Serialout“ eine externe Assemblerroutine aus der MCS.LIB für den Interrupt „USART Transmit Complete“ eingebunden und dieser Interrupt eingeschaltet.
Dies scheint jedoch bei mir so nicht zu funktionieren. Erst, nachdem ich zusätzlich vor dem Statement noch den Befehl „Enable Interrupts“ eingebunden habe, funktioniert das Programm.
Meine Frage: Mache ich etwas falsch, oder stimmen die Angaben im Buch nicht? Schaltet die eingebundene Assemblerroutine doch nicht den benötigten Interrupt ein ?
Gruss,
Bernd