PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ct-Bot Code Problem



Sven04
11.10.2006, 22:51
Hi Leute,

ich habe vor meine Ct-Bot über Bascom zu programmieren,ihc habe dazu auch ein einfaches Program geschrieben, jedoch ist dass Problem, dass die abstandssensoren nicht aktiviert werden.
Wäre schön wir euch mal ein Programm anschauen würdet und mir helfen könntet.


Mfg
Sven


Code: [View More of this Code] [View Even More of this Code] [View Less of this Code] [Select All of this Code]


'************************************************* ******************************
'* *
'* Test der LEDs und der Fernbedienung *
'* *
'************************************************* ******************************

$regfile = "m32def.dat" ' specify the used micro
$crystal = 16000000 ' used crystal frequency
$hwstack = 32 ' hardware stack
$swstack = 8 ' SW stack
$framesize = 24



Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.3 = Output



Dim L As Integer
Dim Wr As Word
Dim Wl As Word

Config Adc = Single , Prescaler = Auto

' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinc.7 = Output 'Rechter Motor Kanal 1
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 &H2 'Prescaler = 8


Clock Alias Portc.3 ' Clock des Schieberegisters
Output Alias Portc.0 ' Datenleitung des Schieberegisters
Store Alias Portc.1 ' Pin mit dem die Daten auf den Ausgang gelegt werden


Set Store 'Strobe-Pin zum Speichern auf high





L = 2 ^ 0

Shiftout Output, Clock, L, 1 'Daten herausschieben

Reset Store 'Daten durch Strobe low/high auf den Ausgang legen

Set Store



Start Adc
Wl = Getadc(0)
Wr = Getadc(1)


Portc 0.6 = 1
Portd 0.4 = 1
Portc 0.7 = 0
Portd 0.5 = 1




If Wl > 500 And Wr > 500 Then

Pwm1a = 400
Pwm1b = 250

Else

Pwm1a = 0
Pwm1b = 0


End If

Michael
11.10.2006, 23:04
Hallo Sven04,


Config Adc = Single , Prescaler = Auto
welche Referenzspannung wird denn benutzt und soll sie dem Compiler bekannt gemacht werden?


If Wl > 500 And Wr > 500 Then
eine Reaktion erfolgt also nur wenn beide Werte gleichzeitig > 500 sind.

Ein Wert von 500 entspricht ungefähr der Hälfte der Referenzspannung.

Gruß, Michael

Sven04
11.10.2006, 23:09
Hi Michael,

ich hab den Code schnell geschrieben um auszuprobierenob mein Ct-Bot funktioniert, dies mit dem Config Adc=SIngel, Prescaler=Auto hab ich aus dem RN-Controll Atmega 32 Beispiel entnommen.
Hast du einen Korrekturvorschlag für mich?

Mfg
Sven

Michael
11.10.2006, 23:28
Hallo Sven04,
laut diesem Schaltplan (http://www.ctbot.de/index.php?page=4&action=file&file_id=37) ist keine externe Referenzspannung angeschlossen. Dann mußt du die interne Referenz benutzen.
Mit:
Config Adc = Single , Prescaler = Auto , Reference = Internal
schaltest du die interne Referenz ein.

Diese liegt bei ca. 2,56 Volt.

Aber schau lieber nochmal deine Hardware durch, ob der ARef-Pin wirklich keine Beschaltung hat. Angeblich soll sonst der AD-Wandler Schaden nehmen.

Gruß, Michael

Sven04
11.10.2006, 23:42
Hi Michael,

Ich hab in meinem Schaltplan Nochmal geschaut und gesehen, dass keine Referenzspannung anliigt, also hab ich meinem Code etwas geändert, doch der Roboter macht keine Bewegung. Woran kann das liegen?
Ich bin Ratlos auch die IR-Sensoren gehen nicht an,also man sieht keine rotes Licht im Sensor. Ich habe auch schon die Schieberegister IC's IC 6 und IC5 getaucht. Ohne Erfolg.
Wäre nett wenn ihr mir helfen könntet.

Gruß
Sven

Michael
12.10.2006, 00:07
Hallo Sven04,
so wie ich das mitgekriegt habe, werden die Abstandssensoren mit Hilfe des Schieberegister-ICs 5 eingeschaltet.
Die Vorgehensweise kann man im Wandfolger Programm (http://www.ctbot.de/index.php?page=4&action=file&file_id=32) vom 17.02.2006 (von manolli) anschauen.
Die "procedure shiftoutsen" verdeutlicht den Vorgang.

Gruß, Michael

m.a.r.v.i.n
12.10.2006, 09:21
Hallo Sven04,

fehlt da nicht ein Schleifenbefehl LOOP. So werden die Abstandssensoren doch nur einmal abgefragt. Im c't-Bot Forum gibt es auch ein paar BASCOM Beispiele (http://www.ctbot.de/index.php?page=4&action=category&cat_id=14). In den Beispielen werden auch die Interrupts enabled, sonst geht wahrscheinlich nix mit PWM. Sorry, bin selbst kein BASCOM Experte.

Funktioniert denn der Bot mit den Hex-Files von der c't?

Gruß m.a.r.v.i.n