PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CMPS03 + PIC + PICBASIC/PROTON die Lösung!!!



Sommer
09.05.2005, 21:13
Hi Leute,

so nun hab ich meinen Überwachungsroboter "Alarmbot" fast fertig :-)

Ich habe zuerst die Kompassrichtung immer über den PWM ausgelesen
aber das stellt sich als nicht so zuverlässig dar.
GRUND: PWM Motorspitzen und die allgemeine Genauigkeit lässt durch alle
möglichen Störeinflüsse die Genauigkeit sinken.

Da wir ja schon an anderer Stelle hier im Forum mal über eine I²C Lösung mit PicBasic oder Proton+ geräzelt haben hier nun die Lösung wie es geht.

PS: So ne 405 Seitige Englische Anleitung von Proton+ ist sehr Interessant, mir hats viel gebracht bis jetzt :-)



'************************************************* ***************
'* Name : I2C_Compass.BAS *
'* Author : Sommer xxxx *
'* Notice : Copyright (c) 2005 *
'* : All Rights Reserved *
'* Date : 09.05.2005 *
'* Version : 1.0 *
'* Notes : CMPS03 I2C Test *
'* : *
'************************************************* ***************

'================================================= ==========================================
'---[ PIC CONFIG ]--------------------------------------------------------------------------
'================================================= ==========================================

Device 16F877
XTAL = 4

SCL_PIN = PORTC.3 'Clock PIN
SDA_PIN = PORTC.4 'Data pin


'================================================= ==========================================
'---[ Variablen ]---------------------------------------------------------------------------
'================================================= ==========================================
Dim ARRAY[10] AS BYTE

X var Word 'Schleifenzähler
CMPS1 var Word 'Kompasswert als Byte
CMPS1_L var Word 'Kompasswert als Word
CMPS2 var Word
CMPS2_L var Word

'================================================= ==========================================
MAIN_THREAD: '-----------------------------------------------------------------------------
'================================================= ==========================================

BSTART 'Busstart
BUSOUT $C0 'Ziel ist Adresse 0xC0
BUSOUT 0 'Erst high Byte
BUSOUT 0 'dann low Byte
BRESTART 'Bus neustart
BUSOUT $C1 'mit read/write bit 0xC1

CMPS1 = BUSIN 'lese Register 1 // Wert 0 --> 255

BUSACK 'erneutes ACK

CMPS2 = BUSIN 'lese Register 2,3 // Wert 0 --> 3599

BSTOP 'Busstop


SEROUT PORTC.6,84, [dec4 CMPS1,"...",dec4 CMPS2,10,13] 'Ausgabe der Werte über RS232 (9600Baud)
delayms 500 '500ms Pause damit man auch was sieht :-)
goto MAIN_THREAD 'Endlosschleife]

Also viel Spaß beim testen und Basteln.

Bye euer Ulli

Sommer
09.05.2005, 21:15
PS: die nichtbenutzten Testvariablen kann man weglassen :-)