Warum probierst du es nicht einfach mal aus???
Ich hab auch ein RN-Control und versuche gerade genau denselben Sensor anzusteuern, aber mit Bascom...
Wenn du es geschafft hast, setzt mal bitte den Code online.
Ich werde es andernfalls genau so tun!![]()
Hi ich habe hier ein Programm geschrieben für das RN Control 1.4.
Es soll ständig die Werte des Analogen Port a messen und auf die LED´s ausgeben.
Jetzt ist die Frage ob das so laufen wird.
Später soll dann an den Analog Port A ein Sharp GP2D12 dran .
mit der Vektoren tabelle bin ich mir nicht so sicher ob das passt.
Wäre sehr nett wenn ein Profi hier verbesserungen vornehmen würden ^^
NOLIST
.INCLUDE "m32def.inc"
.LIST
jmp RESET ; Reset Handler
;jmp EXT_INT0 ; IRQ0 Handler
;jmp EXT_INT1 ; IRQ1 Handler
;jmp EXT_INT2 ; IRQ2 Handler
;jmp TIM2_COMP ; Timer2 Compare Handler
;jmp TIM2_OVF ; Timer2 Overflow Handler
;jmp TIM1_CAPT ; Timer1 Capture Handler
;jmp TIM1_COMPA ; Timer1 CompareA Handler
;jmp TIM1_COMPB ; Timer1 CompareB Handler
;jmp TIM1_OVF ; Timer1 Overflow Handler
;jmp TIM0_COMP ; Timer0 Compare Handler
;jmp TIM0_OVF ; Timer0 Overflow Handler
;jmp SPI_STC ; SPI Transfer Complete Handler
;reti USART_RXC ; USART RX Complete Handler
;reti USART_UDRE ; UDR Empty Handler
;jmp USART_TXC ; USART TX Complete Handler
jmp OnADC ; ADC Conversion Complete Handler
;jmp EE_RDY ; EEPROM Ready Handler
;jmp ANA_COMP ; Analog Comparator Handler
;jmp TWI ; Two-wire Serial Interface Handler
;jmp SPM_RDY ; Store Program Memory Ready Handler
RESET:
;---------------------------------------------------------
ldi r16,high(RAMEND)
out SPH,r16 ;init Stackpointer low
ldi r16,low(RAMEND)
out SPL,r16 ;init Stackpointer high
;---------------------------------------------------------
;Kanlauswahl wo gemessen wird
ldi r16,0x00 ;ADC Channel 0
out ADMUX, r16 ;ADC Channel 0
;-----------------------------------------------------------
;Einstellung ADC und Messung
ldi r16, 0b11010111 ; hier werden die obigen informationen übergeben vorteil 32
out ADCSRA , r16
;ADEN|ADSC|ADFR|ADIF|ADIE|ADSP2|ADSP1|ADSP0
;ADEN ADC Enable
;ADSC Start conversion
;ADFR Free Run
;ADIF Interupt Flag
;Interupt Enable
;ADSP 0..2 Vorteiler bei mir = 128 alle drei auf 111
mainloop: WDR
rjmp mainloop
OnADC:
cli ;interrupts sperren
in r26,ADCL ;Low Teil auslesen
in r27,ADCH ;High Teil auslesen
reti
;-------------------------------------
;Von 10Bit auflösung nach 8 Bit auflösung Konvertieren
asr r27 ;schiebe BIT 0 des "High TEILs" ins c FLAG
ror r26 ;schiebe alle bits nach rechts C-Flag in Bit 7
asr r27 ;schiebe BIT 0 des "High TEILs" ins c FLAG
ror r26 ;schiebe alle bits nach rechts C-Flag in Bit 7
ldi r16, 0xFF ;0xFF ins Arbeitsregister r16 laden
out DDRC, r16 ;Inhalt von r16 ins IO-Register DDRC ausgeben
mov r25, r26
out PORTC, r25 ; hier sind acht LED´s dran
sbi ADCSRA,6
sei
reti
Warum probierst du es nicht einfach mal aus???
Ich hab auch ein RN-Control und versuche gerade genau denselben Sensor anzusteuern, aber mit Bascom...
Wenn du es geschafft hast, setzt mal bitte den Code online.
Ich werde es andernfalls genau so tun!![]()
naja das ist nicht schwer den mit Bascom auszulesen @Mc-loyd
gruß
patrick
@ Patti:
Ja, ich glaube dir das auch...
Meinst du dieser Code wird auf dem RN-Control funkitonieren?
$regfile = "m32def.dat"
$crystal = 16000000
Config Portc = Output
Portc = 0
Dim W As Word
Enable Interrupts
Start Adc
Do
W = Getadc(0)
If W > 0 Then Portc.7 = 1 Else Portc.7 = 0
If W > 128 Then Portc.6 = 1 Else Portc.6 = 0
If W > 256 Then Portc.5 = 1 Else Portc.5 = 0
If W > 384 Then Portc.4 = 1 Else Portc.4 = 0
If W > 512 Then Portc.3 = 1 Else Portc.3 = 0
If W > 640 Then Portc.2 = 1 Else Portc.2 = 0
If W > 768 Then Portc.1 = 1 Else Portc.1 = 0
If W > 896 Then Portc.0 = 1 Else Portc.0 = 0
Waitms 10
Loop
End
probiers aus!
gruß
patrick
Hab ich, es funzt immernoch nicht *schäm*
Irgendwie will er nicht.
Ich beschreib´s nochmal ganz genau, vielleicht weiß dann jemand was los ist.
Ich habe den Sensor an PortA ganz rechts aussen reingsteckt und jegliche Programmcodes ausprobiert die ich gefunden habe - aber nichts tut sich!
Ich messe am Ports zwar eine Spannung, diese kann ich aber auch etwas schacher an den anderen AD-Ports messen.
Hoffe echt, es ist ein Software-Problem, weil sonst wird´s sicher teuer![]()
hallo
dein fehler liegt daran das du einfach mal den porta als input deklarieren must.
dann probiers mal so:
Code:$regfile = "m32def.dat" $crystal = 16000000 Config Porta = Input Config Portc = Output Dim a As Word Enable Interrupts Start Adc Do a = Getadc(0) If a > 0 Then Portc.7 = 1 Else Portc.7 = 0 If a > 128 Then Portc.6 = 1 Else Portc.6 = 0 If a > 256 Then Portc.5 = 1 Else Portc.5 = 0 If a > 384 Then Portc.4 = 1 Else Portc.4 = 0 If a > 512 Then Portc.3 = 1 Else Portc.3 = 0 If a > 640 Then Portc.2 = 1 Else Portc.2 = 0 If a > 768 Then Portc.1 = 1 Else Portc.1 = 0 If a > 896 Then Portc.0 = 1 Else Portc.0 = 0 Waitms 10 Loop End
Könnten wir vll die ICQ nummern austauschen dann könnten wir öfter zusammen an ein paar sachen arbeiten.....
Wäre klasse wenn jemand der ein RN Board hat mit mir zusammen arbeiten würde ich habe vor ein paar Mc anwendungen zu realisieren.
greetz Larzarus
Lesezeichen