-         

Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 56

Thema: Das erste Mal ein richtiges Programm sehen

  1. #1

    Das erste Mal ein richtiges Programm sehen

    Anzeige

    Hi,

    Ich bin neu und verstehe so gut wie garnichts von programmieren, aber ich lerne es gerade. Da ist mir die Idee gekommen einmal nachzufragen ob einer von euch so nett sein könnte und mir mal eines seiner Programme anschauen lässt, damit ich eigene Anregungen finde. (Ihr könnt auch Stellen, die ihr nicht zeigen wollt, löschen)

    Ich möchte Anregungen finden um einmal selber was zu programmieren und ihn mal wirklich fahren zu lassen. (Ausser geradeaus und im Bogen)
    Gibt es eigentlich, so eine Art Befehlsliste, die ich mir mal ansehen könnte? Und wie kann ich ihn nur eine gewissen Distanz fahren lassen?

    Danke schon im Vorraus
    Lg ActiveRobo
    Visit this homepages: www.ikakrieger.siteboard.eu or: www.castleserver.net

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Zum Anschauen von ausprobierten Assemblerprogrammen (ASM) besonders im Codeschnipsel und Hilfsmittel: http://www.rn-wissen.de/index.php/PIC_Assembler .
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Das erklärt vieles Trotzdem würde ich gerne mal ein Programm sehen das schon fertig ist. (Nicht um es zu kopieren, sondern wegen Anregungen ) Und mit welchen Programmen programmiert ihr eigentlich? Auch mit "Programmers Notepad"? Eine Datei die ich mir in Programmers Notepad anschauen kann oder auch mit einen anderen, aber halt das ich Eindrücke bekomme, wie das Ganze aussieht. Versteht ihr?
    Lg ActiveRobo
    Visit this homepages: www.ikakrieger.siteboard.eu or: www.castleserver.net

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ich programmiere mit AVR Studio, Bascom und PSoC Designer.
    Das Programm an sich ist meistens als einfache Textdatei gespeichert. So kannst du es auch mit anderen Programmen öffnen (z.B. PN).
    Als halb fertiges Programm hab ich das hier (Bascom):
    Code:
    'Mikrocontroller
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    'Stacks
    $hwstack = 200
    $swstack = 200
    $framesize = 400
    
    'UART konfigurieren
    $baud = 19200
    
    'SPI konfigurieren
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Noss = 1 , Clockrate = 16
    Spiinit
    
    'Unterprogramme
    Declare Sub Read_register(byval Adress As Byte )
    Declare Sub Write_register(byval Adress As Byte , Byval Daten As Byte)
    Declare Sub Bitmodify(byval Reg_add As Byte , Byval Reg_mask As Byte , Byval Reg_val As Byte)
    Declare Sub Write_tx
    Declare Sub Register
    Declare Sub Mcp2515_init
    Declare Sub Send_can
    
    'Befehle
    Const Spi_read = &H03
    Const Spi_write = &H02
    Const Spi_reset = &HC0
    Const Spi_rts0 = &H81
    Const Spi_bitmodify = &H05
    
    'Registeradressen
    Const Cnf1 = &H2A
    Const Cnf2 = &H29
    Const Cnf3 = &H28
    Const Canctrl = &H0F
    Const Caninte = &H2B
    Const Txb0ctrl = &H30                                       'Transmit Buffer 0 Control Register
    Const Txb0sidh = &H31                                       'Transmit Buffer 0 Std Identifier High
    Const Txb0sidl = &H32                                       'Transmit Buffer 0 Std Identifier Low
    Const Txb0eid8 = &H33                                       'Transmit Buffer 0 Ext Identifier High
    Const Txb0eid0 = &H34                                       'Transmit Buffer 0 Ext Identifier Low
    Const Txb0dlc = &H35                                        'Transmit Buffer 0 Data Length Code
    Const Txb0d0 = &H36                                         'Transmit Buffer 0 Data Byte 0
    Const Txb0d1 = &H37                                         'Transmit Buffer 0 Data Byte 1
    Const Txb0d2 = &H38                                         'Transmit Buffer 0 Data Byte 2
    Const Txb0d3 = &H39                                         'Transmit Buffer 0 Data Byte 3
    Const Txb0d4 = &H3A                                         'Transmit Buffer 0 Data Byte 4
    Const Txb0d5 = &H3B                                         'Transmit Buffer 0 Data Byte 5
    Const Txb0d6 = &H3C                                         'Transmit Buffer 0 Data Byte 6
    Const Txb0d7 = &H3D                                         'Transmit Buffer 0 Data Byte 7
    Const Rxm0sidh = &H20                                       'Receive Buffer 0 Std Identifier High
    Const Rxm0sidl = &H21                                       'Receive Buffer 0 Std Identifier Low
    Const Rxm0eid8 = &H22                                       'Receive Buffer 0 Ext Identifier High
    Const Rxm0eid0 = &H23                                       'Receive Buffer 0 Ext Identifier low
    Const Rxm1sidh = &BH24                                      'Receive Buffer 1 Std Identifier High
    Const Rxm1sidl = &H25                                       'Receive Buffer 1 Std Identifier Low
    Const Rxm1eid8 = &H26                                       'Receive Buffer 1 Ext Identifier High
    Const Rxm1eid0 = &H27                                       'Receive Buffer 1 Ext Identifier low
    Const Rxb0ctrl = &H60
    Const Rxb1ctrl = &H70
    
    'I/O Einstellungen
    Config Portb.4 = Output
    
    'Namen vergeben
    Cs Alias Portb.4
    
    'Variablen
    Dim Canin As Byte
    
    'Interrupts aktivieren
    Enable Interrupts
    
    'Chipselect auf High setzen
    Set Cs
    Wait 1
    
    'MCP2515 initialisieren
    Call Mcp2515_init
    
    'Hauptprogramm
    Do
    
    Call Write_tx                                               'Zu übertragende Daten setzen
    Call Send_can                                               'Senden auslösen
    Call Register
                                                                'Register auslesen
    Waitms 100
    
    Loop
    End
    
    
    
    'Unterprogramme
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Read_register(byval Adress As Byte )
    
    Reset Cs                                                    'Chipselect auf Low ziehen
    Spdr = Spi_read                                             'Inhalt von "SPI_Read" im Datenregister speichern                                            'Read Instruction (0000 0011) senden
    Spiout Spdr , 1
    Spiout Adress , 1
    Spiin Canin , 1                                             'Registerinhalt einlesen
    Set Cs                                                      'Chipselect auf High ziehen
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Write_register(byval Adress As Byte , Byval Daten As Byte)
    
    Reset Cs                                                    'Chipselect auf Low ziehen
    Spdr = Spi_write                                            'Inhalt von "SPI-Write" ins SPI_Data_Register schieben
    Do                                                          'Schleife bis SPI Interrupt Flag gesetzt wurde, also bis
    Loop Until Spsr.spif = 1                                    'die Übertragung abgeschlossen ist
    
    Spdr = Adress
    Do
    Loop Until Spsr.spif = 1
    
    Spdr = Daten
    Do
    Loop Until Spsr.spif = 1
    Set Cs                                                      'Chipselect auf High ziehen
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Mcp2515_init
    
    Reset Cs
    
    'MCP2515 reseten
    Spdr = Spi_reset
    Do
    Loop Until Spsr.spif = 1
    Waitms 10
    Set Cs                                                      '10ms warten, da sonst das Auslesen von CNF1
                                                              'nicht richtig erfolgen kann
    'Control Register beschreiben
    Write_register Canctrl , &H8F                               'Device in Configuration Mode versetzen, OSC-Pin
                                                                 'aktivieren, Fclk = F / 8 einstellen
    'Interrupts einstellen
    Write_register Caninte , &H04                               'Transmit Buffer 0 Interrupt aktivieren
    
    'TX-Konfiguration
    Bitmodify Txb0ctrl , &H03 , &H03
    
    'Bittiming einstellen
    Write_register Cnf1 , &H03                                  'Baudrate einstellen
    Write_register Cnf2 , &HA0                                  'Phasensegmenteinstellungen
    Write_register Cnf3 , &H02
    
    'Rx Buffer einstellen
    Write_register Rxb0ctrl , &H60
    Write_register Rxb1ctrl , &H60
    Write_register Rxm0sidh , 0                                 ' Empfängeradressen auf 0, Filter aus
    Write_register Rxm0sidl , 0
    Write_register Rxm0eid8 , 0
    Write_register Rxm0eid0 , 0
    Write_register Rxm1sidh , 0
    Write_register Rxm1sidl , 0
    Write_register Rxm1eid8 , 0
    Write_register Rxm1eid0 , 0
    
    'CAN-Controller in den "Normal Mode" versetzen
    Bitmodify Canctrl , &HE0 , &H0
    
    'Priorität einstellen
    Write_register Txb0ctrl , &H03                              'Highest Message Priority für Transmit Buffer 0
    
    'Message Identifier einstellen
    Write_register Txb0sidh , &H00
    Write_register Txb0sidl , &H03
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Bitmodify(reg_add , Reg_mask , Reg_val)
    
    Reset Cs
    Spdr = Spi_bitmodify
    Do
    Loop Until Spsr.spif = 1
    Waitms 2
    Spdr = Reg_add
    Do
    Loop Until Spsr.spif = 1
    Spdr = Reg_mask
    Do
    Loop Until Spsr.spif = 1
    Spdr = Reg_val
    Do
    Loop Until Spsr.spif = 1
    Set Cs
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Send_can
    
    Reset Cs
    Spdr = Spi_rts0                                             'Übertragung auslösen
    Do
    Loop Until Spsr.spif = 1
    Set Cs
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Register
    
    'Terminalausgabe
    Print "Registereinstellungen:"
    Read_register Cnf1
    Print "Registerinhalt CNF1: " ; Canin
    Read_register Cnf2
    Print "Registerinhalt CNF2: " ; Canin
    Read_register Cnf3
    Print "Registerinhalt CNF3: " ; Canin
    Read_register Canctrl
    Print "Registerinhalt CAN Control: " ; Canin
    Read_register Txb0ctrl
    Print "Registerinhalt TXB0 Control: " ; Canin
    Read_register Txb0sidl
    Print "Registerinhalt TXB0 Identifier Low: " ; Canin
    Read_register Txb0sidh
    Print "Registerinhalt TXB0 Identifier High: " ; Canin
    Read_register Txb0dlc
    Print "Registerinhalt TXB0 Data Lenght: " ; Canin
    Read_register Caninte
    Print "Registerinhalt CAN Interrupt Enable: " ; Canin
    Print "----------------------------------------------------------"
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    
    Sub Write_tx
    
    Write_register Txb0sidh , &H55                              'Empfängeradresse setzen
    Write_register Txb0sidl , &H55                              'Empfängeradresse setzen
    Write_register Txb0dlc , &H04                               'Paketlänge festlegen
    Write_register Txb0d0 , &HFF                                'Zu übertragende Daten setzen
    Write_register Txb0d1 , &HFF                                'Zu übertragende Daten setzen
    
    End Sub
    
    '-------------------------------------------------------------------------------------------------------------------
    Und hier nochmal eins in C für Cypress Chips:
    Code:
    //----------------------------------------------------------------------------
    // C main line
    //----------------------------------------------------------------------------
    
    #include <m8c.h>        // Part specific Constants and Macros
    #include "PSoCAPI.h"    // PSoC API definitions for all User Modules
    
    char Button = 0x00;
    
    void I2C_Init(void);
    
    void main(void)
    {
      M8C_EnableGInt;
      CSD_Start(); 
      CSD_InitializeBaselines();
      CSD_SetDefaultFingerThresholds(); 
      
      EzI2Cs_SetRamBuffer(1, 1, (char *)&Button);
    
      I2C_Init();
    
      while (1)
         {
        CSD_ScanAllSensors();
        CSD_UpdateAllBaselines();
            
            // Sensor 1
            if(CSD_bIsSensorActive(0))
            {
                PRT2DR |= 0x01;
                Button = 0x01;
            }
            else
            {    
                PRT2DR &= ~0x01;
            }
            
            // Sensor 2
            if(CSD_bIsSensorActive(1))
            {
                PRT2DR |= 0x02;
                Button = 0x02;                                
            }
            else
            {
                PRT2DR &= ~0x02;
            }
            
            // Sensor 3
            if(CSD_bIsSensorActive(2))
            {
                PRT2DR |= 0x04;
                Button = 0x03;                            
            }
            else
            {
                PRT2DR &= ~0x04;
            }
            
            // Sensor 4
            if(CSD_bIsSensorActive(3))
            {
                PRT2DR |= 0x08;
                Button = 0x04;                                
            }
            else
            {
                PRT2DR &= ~0x08;
            }
        }
    }
    
    void I2C_Init(void)
    {
        EzI2Cs_Start();                                                                    // I²C Modul starten
        EzI2Cs_EnableInt();                                                                // I²C Interrupts aktivieren
    }
    Eine Befehlsliste für z.B. den Asuro hast du hier:

    http://www.roboternetz.de/community/...-RP6-und-Asuro

    Für Bascom hast du eine hier:

    http://avrhelp.mcselec.com/index.html

    und für C hilft dir Google
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Danke und die Bücher: Mehr Spaß mit Suro 1+2 helfen mir bei der weiteren programmierung. Oder?
    Lg ActiveRobo
    Visit this homepages: www.ikakrieger.siteboard.eu or: www.castleserver.net

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Ja sollten sie eigentlich tun
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #7
    Zitat Zitat von Kampi Beitrag anzeigen

    Und hier nochmal eins in C für Cypress Chips:
    Code:
    //----------------------------------------------------------------------------
    // C main line
    //----------------------------------------------------------------------------
    
    #include <m8c.h>        // Part specific Constants and Macros
    #include "PSoCAPI.h"    // PSoC API definitions for all User Modules
    
    char Button = 0x00;
    
    void I2C_Init(void);
    
    void main(void)
    {
      M8C_EnableGInt;
      CSD_Start(); 
      CSD_InitializeBaselines();
      CSD_SetDefaultFingerThresholds(); 
      
      EzI2Cs_SetRamBuffer(1, 1, (char *)&Button);
    
      I2C_Init();
    
      while (1)
         {
        CSD_ScanAllSensors();
        CSD_UpdateAllBaselines();
            
            // Sensor 1
            if(CSD_bIsSensorActive(0))
            {
                PRT2DR |= 0x01;
                Button = 0x01;
            }
            else
            {    
                PRT2DR &= ~0x01;
            }
            
            // Sensor 2
            if(CSD_bIsSensorActive(1))
            {
                PRT2DR |= 0x02;
                Button = 0x02;                                
            }
            else
            {
                PRT2DR &= ~0x02;
            }
            
            // Sensor 3
            if(CSD_bIsSensorActive(2))
            {
                PRT2DR |= 0x04;
                Button = 0x03;                            
            }
            else
            {
                PRT2DR &= ~0x04;
            }
            
            // Sensor 4
            if(CSD_bIsSensorActive(3))
            {
                PRT2DR |= 0x08;
                Button = 0x04;                                
            }
            else
            {
                PRT2DR &= ~0x08;
            }
        }
    }
    
    void I2C_Init(void)
    {
        EzI2Cs_Start();                                                                    // I²C Modul starten
        EzI2Cs_EnableInt();                                                                // I²C Interrupts aktivieren
    }
    Und wofür war das gedacht? Was hast du da geschrieben?
    Lg ActiveRobo
    Visit this homepages: www.ikakrieger.siteboard.eu or: www.castleserver.net

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Als vielleicht kleine Anregung ein Querverweis zu einer aktuellen Diskussion:
    http://www.roboternetz.de/community/...d-ein-AtTiny13
    Grüße
    Thomas

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Das Programm ist für diese Platine:



    Das Programm fragt die 4 Cap-Sense Taster ab (die 8-eckigen Felder mit den Zahlen 1-4) und schaltet dann ne LED an und speichert eine Variable in nem RAM-Buffer, da der Chip nebenbei ein I²C Slave ist.
    Nichts wildes eigentlich
    Wollte nur mal 4 Cap-Sense Taster für andere Projekte verwenden.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von ActiveRobo Beitrag anzeigen
    ... Anregungen finden um ... ihn mal wirklich fahren zu lassen. (Ausser geradeaus und im Bogen) ...
    Wenn Du uns verrätst wer "er" ist könnte Dir vermutlich mal jemand ein Stückchen Code für Deinen Roboter senden. Ich vermute ja, dass Du irgendeinen Bausatz zusammengestellt hast (steht ja weiter unten "... Suro ..." -also vermutlich ein asuro). Ausserdem solltest Du schreiben welche Programmiersprache Du möchtest und was für einen Controller (wenn überhaupt) Du verwendest. Die Befehlsliste in Assembler steht im Datenblatt der meisten Controller, die Befehlsliste für C in einem C-Lehrbuch. Und wenn es wirklich um den asuro gehen sollte, dann empfehle ich Dir die BAU- UND BEDIENUNGSANLEITUNG (klick hier) von dem Teilchen. Ab Seite 56 steht da einiges zu asuros Programmiersprache - die heißt C. Die BAU- UND BEDIENUNGSANLEITUNG ist übrigens dazu gemacht, dass sie VOR der Montage gelesen wird.
    Geändert von oberallgeier (12.03.2012 um 19:59 Uhr)
    Ciao sagt der JoeamBerg

Seite 1 von 6 123 ... LetzteLetzte

Ähnliche Themen

  1. Richtiges Einstiegsmodell?
    Von RootDev im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 27.10.2009, 20:34
  2. Richtiges einsetzen eines Festspannungsreglers.
    Von pooloo im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 05.10.2009, 23:18
  3. entwickelte Platinen: Wie sehen die aus?
    Von martini2 im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 5
    Letzter Beitrag: 30.06.2007, 10:19
  4. Richtiges Drehen einer Flasche/Dose zur Aufnahme
    Von ähM_Key im Forum Mechanik
    Antworten: 2
    Letzter Beitrag: 06.10.2006, 16:43
  5. Richtiges Schieberegister
    Von 1hdsquad im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 19.05.2006, 18:11

Berechtigungen

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