-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Hilfe, 1. Programmierung

  1. #1

    Hilfe, 1. Programmierung

    Anzeige

    Hi there!

    So zuerst zur Hardware:

    Atmel AVRISP mkII (war einer der "defekten" Serie, hab ihn upgedated!)
    Atmel ATmega 32
    Embedit AVR-32 Prototype-Board

    (Win Vista Ultimate 32bit)
    (AVR Studio 4.x)

    So, nun wollte ich das 1. Programm welches die LED zum leuchten bringen soll auf meinen Mikrocontroller übertragen doch ich kann meinen Programmer nicht auswählen (also wenn ich "connect" wähle ist er da aber sobald ich auf "Assemble&Run drücke erscheint er nicht mehr in der Auflistung)

    Bin noch totaler Neuling
    Was muss ich anders einstellen im AVR-Studio?
    Die Fuses? ODer was?

    Helft mir pls

    Greez

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.03.2005
    Ort
    gerne in den Bergen
    Alter
    33
    Beiträge
    429
    mach mal connect. dann öffnet sich ein fenster. auf der letzten registerkarte kannst du zum beispiel die spannung ablesen, die in deiner schaltung herrscht.
    dieses fenster darfst du NICHT schliessen. sondern nur minimieren. so sollte es funktionierten....
    ...wer nicht findet hat nicht gesucht...

  3. #3
    Wenn ich das mach öffnet siche in Fenster (bis dahin klappts) und dann ist die letzte Registerkarte "Auto" und da kann ich keine Spannung und nichts ablesen!
    Ich weise nochmals darauf hin: Ich habe NICHTS konfiguriert, weis nicht ob das der Fehler ist.

    Ah und wenn diese Fenster dann offen ist und ich "hintendran" auf "Build" klicke kommt nicht mal mehr ein Menü:S

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.07.2006
    Ort
    Mannheim
    Beiträge
    454
    Geh im AVR Studio mal in das Connect Menue, wähle Platform und Port und klicke auf Connect... Wenn das Studio eine Verbindung aufbauen kann erscheint das AVR-Menue. Auf der Registerkarte "Main" wählst du dein Device (den µC) und klickst auf "Read Signature". Es sollte dann ein Code erscheinen und die Nachricht " Signature matches selected device". Damit sollte für eine Übertragung des Programms alles klar sein. Der Assembler oder Compiler legt den Programm Code als Dateiname.hex ab. Auf der Registerkarte "Program" muss im Input Hex File der Pfad und Programmname.hex angegeben werden. (Schliesslich muss das Studio wissen, welches Programm in den µC transferiert werden soll). Mit der Taste "Program" wird die Programmierung gestartet.
    Noch ein paar Hinweise: Der Atmega32 wird neu mit internem Takt 1MHz und aktiviertem JTAG geliefert Die Programmiergeschwindigkeit muss weniger als 1/4 des Taktes betragen. Wie das eventuell zu handeln ist, steht im Datenblatt des µP.

  5. #5
    SUper=)
    Also, das mit der SIgnatur etc. hat alles schonma geklappt, hab auch das mit dem 1/4 des Taktes etc hinbekommen
    NUr leuchtet meine LED noch nicht:

    mit dem quelltext:

    .include "m32def.inc" ; Definitionsdatei für den Prozessortyp einbinden

    ldi r16, 0xFF ; lade Arbeitsregister r16 mit der Konstanten 0xFF
    out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben

    ldi r16, 0b11111100 ; 0b11111100 in r16 laden
    out PORTB, r16 ; r16 ins IO-Register PORTB ausgeben

    ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife

    (Kopiert von Mikrocontroller.net)

    Was mach ich noch falsch?
    Wenn ich alles connected hab wähle ich im Programm-Fenster vom AVR bei "Flash" das Input-HEx FIle des oben genannten QUelltextes aus. Wenn ich dan auf "Programm" klicke sagt er das er alles fertig und richtig programmiert hätte aber wenn ich dann die versorgungsspannung meines ATmega32 aus und wieder einschalte leuchtet die LED nicht

    Könnt ihr mir noch den letzten Fehler zeigen den ich mache?

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wie ist denn die LED angeschossen. Damit die bei dem Programm leuchtet, müßte sie an PORTB0 oder PORTB1 gegen VCC oder an PORTB2 .. PORTB7 nach GND angeschlossen sein. Mit Widerstand versteht sich natürlich.

    Damit das Programm läuft muss eventuell der ISP Programmierer abgezogen werden (damit Rest auf High geht).

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.03.2005
    Ort
    gerne in den Bergen
    Alter
    33
    Beiträge
    429
    Nach meiner Erfahrung kann der ISP dran bleiben!
    versuch einmal 0b00000000 und dann 0b11111111 in PORTB zu schreiben. wenn die LED falsch angeschlossen wäre, dann müsste in einen dieser beiden Fälle die LED leuchten...
    ...wer nicht findet hat nicht gesucht...

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    07.07.2006
    Ort
    Mannheim
    Beiträge
    454
    Wenn du schon mal mit dem µC labern kannst, ist das schon die halbe Miete.
    Dann solltest du dir bei Assembler angewöhnen, den Stack zu initialisieren (Check das ebenfalls mal im AVR-Tutorial bei Mikrocontroller.net; Stack und I/O). Bei mir wird eine LED so angeschlossen: +5V--R--LED--µC oder gnd.
    (Da werden jetzt bestimmt wieder einige ausflippen, aber das ist AKTIV LOW und kompatibel mit älteren TTL-Schaltungen. Die meisten Logik-Bausteine sind aktiv low, deshalb sollte man sich das ruhig angewöhnen). Je nach verwendeter Diode ist bei 5V der Widerstand so 200 bis 300 Ohm groß und bevor du das an den µC hängst probier aus, ob die LED überhaupt leuchtet!
    Ist das OK hängst du sie an einen Output Portpin, den du dann auf low schaltest.
    Im interrupt vector RESET steht bei mir immer drin "jmp init". Unter dem label init wird dann der stack gesetzt un dann gehts weiter wie bei dir mit ldi r16...
    Wenn die LED bei dir an B0 oder B1 angeschlossen ist müsste sie leuchten.

  9. #9
    So, problem hat sich erledigt
    mit

    -> 0b11111111
    hats geklappt, doch was bedeutet das?

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.03.2005
    Ort
    gerne in den Bergen
    Alter
    33
    Beiträge
    429
    Das heisst, du schaltest alle Ausgänge von dem Port auf high (5V). Also hast du die LED vom AVR-Vorwiderstand-LED-Masse. Das heisst der Strom fliesst vom AVR über LED auf Masse ab.
    Wenn du die LED anstelle von Masse auf 5V geschaltet hättest, dann könntest du sie mit 0b00000000 (=0x00 hexadezimal) zum Leuchten bringen...

    0b11111111 = 0xFF ist übrigens da http://www.mikrocontroller.net/artic..._IO-Grundlagen sehr gut beschrieben!
    ...wer nicht findet hat nicht gesucht...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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