PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit rn-control programmierung



christian87
23.01.2005, 22:13
Hallo,

Habe folgendes Problem ich will das Rn-control Testprogramm auf den avr kopieren. Habe alles nach Anleitung gemacht, Wenn ich nun auf Run Programmer drücke, wird mir "File E:Dokumente un....usw .BIN not found" angezeigt
Danach kommt die Meldung Select chip and target chip do not match ATMEGA32 <> AT90S2313
Danach öffnet sich der Programmer er erkennt auch den chip also ich kann ihn suchen. Aber ich kann kein programm aufspielen

pewona
23.01.2005, 22:17
Hallo Christian 87, habe das gleiche Problem siehe "Probleme mit neuer BAscom Demo". Benutzt du auch die Version 1.11.7.7?

christian87
23.01.2005, 22:23
Ja genau die benutze ich. Hab ich schon gelesen denthread, werde daraus aber auch nicht schlau. Was kann ich machen?

23.01.2005, 22:26
Wenn du bei "Show compile result" ganz nach unten scrollst erscheinen zwei Fehlermeldungen in zwei "Print" zeilen deines Programms. Nach dem Löschen kommt aber immer noch die Fehlermeldung. Es wird aber definitiv auch keine (notwendige) .bin Datei erstellt. Bin selber neu (RN am Wochenende zusammengelötet), wollte die neue Version wegen 4k statt 2k benutzen. Vielleicht kommt noch ein Experte auf die Lösung.

pewona
23.01.2005, 22:28
sorry, der Gast oben ist pewona,

23.01.2005, 23:33
Kommt denn beim kompilieren unten eine Fehlermeldung?

Frank
23.01.2005, 23:46
Ich hab nun auch die neue Bascom Version installiert, allerdings die Vollversion. Dürfte aber mit der 4k Version identisch sein, nur halt keine Speicherbegrenzung haben.

Nach dem Update muss man eigentlich nur wieder den Programmer umstellen. Im Menü "Programmer" einfach "STK200 kompatibel" wählen.
Ansonsten musste ich im Testprogramm nur in eine Zeile bei einem String-Befehl was ändern. dort musste die Länge angegeben werden.

Ansonsten lies es sich problemlos compilieren und in rn-controll übertragen.
Hier der Source mit dem angepassten String-Befehl.



'################################################# ##
'rncontroltest.BAS
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1
'Das neue preiswerte Controllerboard zum experimentieren
'
'Aufgabe:
' Dieses testprogramm testet gleich mehrere Eigenschaften auf dem Board
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Zeigt Batteriespannung über RS232 an
' Taste 2: Angeschlossene Motoren beschleunigen und abbremsen
' Taste 3: Einige male Lauflicht über LED´s anzeigen. Am I2C-Bus
' darf in diesem Moment nichts angeschlossen sein
' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s über RS232 an
''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an


' Ser gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird,
' wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden

'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######


Declare Sub Batteriespannung()
Declare Sub Motortest()
Declare Sub Lauflicht()
Declare Sub Showporta()
Declare Sub Showdigitalporta()
Declare Function Tastenabfrage() As Byte


$regfile = "m32def.dat"

Dim I As Integer
Dim N As Integer
Dim Ton As Integer

$crystal = 16000000 'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung

Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein


Const Ref = 5 / 1023 'Für Batteriespannungsberechnung

Dim Taste As Byte
Dim Volt As Single

' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8





I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** RN-CONTROL 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Print
Do




Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
Call Batteriespannung 'Taste 1 Zeigt Bateriespannung über RS232 an
Case 2
Call Motortest 'Taste 2 Motoren beschleunigen und abbremsen
Case 3
Call Lauflicht 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Case 4
Call Showporta 'Zeigt Messwerte an allen Port A PIN´s
Case 5
Call Showdigitalporta 'Zeigt digitalen I/O Zustand von PA0 bis PA5 an



End Select
Sound Portd.7 , 400 , 500 'BEEP
End If

Waitms 100
Loop

End




'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
' Case Else
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
End Select
Sound Portd.7 , 400 , Ton 'BEEP

End If

' If Ws < 1023 Then
' Select Case Ws
' Case 895 To 910
' Tastenabfrage = 1
' Ton = 550
' Case 870 To 894
' Tastenabfrage = 2
' Ton = 500
' Case 650 To 690
' Tastenabfrage = 3
' Ton = 450
' Case 450 To 480
' Tastenabfrage = 4
' Ton = 400
' Case 220 To 280
' Tastenabfrage = 5
' Ton = 350
' End Select
' Sound Portd.7 , 400 , Ton 'BEEP
' End If

End Function



'Diese Unterfunktion zeigt Bateriespannung an
Sub Batteriespannung()
Local W As Word
Start Adc
W = Getadc(6)
Volt = W * Ref
Volt = Volt * 5.2941
Print "Die aktuelle Spannung beträgt: " ; Volt ; " Volt"

End Sub


'Testet Motoren und Geschwindigkeitsreglung
Sub Motortest()
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN

'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN


I = 0
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I + 5
Loop Until I > 1023

Wait 1
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I - 5
Loop Until I < 1
Pwm1a = 0 'Linker Motor aus
Pwm1b = 0 'rechter Motor aus
End Sub


'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Sub Lauflicht()

Config Portc = Output
Portd = 0
For N = 1 To 10
For I = 0 To 7
Portc.i = 0
Waitms 100
Portc.i = 1
Next I
Next N
Config Portc = Input
End Sub


'Zeigt Die Analogen Messwerte An Port A An
Sub Showporta()
Local Ws As Word

Config Porta = Input
For I = 0 To 5 ' Alle internen Pullup Widerständ ein,bis auf Batteriespannungsmessungsport
Porta.i = 1
Next I

Print
Print "Ermittelte Messwerte an Port A:"
For I = 0 To 7 ' Alle Eingäne inkl.messen
Start Adc
Ws = Getadc(i)
Volt = Ws * Ref
Print "Pin " ; I ; " ADC-Wert= " ; Ws ; " bei 5V REF waeren das " ; Volt ; " Volt"
Next I
End Sub


'Zeigt den Zustand einiger freier I/OI/O von Die Analogen Messwerte An Port A An
Sub Showdigitalporta()
Local Zustand As String * 6
Config Porta = Input
For I = 0 To 5 ' Alle internen Pullup Widerständ ein,bis auf Batteriespannungsmessungsport
Porta.i = 1
Next I

Print
Print "Ermittelter I/O Zustand Port A:"
For I = 0 To 5 ' Alle Eingäne inkl.messen
If Pina.i = 1 Then
Zustand = "High"
Else
Zustand = "Low"
End If
Print "Pin " ; I ; " I/O Zustand= " ; Pina.i ; " " ; Zustand
Next I
End Sub


Gruß Frank

christian87
23.01.2005, 23:54
Das Testprogramm lässt sich jetzt raufspielen keine Ahnung warum. Nun wollte ich diese Programm testen und es treten wieder die selben Fehler auf.


'################################################# ##
'RnControlStepper.BAS
'für
'RoboterNetz Board RN-CONTROL ab Version 1.1
'Das neue preiswerte Controllerboard zum experimentieren
'
'Aufgabe:
' Dieses testprogramm steuert einen bipolaren Schritttmotor an
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Modus einstellen zwischen Vollschritt, Halbschritt und
' Einstellmöglichkeit für delay zwischen den Schritten
' Taste 2: Schrittmotor vorwärts im Halb- oder Vollschritt, bzw. delay
' um 1 erhöhen
' Taste 3: rückwärts wie bei Taste 2, bzw. delay - 1
' Taste 4: Schrittmotor im gewählten Modus vorwärts ohne Tasten-Delay

' Der Schrittmotor sollte so in etwa die gleiche Nennspannung haben, wie
' das Netzteil mit dem das RN-Control board gefüttert wird.
' Ich teste mit einem 9V Netzteil, und einem Schrittmotor der eigentlich 12V hat.
' Es funktioniert absolut einwandfrei.

' Da ich absoluter Microcontroller, Schrittmotor und Bascom- Neuling bin, gibt's
' da sicher noch einiges zu verbessern, oder?

' Autor: Harry
'################################################# #############


Declare Sub Fullstepforward()
Declare Sub Fullstepbackward()
Declare Sub Halfstepforward()
Declare Sub Halfstepbackward()
Declare Sub Lauflicht()
Declare Sub Dofullstep()
Declare Sub Dohalfstep()
Declare Sub Setupprocedure()
Declare Function Tastenabfrage() As Byte

Declare Sub Fastfullstepforward()
Declare Sub Fasthalfstepforward()



$regfile = "m16def.dat"

Dim I As Integer
Dim N As Integer
Dim Ton As Integer
Dim Setupprocindex As Integer

$crystal = 8000000 'Quarzfrequenz
$baud = 9600

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung

Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein

Dim Taste As Byte

' an diesen Ports hängt der Schrittmotor. jetzt kann man die pins ganz einfach
' mit dem Alias-Namen ansprechen.
A Alias Portc.6
B Alias Portc.7
C Alias Portb.0
D Alias Portb.1

'need this pins for controlling the L293D
Config Pind.4 = Output
Config Pind.5 = Output
Config Pinc.6 = Output
Config Pinc.7 = Output
Config Pinb.0 = Output
Config Pinb.1 = Output

'wir nehmen diese beiden LED's um anzuzeigen, ob der Vollschritt, Halbschritt
'oder der Setup-Modus aktiv ist. Mit dem Setup-Modus kann das delay zwischen den
'Schritten stufenlos verstellt werden
Config Pinc.0 = Output
Config Pinc.1 = Output

'Wir legen uns ein Array für den Vollschrittmodus an. Wir brauchen nur die ersten
'vier Bits. Jedes Bit gibt dabei an, ob an dem jeweiligen Port Strom fließen soll
'oder eben nicht. 4 Elemente deswegen, weil es bei Vollschritt eben 4 Schritte gibt.
Dim Fullsteparray(4) As Byte
Fullsteparray(1).1 = 1
Fullsteparray(1).2 = 0
Fullsteparray(1).3 = 1
Fullsteparray(1).4 = 0

Fullsteparray(2).1 = 1
Fullsteparray(2).2 = 0
Fullsteparray(2).3 = 0
Fullsteparray(2).4 = 1

Fullsteparray(3).1 = 0
Fullsteparray(3).2 = 1
Fullsteparray(3).3 = 0
Fullsteparray(3).4 = 1

Fullsteparray(4).1 = 0
Fullsteparray(4).2 = 1
Fullsteparray(4).3 = 1
Fullsteparray(4).4 = 0

'Das gleiche nochmal für Halbschritt. Hier haben wir dann allerdings 8 Schritte.
Dim Halfsteparray(8) As Byte
Halfsteparray(1).1 = 1
Halfsteparray(1).2 = 0
Halfsteparray(1).3 = 1
Halfsteparray(1).4 = 0

Halfsteparray(2).1 = 1
Halfsteparray(2).2 = 0
Halfsteparray(2).3 = 0
Halfsteparray(2).4 = 0

Halfsteparray(3).1 = 1
Halfsteparray(3).2 = 0
Halfsteparray(3).3 = 0
Halfsteparray(3).4 = 1

Halfsteparray(4).1 = 0
Halfsteparray(4).2 = 0
Halfsteparray(4).3 = 0
Halfsteparray(4).4 = 1

Halfsteparray(5).1 = 0
Halfsteparray(5).2 = 1
Halfsteparray(5).3 = 0
Halfsteparray(5).4 = 1

Halfsteparray(6).1 = 0
Halfsteparray(6).2 = 1
Halfsteparray(6).3 = 0
Halfsteparray(6).4 = 0

Halfsteparray(7).1 = 0
Halfsteparray(7).2 = 1
Halfsteparray(7).3 = 1
Halfsteparray(7).4 = 0

Halfsteparray(8).1 = 0
Halfsteparray(8).2 = 0
Halfsteparray(8).3 = 1
Halfsteparray(8).4 = 0

'für den Halbschritt brauchen wir desweiteren noch ein array mit dem wir die
'Zustände der Ports setzen. Im Gegensatz zum Vollschritt, wo nach dem Schritt der
'Strom an beiden Spulen einfach abgeschaltet werden kann, muß das beim Halbschritt
'anders sein. Beim Halbschritt wird eben auch der Zustand der Spule benötigt.
Dim Halfstepenable(8) As Byte
Halfstepenable(1).1 = 1
Halfstepenable(1).2 = 1

Halfstepenable(2).1 = 1
Halfstepenable(2).2 = 0

Halfstepenable(3).1 = 1
Halfstepenable(3).2 = 1

Halfstepenable(4).1 = 0
Halfstepenable(4).2 = 1

Halfstepenable(5).1 = 1
Halfstepenable(5).2 = 1

Halfstepenable(6).1 = 1
Halfstepenable(6).2 = 0

Halfstepenable(7).1 = 1
Halfstepenable(7).2 = 1

Halfstepenable(8).1 = 0
Halfstepenable(8).2 = 1


'da heben wir uns auf, an welchem Schritt wir uns im Vollschritt-modus gerade
'befinden. Geht von 1 bis 4.
Dim Fullstepindex As Integer
'Ditto für den Halbschritt nur geht's hier von 1 bis 8
Dim Halfstepindex As Integer
'Das ist das delay zwischen den Schritten
Dim Delaybetweensteps As Word

Fullstepindex = 0
Halfstepindex = 0
Delaybetweensteps = 10
Setupprocindex = 0

'Kommt noch aus dem Originalcode von RN-Control
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** RN-CONTROL V1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print
Do
'je nachdem, welche Taste wird gedrückt haben, schalten wir in den
'halbschritt oder vollschritt-modus oder in den modus, in dem das delay
'verstellt werden kann.
'Taste 1 = Modus einstellen
'Taste 2 = Motor im eingestellten modus vorwärts oder delay + 1, je nach modus
'Taste 3 = Motor rückwärts oder delay - 1, je nach modus
'Taste 4 = Motor mehrere male vorwärts ohne delay der tastenabfrage
Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
Call Setupprocedure
Case 2
If Setupprocindex = 0 Then
Fullstepforward
End If
If Setupprocindex = 1 Then
Halfstepforward
End If
If Setupprocindex = 2 Then
Delaybetweensteps = Delaybetweensteps + 1
Print "delaybetweensteps " ; Delaybetweensteps
End If
Case 3
If Setupprocindex = 0 Then
Fullstepbackward
End If
If Setupprocindex = 1 Then
Halfstepbackward
End If
If Setupprocindex = 2 Then
Delaybetweensteps = Delaybetweensteps - 1
If Delaybetweensteps < 1 Then
Delaybetweensteps = 1
End If
Print "delaybetweensteps " ; Delaybetweensteps
End If
Case 4
If Setupprocindex = 0 Then
Fastfullstepforward
End If
If Setupprocindex = 1 Then
Fasthalfstepforward
End If
End Select
End If

Waitms 100
Loop

End


Sub Setupprocedure
Incr Setupprocindex
If Setupprocindex > 2 Then
Setupprocindex = 0
End If

Select Case Setupprocindex
'Vollschritt Modus
Case 0
Portc.0 = 1
Portc.1 = 0
Print "no setup, fullstep"
'Halbschritt Modus
Case 1
Portc.0 = 0
Portc.1 = 1
Print "no setup, halfstep"
'Setup modus in dem mit Taste 2 oder 3 das delay verstellt werden kann
Case 2
Portc.0 = 1
Portc.1 = 1
Print "setup, delaybetweensteps"
End Select

End Sub

'Diese Unterfunktion fragt die Tastatur am analogen Port ab.
'Hier hab ich so mein Problem. Das ganze geht zu langsam. Muß irgendwie anders
'implementiert werden. Da ich mir vorstelle, daß bei gedrückter Taste der Motor
'läuft und bei loslassen wieder stoppt. Das hier erzeugt ein zu großes Delay.
Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
If Ws < 1010 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Case 330 To 380
Tastenabfrage = 2
Case 265 To 305
Tastenabfrage = 3
Case 180 To 220
Tastenabfrage = 4
Case 100 To 130
Tastenabfrage = 5
End Select
' Print "Es wurde gedrueckt: " ; Tastenabfrage
End If

End Function


'Stepper in Fullstep-mode forward
Sub Fullstepforward()

Incr Fullstepindex

If Fullstepindex > 4 Then
Fullstepindex = 1
End If

Dofullstep
End Sub

'Stepper in Fullstep-mode backward
Sub Fullstepbackward()

Decr Fullstepindex

If Fullstepindex < 1 Then
Fullstepindex = 4
End If

Dofullstep
End Sub

'Stepper in Halfstep-mode forward
Sub Halfstepforward()

Incr Halfstepindex

If Halfstepindex > 8 Then
Halfstepindex = 1
End If

Dohalfstep
End Sub

'Stepper in Halfstep-mode backward
Sub Halfstepbackward()

Decr Halfstepindex

If Halfstepindex < 1 Then
Halfstepindex = 8
End If

Dohalfstep
End Sub

'einen Schritt im Vollschritt-Modus ausführen
Sub Dofullstep()
Portd.4 = 1
Portd.5 = 1

A = Fullsteparray(fullstepindex).1
B = Fullsteparray(fullstepindex).2
C = Fullsteparray(fullstepindex).3
D = Fullsteparray(fullstepindex).4
Waitms Delaybetweensteps

'Hier schalten wir die Spulen am Schrittmotor wieder ab. Vorteil: spart Strom.
'Nachteil: Der Motor kann durch äußere Einwirkung weiter gedreht werden.
'Das geht allerdings nur im Vollschrittmodus. Im Halbschritt darf man mit
'Strom eben nicht sparsam umgehen.
Portd.4 = 0
Portd.5 = 0
End Sub

Sub Dohalfstep()
Portd.4 = Halfstepenable(halfstepindex).1
Portd.5 = Halfstepenable(halfstepindex).2

A = Halfsteparray(halfstepindex).1
B = Halfsteparray(halfstepindex).2
C = Halfsteparray(halfstepindex).3
D = Halfsteparray(halfstepindex).4
Waitms Delaybetweensteps

'Hier die Stromspar-Geschichte auskommentiert. Läuft ansosnten nicht ordentlich.
'D.h. der Motor macht mal nen kleineren, mal nen größeren Schritt.
' Portd.4 = 0
' Portd.5 = 0
End Sub

'Lass den Motor im Vollschritt mal ordentlich drehen
Sub Fastfullstepforward()

For I = 1 To 500
Incr Fullstepindex

If Fullstepindex > 4 Then
Fullstepindex = 1
End If

Dofullstep
Next

End Sub


'Ditto im Halbschritt
Sub Fasthalfstepforward()

For I = 1 To 500
Incr Halfstepindex

If Halfstepindex > 8 Then
Halfstepindex = 1
End If

Dohalfstep
Next

End Sub

Frank
24.01.2005, 00:14
Das ist das TestProgramm von Harry, das hab ich noch nicht ausprobiert. Achter aber darauf das es für Mega16 gedacht ist, ansonsten müsstest du die Zeile

$regfile = "m16def.dat"

durch

$regfile = "m32def.dat"

ersetzen. Und achte auch genau darauf ob nicht doch unten irgendwo eine Fehlermeldung nach dem compilieren angezeigt wird. Wenn nicht richtig compiliert wird, dann ist auch kein BIN - Datei da.

christian87
24.01.2005, 00:38
geändert hab ich es er zeigt nach dem compilieren "File not found an"
also es öffnet sich ein Fenster unten wird aber kein Fehler angegeben

24.01.2005, 14:23
Ich glaube das passiert bei der Demo, wenn die Dateien zu groß werden. Dann wird nicht komipiliert und so hat man keine *.bin. Die fehlt dem Teil dann, was aber ansonsten nicht ausgegegben wird, also es steht nirgends, dass hier die Demo-Grenze ist...

Toastbrot

christian87
24.01.2005, 15:58
Jo bei mir gehts jetzt wenn die porgramme zu groß sind macht er probleme. Hab jetzt schon kleinere Programme erfolgreich laden können.

pewona
25.01.2005, 18:03
Die Zeile mit dem von Frank angegebenen String Befehl habe ich geändert. Beim compilieren kam dann keine Fehlermeldung mehr. Bei "Show compile result" letzte Zeile kamen aber 2 Fehlermeldungen für "Volt". Hier mußte die Zeile Dim Volt as single in Dim Volt as Byte umbenannt werden um die Fehlermeldungen abzustellen.

Frank
30.01.2005, 18:28
Siehe Bascom Update:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=56757#56757