olby2
12.09.2009, 12: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
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
#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