- Labornetzteil AliExpress         
Ergebnis 1 bis 9 von 9

Thema: Absoluter Anfänger

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380

    Absoluter Anfänger

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    ich bin gerade dabei und möchte mir einen kleinen roboter bauen.
    zu anfang möchte ich eben nur die grundaufgaben erfüllt haben er sollte nur objekten ausweichen.

    aufbau hab ich mir so vorgestellt.

    es sind 2 motoren vorhanden rechts und links damit er auf der stelle drehn kann.
    also es sollen immer beide motoren laufen wenn er nun an ein hinderniss kommt dass rechts ist soll nur noch der rechte motor drehn und anders rumm.

    sprich das kann man gut mit leds üben hab ich mir überlegt und da auf dem AVR board ja auch taster dabei sind gehts ja ziemlich gut.

    so bin jetzt mal so weit gekommen dass wenigstens mal die leds sprich 2 leuchten hierzu habe ich folgendes eingegeben:

    ldi r16, 0xFF
    out DDRB, r16
    ldi r16, 0b00000011
    out PORTB, r16


    jetzt meine frage wie bekomme ich dass kombiniert dass wenn ich nun einen taster drücke dass eine led ausgeht?

    also wenn ich jetzt zb den rechten drücke dass die linke led ausgeht oder eben andersrum.

    Dank euch schon mal recht herzlich

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    weiß keiner rat?

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.03.2006
    Beiträge
    138
    HI,
    Google doch mal nach Assembler bsp's !! Oder bei elektronik kompendium de oder so gabs mal ein assembler tutorial irgend so was habe ich mal gehört.
    naja mit assem.. kenne ich mich nich so aus nim doch bascom.
    mfg

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    jo mittlerweile hab ich auch gemerkt dass es mit Bascom etwas einfacher geht. nur erkennt des mein controller net hab nen mega8 aber kommt dauernd could not identify chip is with id....

    is doch schrott sitz schon ewig jett davor und immer des gleiche.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.03.2006
    Beiträge
    138
    hast den chip init... :
    $regfile = "m8def.dat"

    schick doch mal den code.
    mfg

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    wie jetzt hab des so eingegeben:

    $regfile = "m8def.dat"
    $crystal = 1000000
    Ddrd = &B0110000
    'PORTD = &B0000100

    Do
    If Pind.2 = 0 Then
    Portd.4 = 1
    Else
    Portd.4 = 0
    End If
    Loop
    End

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.06.2006
    Beiträge
    9
    ;in Assembler bzw. im AVR-Studio

    .include "m8def.inc" ;damit bindest du die Tabelle ein, ist zu finden unter C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes

    ldi r16, 0xFF
    out DDRB, r16 ;Port B als Ausgang
    ldi r16, 0b00000011
    out PORTB, r16 ; sieht ganz gut aus

    ;nur noch über zwei weitere Pins deine Sensoren einlesen (Schalter) und je nach Zustand dein Port-Ausgang (PortB) steuern.
    ;mit sbrs oder sbrc kannst du vergleichen, der Befehl der danach kommt wird entweder bearbeitet oder übersprungen -> je nach Bit-Kombination
    ;mit sbi oder cbi kannst du einzelne Bits setzten oder löschen, in deinem Fall LED an oder aus

    so ungefär sollte es funktionieren:

    ;-----------------------------------------------------------------------------------
    .include "m8def.inc"

    .def temp = r16
    .def sensor = r17

    ;Stack-Pointer an die letzte SRAM Addresse für den Befehl "rcall"
    ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse
    out SPL, temp
    ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
    out SPH, temp


    ;##############################################
    main: ;Prog-Anfang
    rcall port_init ;unterroutine


    ;jetzt nur noch den Inhalt im "sensor" register r17 vergleichen
    sbrc sensor, 0 ;überspringe wenn Bit 0 nicht gesetzt ist
    rcall MotorL_aus

    sbrc sensor, 1 ;überspringe wenn Bit 1 nicht gesetzt ist
    rcall MotorR_aus

    ...
    ...
    ...

    rjmp main ;Endlosschleife -> sprung auf main
    ;##############################################



    port_init:
    ldi temp, 0xFF
    out DDRB, temp ;Port B als Ausgang
    ldi temp, 0b00000011
    out PORTB, temp ; sieht ganz gut aus


    ldi temp, 0x00
    out DDRD, temp ;Port D als Eingang
    ldi temp, 0xFF ; evtl. interne pull up´s aktivieren
    out PORTD, temp
    in sensor, PIND ;sensor = r17
    ret



    MotorL_aus:
    sbi PORTB, PB0 ;setzte Bit 0 von PortB
    ret

    MotorR_aus:
    sbi PORTB, PB1 ;setzte Bit 1 von PortB
    ret

    MotorL_ein:
    cbi PORTB, PB0 ;setzte Bit 0 von PortB
    ret

    MotorR_ein:
    cbi PORTB, PB1 ;setzte Bit 1 von PortB
    ret



    ; Infos gibt es unter... http://www.mikrocontroller.net/artic..._IO-Grundlagen

    ..und im Datenblatt auf Seite 289

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    jetzt bin ich verwirrt bin doch jetzt an Bascom drann und nimmer an assambler. und habe immernoch dass problem mit could not...

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    21.06.2006
    Beiträge
    9
    Stimmt schon,
    aber du bist hier sozusagen im "assemblerforum"

    keine Panik, infos gibt es genügend...
    https://www.roboternetz.de/wissen/index.php/Bascom

    Stelle doch einfach mal die Frage den Bascom-Jungs ))

Berechtigungen

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

Solar Speicher und Akkus Tests