- Akku Tests und Balkonkraftwerk Speicher         
Seite 13 von 19 ErsteErste ... 31112131415 ... LetzteLetzte
Ergebnis 121 bis 130 von 188

Thema: Asuro: Umbau der IR-Schnittstelle zur Hinderniserkennung

  1. #121
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2008
    Ort
    zu Hause
    Beiträge
    12
    Anzeige

    Powerstation Test
    Zusatz,im C Programm zu finden in der asuro.c!
    Das müsste die Interupt Service Routine in C sein.

    Code:
    SIGNAL (SIG_OVERFLOW2)
    {
      TCNT2 += 0x25;
      count36kHz ++;
      if (!count36kHz)
        timebase ++;
      if (Ovr2IntFunc)
        Ovr2IntFunc();
    }

  2. #122
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen,
    falls es jemanden interessiert, wie der von Arthur S. oben gezeigte Code (das TCNT2) in der LIB zustande gekommen ist, um den 36 kHz Takt mit einem Ratio (an/aus-Verhältnis) von 50% hinzubekommen, kann mal (etwas versteckt) unter der ASURO als Wecker (Ab Punkt 2: beschrieben) eine Beschreibung finden.
    Wer noch ein paar allgemeinere Infos zu Interrups benötigt findet etwas weiter vorher unter der ASURO als Wecker (mittendrin) auch dazu etwas.

    Das hat nichts mit eurem Problem zu tun, könnte aber allgemein lesenswert sein und wurde 2 Post vorher auch von Arthur S. in Kurzform zusammengefasst.

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  3. #123
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2008
    Ort
    zu Hause
    Beiträge
    12
    AHHHHH,Sternthaler!

    Ich dreh durch,hätte ich diesen sehr hilfreichen Thread von dir nur eher entdeckt.
    Aber naja,so hab ichs selber hingefriemelt. Trotzdem Respekt zu diesem Thread,der ist wirklich sehr verständlich.


    Gruß

  4. #124
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hi Arthur S.,

    danke für das Lob. Bekommst du gleich von mir zurück, da das 'selber hingefriemelt' nämlich eine mordsmäßige Wühlerei in der Doku und den Registern ist. Geschweige denn, wenn man so etwas selber hinbekommen würde. Aber die Leistung bleibt auf immer und ewig nun bei waste.

    Um nun zu zeigen, was du so drauf hast , wäre ich sehr stark an deinem Assembler-Code interessiert.
    Bis jetzt war ich selber immer zu faul mal ein Grundgerüst anzulegen und auf dem mega8 mit Assembler zu beginnen. (OK, Grundgerüst ist ja im wiki.)
    Dieses IR-Hindernis-Ding ja auch schon in einigen anderen Thread’s eingezogen, aber bis jetzt immer nur in C.
    Bestimmt hast du ja Abstände im Timerinterrupt schon besucht. Und wenn nicht, wäre es mal eine Anregung, falls du es nicht schon in Assembler hast, das IR-Geraffel komplett in Assembler im Interrupt zu 'versenken'. Und alle werden dich ohne Ende loben .

    Egal wie, weiterhin viel Erfolg und Spaß
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  5. #125
    Neuer Benutzer Öfters hier
    Registriert seit
    06.04.2008
    Ort
    zu Hause
    Beiträge
    12
    So hier wie von Sternthaler gewünscht erstmal der grundlegende Code für IR-Kollision in Assembler. Die _Inits am Start und die Inc-Dateien ganz oben sind selbst geschriebene Makros um nicht jedes mal die LED's ,Stack etc zu initialisieren. Programm funktioniert wie folgt: Sobald IR anschlägt gehen die Back LED's an. Sendeleistung müsste hier im Programm eingestellt werden,hatte noch keine Zeit mich weiter damit zu befassen (es ist Prüfungszeit).

    Der Code:
    Code:
    .include "m8def.inc"		;Deklaration für Atmega8
    
    .include "Stack.inc"		;Inc-Datei für Stack
    .include "UART.inc"	       ;Inc-Datei für UART
    .include "Motor.inc"		;Inc-Datei für die Motoren
    .include "BackLED.inc"	     ;Inc-Datei für Back LED's
    .def temp0=R16				;Benennung der
    .def temp1=R17				;Arbeitsregister
    .def temp2=R18
    .def temp3=R19
    .def temp4=R20
    .def temp5=R21
    .def temp6=R22
    .def temp7=R23
    .def temp8=R24
    .def temp9=R25
    
    
    
    .CSEG						;Program-Flash
    rjmp Start				;Sprung
    reti ;rjmp EXT_INT0 ; IRQ0 Handler
    reti ;rjmp EXT_INT1 ; IRQ1 Handler
    reti ;rjmp TIM2_COMP ; Timer2 Compare Handler
    rjmp TIM2_OVF ; Timer2 Overflow Handler
    reti ;rjmp TIM1_CAPT ; Timer1 Capture Handler
    reti ;rjmp TIM1_COMPA ; Timer1 CompareA Handler
    reti ;rjmp TIM1_COMPB ; Timer1 CompareB Handler
    reti ;rjmp TIM1_OVF ; Timer1 Overflow Handler
    reti ;rjmp TIM0_OVF ; Timer0 Overflow Handler
    reti ;rjmp SPI_STC ; SPI Transfer Complete Handler
    reti ;rjmp USART_RXC ; USART RX Complete Handler
    reti ;rjmp USART_UDRE ; UDR Empty Handler
    reti ;rjmp USART_TXC ; USART TX Complete Handler
    reti ;rjmp ADC ; ADC Conversion Complete Handler
    reti ;rjmp EE_RDY ; EEPROM Ready Handler
    reti ;rjmp ANA_COMP ; Analog Comparator Handler
    reti ;rjmp TWSI ; Two-wire Serial Interface
    
    
    
    
    
    Start:
    	
    	Stack_Init temp0			;Initialisierung als Makro
    	Uart_Init temp0				;Initialisierung als Makro
    	Pwm_Init temp0				;Initialisierung als Makro
    	Motor_Init temp0			;Initialisierung als Makro
    	LED_Init temp0				;Initialisierung als Makro
    ;--------------------------------------------------------------------------------
    	in temp0,ddrd				;PD1 als Ausgang 
    	ori temp0,0b00000010		;nach dem Read-Modify-Write
    	out ddrd,temp0				;Prinzip
    	cbi portd,1					;PD1 auf LOW
    
    ;-------- seriell interface programmed in boot routine and already running -------
    	;  prepare 36kHz for IR - Communication using 8-bit timer 2
    	ldi temp0,(1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21)| (1 << CS20)
    	out TCCR2, temp0			;Timer2 Einstellungen
    
    	ldi temp0,0xF7				;einzustellender Wert für die PWM
    	out OCR2,temp0				;in das Output Compare Register
    
    	in temp0, TIMSK				;Timer2 
    	ori temp0, (1<<TOIE2); 		;Overlow Interupt
    	out TIMSK, temp0 			;enable
    
    	sei							;global Interupts enable
    
    loop:	SWITCH_LEFT_BACKLED_OFF
    		SWITCH_RIGHT_BACKLED_OFF
    		sbic pind,0				;Abfrage des Empfängers auf Null,da dieser auf LOW 
    		rjmp loop				;gezogen wird bei Empfang
    		SWITCH_LEFT_BACKLED_ON
    		SWITCH_RIGHT_BACKLED_ON
    		rjmp loop
    
    
    		
    TIM2_OVF:						;Interupt Service Routine für den Overflow des Timers2
    		
    	push temp0
    	in temp0,sreg
    	push temp0
    	in temp0,tcnt2
    	subi temp0,-0x25
    	out tcnt2,temp0
    	pop temp0
    	out sreg,temp0
    	pop temp0
    reti
    Für Fragen stehe ich jederzeit zur Verfügung!

  6. #126
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo Arthur S.

    so als Muster sieht die Welt für einen C-Progger und meistens nur ASM-Leser doch schon viel übersichtlicher aus.
    Nett finde ich deine Addition von 0x25 mit dem SUBI temp0, -[/b]0x25. Das hätte ich, wenn überhaupt, nur in den Outputs vom C-Compiler entnommen. Ansonsten hätte ich das ADD, mit einem weiteren LDI davor benutzt.

    Mir fehlen hier natürlich die *.inc-Dateien als AVR-ASM-Starter ganz enorm. Ich gehe mal davon aus, dass auch die SWITCH_[LEF|RIGHT]_BACKLED_[ON|OFF] als Macro dort versteckt sind. Und was fehlt mir sonst noch?

    Die eigentliche Arbeitsschleife könnte doch folgendermaßen auch funktionieren?
    Code:
    loop:   SWITCH_LEFT_BACKLED_OFF
            SWITCH_RIGHT_BACKLED_OFF
    
    loop_0: sbic pind, 0    ; Abfrage des Empfängers auf Null, da dieser
            rjmp loop2      ; auf LOW gezogen wird bei Empfang.
    
            SWITCH_LEFT_BACKLED_ON
            SWITCH_RIGHT_BACKLED_ON
    
    loop_1: sbis pind, 0    ; Warten, bis das Hindernis wieder weg ist.
            rjmp loop_1
    
            rjmp loop
    Wenn ich das so weit richtig eingebaut haben sollte, würde ich mir davon versprechen, dass die LED's nicht permanent an- und ausgeschaltet werden bei einem Hindernis, und so heller leuchten müssten. Kann das so gehen?

    Und hier natürlich auch ein 'thanks a lot' für deinen Code.
    Viel Erfolg bei den Prüfungen.
    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  7. #127
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    45
    Beiträge
    10
    Hallo alle zusammen,

    ich bin neu hir.

    29 Jahe Alt Elektrotechniker.

    habe seid 3 Tagen meinen Asuro.
    habe alles schön zusammen gabaut, gelötet ( auch die finger verbrannt) bitte nicht lachen .

    Nach ein paar anlaufschwierigkeiten mit der übertragung geht nun alles.

    Ausser ( nu kommts )

    wenn ich das selftest übertrage oder mit der Easy asuro geht alles, alles was ich will.

    Nur wenn ich sebst eins schreibe in c mit der mitgelieferten software, oder sogar die von hier geposteten mir stibitze.

    Meine frage an euch:
    Muss ich mehrere make und clean files erstellen.

    Wie lege ich ein eigenes projet an? Ich nehme immer die test.c lösche da alles und schreibe wie in der anleitung beschrieben, nur dann geht nichts.
    oder kopiere was fertig geschriebenes rein, dann werden immer beim Selftest 84 pages übertragen und und im first try 24 wobei da nur die Status LED grün bleibt.
    Oder wie geht ihr vor.?



    Wie gesatgt und Bei easy asuro hab ich schon ein ausweichen mit lansamen rückwerts faht drehung und wieder schneller Vorwertsfahrt hinbekommen. weil 1 kann die easy asuro nicht ; die lienien vervolgung und gerade das ist was ich nutzen möchte ( schwartze Fugen in der Wohnung) naja oder sehr dunkelgrau.


    Für eine kleine stütze währ ich escht dankbar,

    LG

    Ps: wehr rechtschreibfehler findet kann sie behalten

  8. #128
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo little.r2d2,
    ich bin neu hir.
    29 Jahe Alt Elektrotechniker.
    Spontan ist mir jetzt sofort ein Sketch der Gruppe "Badesalz" eingefallen, kennst Du die?

    Aber Scherz bei Seite: Am besten ist, wenn Du gleich AVR-Studio installierst und damit Deine ASURO-Projekte machst. Das Programm gibt's kostenlos von Atmel und man kann damit auch Debuggen.

    Gruß,
    robo

  9. #129
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    45
    Beiträge
    10
    hehe, Hi robo

    ja kenne ich

    Ich habe das originale Winavr installiert was bei dem lieverumfang dabei war

    habe gestern ganzen tach drann gesessen und mir die finger blutig getippt.

    Naja ich install mal das neue, aber hab kein ahnung was ich falsch mach.

  10. #130
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    45
    Beiträge
    10
    Soo habe nun AVR studio 4 installier

    Nun weiss ich nicht ob oder wo ich die make files brauche oder finde.

    Da bei der Asuro software ja auch mehrere test Programme dabei sind, was ich gleich poste, würde ich die gern testen weil sie ja auch so heissen

    Code:
    #include "asuro.h"
    
    #define SPEED  0x8F
    
    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;
    
    void LineLeft (void)
    {
    	speedLeft  += 1;
    	if (speedLeft > 0xFE) speedLeft = 0xFF;
    }
    
    void LineRight (void)
    {
    	speedRight  += 1;
    	if (speedRight > 0xFE) speedRight = 0xFF;
    }
    
    void LineDemo(void)
    {
    int i;
    unsigned char j;
    
    	Init();
    
    	FrontLED(ON);
    	for (j = 0; j < 0xFF; j++) LineData(lineData);
    	LineData(lineData);
    	ADOffset = lineData[0] - lineData[1];
    	speedLeft = speedRight = SPEED;
    	for(;;) {
    		LineData(lineData);
    		i = (lineData[0] - lineData[1]) - ADOffset;
    		if ( i > 4) {
    			StatusLED(GREEN);
    			LineLeft();
    		}
    		else if ( i < -4) {
    			StatusLED(RED);
    			LineRight();
    		}
    		else {
    			StatusLED(OFF);
    			speedLeft = speedRight = SPEED;
    		}
    		MotorSpeed(speedLeft,speedRight);
    	} 
    }

    __________________________________________________ ____________
    nur wie bekomme ich jetzt vom AVR erzeuten programme in eine hex datei oder wie übermittle ich das ganze? Diesen progamm konnte ich nicht mal mit der originalen Winavr nutzen ....

    LG[/code]

Seite 13 von 19 ErsteErste ... 31112131415 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad