- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: ATMega32 über RS232 Programmieren

  1. #1

    ATMega32 über RS232 Programmieren

    Anzeige

    Praxistest und DIY Projekte
    Ich programmiere für ein Schulprojekt einen Controller Board mit ATMega32 (von Robotikhardware). Ich würde dies gerne über die RS232 schnittstelle machen aber ich bekomme ständig das Problem das ich nicht über das "Sending Init Byte" Hinauskomme (MSC Bootlader).
    Könnte mir jemand helfen was ich Einstellen muss benutze Bascom-AVR demo.

    Sorry wenn der Text nicht so gut Deutsch ist und wenn die frage schon ziemlich oft gestellt wurde ich surf schon den ganzen Tag und verstehe es nicht.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    aaalso, Du versuchst über einen Bootloader zu flashen. Der Bootloader ist ein kleines Programm, das in einem bestimmten Bereich des Programmspeichers Deines Bausteins sein muss. Von Haus aus kommen die AVRs ohne dieses Progrämmchen geliefert, leider. Das bedeutet, dass dieses Progrämmchen in der Regel erst auf den Controller per ISP geflasht werden muss.
    Ist der Bootloader dann drinnen, oder in Deinem Fall u.U. schon drinnen, dann macht er normalerweise genau das was der Name sagt, er lädt beim Booten des Bausteins, sprich wenn der Controller resettet geht er erst in den Bootloader und lauscht ne Weile ob per serieller Schnittstelle ein passendes Signal kommt das er in den Flashmodus geht. Das ist die Geschichte mit dem "Init Byte". Sprich, Du musst praktisch Dein Flashen starten, damit der Init gesendet wird und dann den Controller resetten, damit er in den Loader geht, so dieser schon da ist. Isser nicht da passiert einfach garnix.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    *hust* ich habe keine ahnung wie ich das mache (neuling auf dem gebiet)

    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32

    $crystal = 16000000 'Quarzfrequenz
    $baud = 38400


    'Funktionen und Unterprogramme
    Declare Sub Motorzu()
    Declare Sub Motorauf()
    Declare Function Tastenabfrage() As Byte

    'Motorenkonfiguration
    Config Pinc.6 = Output
    Config Pinc.7 = Output
    Config Pind.4 = Output

    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pind.5 = Output

    Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage

    Config Pina.7 = Input 'Für Tastenabfrage
    Porta.7 = 1

    Dim Taste As Byte
    Dim I As Integer



    'Hauptprogramm
    Do
    Taste = Tastenabfrage()
    If Taste <> 0 Then

    Select Case Taste
    Case 1
    Wait 300
    Sound Portd.7 , 150 , 600
    Call Motorzu
    Waitms 2000
    Sound Portd.7 , 600 , 600

    End Select
    End If

    Waitms 100
    Loop

    End


    Function Tastenabfrage() As Byte
    Local Ws As Word

    Tastenabfrage = 0
    Start Adc
    Ws = Getadc(7)
    ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
    If Ws < 500 Then
    Select Case Ws
    Case 400 To 450
    Tastenabfrage = 1
    Case 330 To 380
    Tastenabfrage = 2
    Case 260 To 305
    Tastenabfrage = 3
    Case 180 To 220
    Tastenabfrage = 4
    Case 90 To 130
    Tastenabfrage = 5
    ' Case Else
    ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
    End Select

    End If

    End Function

    Sub Motorauf()
    Portd.4 = 1
    Portd.5 = 1
    I = 0

    Do 'Drehen gegen Uhrzeigersinn
    'Schritt 1
    Portc.6 = 1 'Spule 1
    Portc.7 = 0


    Portb.0 = 1 'Spule 2
    Portb.1 = 0

    Waitms 5
    'Schritt 2
    Portc.6 = 1 'Spule 1
    Portc.7 = 0

    Portb.0 = 0 'Spule 2
    Portb.1 = 1

    Waitms 5
    'Schritt 3
    Portc.6 = 0 'Spule 1
    Portc.7 = 1

    Portb.0 = 0 'Spule 2
    Portb.1 = 1

    Waitms 5
    'Schritt 4
    Portc.6 = 0 'Spule 1
    Portc.7 = 1

    Portb.0 = 1 'Spule 2
    Portb.1 = 0

    Waitms 5
    I = I + 1
    Loop Until I = 354 'Laufzeit
    Portd.4 = 0
    Portd.5 = 0
    End Sub


    Sub Motorzu()
    Portd.4 = 1
    Portd.5 = 1
    I = 0

    Do 'Drehen im Uhrzeigersinn
    'Schritt 1
    Portc.6 = 0 'Spule 1
    Portc.7 = 1


    Portb.0 = 1 'Spule 2
    Portb.1 = 0

    Waitms 5
    'Schritt 2
    Portc.6 = 0 'Spule 1
    Portc.7 = 1

    Portb.0 = 0 'Spule 2
    Portb.1 = 1

    Waitms 5
    'Schritt 3
    Portc.6 = 1 'Spule 1
    Portc.7 = 0

    Portb.0 = 0 'Spule 2
    Portb.1 = 1

    Waitms 5
    'Schritt 4
    Portc.6 = 1 'Spule 1
    Portc.7 = 0

    Portb.0 = 1 'Spule 2
    Portb.1 = 0

    Waitms 5
    I = I + 1
    Loop Until I = 354
    Portd.4 = 0
    Portd.5 = 0
    End Sub

    das is mein Prog ( hab n Test Prog genommen und angepasst wie ichs brauche) aber ich hab echt 0 ahnung ....

  4. #4
    arghh jezz kommt com port 4 is not available .

    hab in den Optionen beim Loader und so die ports alle auf com4 gestellt, die Baudrate habe ich überall sowie im Programm ich weiß irgendwie nicht was ich noch tun soll ....

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Hi Ertugrul,

    zu erst einmal ist für die Benutzung des Bootloaders wichtig, die FUSE-Bits dafür einzustellen, die ein Bootloaderprogramm erst zum leben erweckt.
    Der sogenannte Resetvector zeigt im ausgelieferten Zustand auf die Adresse &H000. Dies ist die erste Adresse im Programmspeicher. Jetzt musst Du über die Fuse diese so umstellen, dass der Resetvector nicht auf &H000 zeigt sondern auf den Speicherplatz in dem der Bootloader liegt. Der MCS Bootloader brauch die Größe von 1024 bit, auch wieder über die Fuse einstellbar. Einfach mal zu den Fuses & Bascom googeln.
    Nach dem Du die Fuse gestellt hast musst Du den Bootloader über die SPI-Schnittstelle auf den ATMega flashen.
    Danach solltest Du über die RS232 Schnittstelle (richtig Aufbau der Schnittstelle ==> max232 muss zwischen mega & PC-Schnittstelle!!!) das Programm aufspielen können. Das Bootloaderprogramm funktioniert folgend:
    So bald der mega in den reset geschickt wird, springt er dann automatischen in den Bootloader. Dieser wartet auf ein 123, ist dieses empfangen worden, schickt er eine 124 zurück.
    Wichtig ist noch, dass die gewählte Baudrate, mit der der Bootloaderprogramm arbeitet auch für die Übertragung gewählt wird! Ansonsten erkennt er das 123 nicht

    Gruß MAT

  6. #6
    vielen dank ich werde das nun mal probieren

    hab ich das richtig verstanden das man für die Fuses ein ISP kabel braucht oder check ich da was net ... ein Klassenkamerad hatt es ohne gemacht allerdings kanner mir nicht sagen wie -.-

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    49
    Beiträge
    381
    Moin,

    schau Dir mal die Seite an: http://www.rn-wissen.de/index.php/AV...leicht_gemacht

    Dort findest Du auf die meisten Fragen eine Antwort und den Einstieg in die AVR Welt! Wenn dann noch Fragen offen sind einfach schreiben.
    ABER ! erst dort lesen, lesen, lesen.....

    MAT

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    36
    Beiträge
    826
    Wichtig zu erwähnen scheint mir in dem Zusammenhang auch:

    Hat dein Kumpel das selbe Board wie du? Wie hat er den Bootloader aufgespielt, bzw. ist der vielleicht schon drauf?

    Falls er schon drauf ist und du ihn nur nicht ansprechen kannst, verkonfigurierst du dir das ganze vielleicht auch nur.

    Also klär doch mal generell was du schon hast und was noch fehlt.
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Frage welches Board habt ihr überhaupt? Es gibt welche mit und ohne
    Bootloader! Dann wichtig! Wenn der µC zwischendurch einmal über
    ISP Programmiert wurde, ist der Bootloader ....WECH.

    Ansonsten hat das bei mir mit Bascom und MCS Loader gut geklappt.
    MCS Loader starten und Reset drücken.....

    Gruß Richard

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Zitat Zitat von Richard
    Frage welches Board habt ihr überhaupt? Es gibt welche mit und ohne
    Bootloader! Dann wichtig! Wenn der µC zwischendurch einmal über
    ISP Programmiert wurde, ist der Bootloader ....WECH.
    nein, nicht zwingend. Nur wenn der Loaderbereich mit überschrieben wurde oder n Erase durchgeführt wurde. Mach ich öfters, dass ich vorab den Loader flashe und dann je nach belieben ISP oder per Loader flashe ... je nach dem welche Gerätschaft ich gerade zur Hand habe
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests