PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Enable Urxc macht fehler beim kompilieren



olby2
12.09.2009, 11:50
Hallo Leute,
ich habe eine Kleines Programm auf einem Mega 128 unter Verwendung eines Bascom-Beispieles gemacht und es funktioniert.

Jetzt möchte ich es auf einemAT90PWM3 zum laufen bekommen, doch schon der Kompiler macht mir einen Strich durch die Rechnung, da er
"Enable URXC" als Fehler bemängelt..

Ich habe im Datenblatt von Atmel und ich den Definitionsdateien von Bascom nachgeschaut - den Interrupt sollte es meiner Meinung nach genau so wie beim Mega128 geben .




'********** Configuration Settings **********
$regfile = "at90pwm2_3.dat" ' use AT90PWM3 definitions

$framesize = 32
$swstack = 32
$hwstack = 32

$crystal = 16000000
$baud = 19200
On Urxc Rs232
Enable Urxc 'handler seriale
Enable Interrupts
Open "com1:" For Binary As #1 'Ausgabe über serielle Schnittstelle


'############################################
'#### Constanten ###############################
'############################################

Const Ja = 1
Const No = 0
Const Vb6 = No
Const Mode_pos = 0
Const Mode_vel = 1
Const Mode_trp = 2
Const Mode_velp = 3
Const Mode_idle = 4
Const True = 1
Const False = 0

Const E_n_ramps = 1 ' E_N_RAMPS to init PSC 0 ramp number 4,2,1,0(centered) */
Const E_overlapped = 1 '/* E_OVERLAPPED to test with overlapped values in one ramp mode */
Const E_retrig_0 = 1 '/* E_RETRIG_0 to enable retrigger O input */

'#############################################
'#### Variablen ##################################
'#############################################
Dim Dead_time_0 As Integer
Dim On_time_0 As Integer
Dim Dead_time_1 As Integer
Dim On_time_1 As Integer


Dim Dummy As Byte
Dim Tx_enable As Bit
Dim Str_tx_1 As String * 20
Dim Comando As String * 30
Dim Comando_old As String * 30
Dim Char(20) As Byte
Dim Cmd_ar(5) As String * 10
Dim N_cmd As Byte
Dim M As Byte
Dim I As Word
Dim U As Word
Dim O As Word


Do


If Tx_enable = 1 Then 'permetti la trasmissione
Tx_enable = 0
Print Str_tx_1 'trasmetti la stringa
End If






Loop


Rs232:
#if Vb6
Input #2 Comando Noecho 'se usato con vb6
#else
Char(1) = Inkey(#2) 'se usato con terminal
Char(1) = Ucase(char(1))
If Char(1) = Chr(13) Then
'Print
#endif
'................................................. ..........................
If Comando = "" Then Comando = Comando_old
N_cmd = Split(comando , Cmd_ar(1) , " ") 'splittet den String in N_cmd - Teile ( erstes in Cmd_ar(1) )
M = Val(cmd_ar(2)) 'returns number of characters in String
'................................................. .....................
Select Case Cmd_ar(1)
Case "RSTF"
Print "(0 RST Program, 0)"
'Start Watchdog
'................................................. .........
Case "MADE"
Print "(0 , 0)"
'................................................. .........
Case "VER"
Print "(0 Ver 0.1 10.09.2009, 0)"
'................................................. .........
'................................................. .........
Case "Start"
Print " Start "
'................................................. .........
Case "Stop"
Print " Stop "
'................................................. .........
Case "VOLT?"
Tx_enable = 1

'................................................. .........
Case "AMP!"
Tx_enable = 1

'................................................. .........
Case "Rpppl!" 'set pid parameter

Print "(" ")"
'................................................. .........
Case "AMP?" 'get pid parameter
Print "(" ")" 'get pid parameter
'................................................. .........
Case "Rppl?"

Print "(" ")"
'................................................. .........
Case "FRQ?"
Print "(" ")"
'................................................. .........
Case "Mode" 'set zero position
Print "(" ")"


Case Else
'................................................. .........
End Select
Comando_old = Comando
Comando = ""
'................................................. .....................
#if Vb6
#else
Else
Comando = Comando + Chr(char(1)) ' zusammensetzen des Befehls im Terminal-Mode
Print Comando ; Chr(13);
End If
#endif



es gibt doch bestimmt die Möglichkeit ohne die Hochsprachenbefehle von Bascom den Interrupt URXC zu aktivieren oder ?

vielen dank.
olby2

peterfido
12.09.2009, 21:34
Ja, z.B. mit Inline Assembler.
Die Befehlt aus dem Datenblatt einfach umgeben von "$asm" und "$end asm" ohne Häkchen eingeben.

screwdriver
13.09.2009, 11:09
es gibt doch bestimmt die Möglichkeit ohne die Hochsprachenbefehle von Bascom den Interrupt URXC zu aktivieren oder ?


Aber wozu denn? Bit-weiser Zugriff auf Register ist auch von Bascom aus möglich. In deinem Fall wäre das

set ucsrb.rxcie

Der Kompiler macht dann daraus:
...
LDS R24,0x00C1
ORI R24,0x80
STS 0x00C1,R24
...

olby2
15.09.2009, 15:55
es gibt doch bestimmt die Möglichkeit ohne die Hochsprachenbefehle von Bascom den Interrupt URXC zu aktivieren oder ?


Aber wozu denn? Bit-weiser Zugriff auf Register ist auch von Bascom aus möglich. In deinem Fall wäre das

set ucsrb.rxcie

Der Kompiler macht dann daraus:
...
LDS R24,0x00C1
ORI R24,0x80
STS 0x00C1,R24
...


vielen dank für den Tipp, werde es gleich mal ausprobieren