-
        

Ergebnis 1 bis 10 von 10

Thema: GCC, Win-AVR? Tutorial?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    32
    Beiträge
    199

    GCC, Win-AVR? Tutorial?

    Anzeige

    Moin!!!
    Ich hab mal ne frage zur programmierung mit C.
    Ich habe mir ein Dongle gekauft, was an den LPT-Port gesteckt wird und womit ich meinen Microcontroller (ATMega2 über ISP-Anschluß programmieren kann. Hab in so einem Tutorial gesehen wie man eine Programmierschaltung bauen kann und das programmieren ist da anhand von beispielen in Bascom erklährt. Will aber in C programmieren, da ich da wenigstens schon grundkentnisse hab. Win-AVR krieg ich irgendwie nicht mal so konfiguriert, das es meinen Mega28 erkennt. Dann hör ich immer von gcc. Kenn mich nur leider mit nichts Microcontrollerprogrammiermäßigem aus und würde mich auch freuen wenn es irgendein Tutorial geben würde, indem erklährt ist wie ich mit einem Programm (am besten kostenlos) in C programmieren kann.

    MfG Jan

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Hi Spongebob85,
    WinAVR ist nur die Windows-Portierung des/der GCC. Die Gnu Compiler Collection beinhaltet u.a. auch einen C Compiler und ist fuer viele verschiedene Prozessortypen (AVR,ARM,MIPS,x86,etc.,etc.) verfuegbar.
    Der AVR-GCC ist echt was feines und fuer Hobbybastler im Bereich AVR ein Muss... Bascom find ich aber auch wirklich gelungen. Hier gibts ein gutes Tutorial zum GCC:
    http://www.mikrocontroller.net/artic...R-GCC-Tutorial

    Gruss,
    SIGINT

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    32
    Beiträge
    199
    Hab mir das grade mal angekuckt. Ich versteh das alles nicht wirklich.
    Alleine die Pins als Ein- oder Ausgänge zu setzen...
    In Bascom sieht das so aus: Config Portc.0 = Output
    Im C-Tutorial sieht das so aus: DDRB = 0xff;
    PORTB = 0x03;
    Auserdem hab ich immernoch nicht rausgefunden, was ich in WinAVR einstellen muss damit das Prog meinen Controller über mein ISP-Dongle erkennt.
    Is das mit C wirklich so kompliziert, oder denke ich mir da wieder mehr Probleme rein als es gibt.

    MfG Jan

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Tja, die Befehle von Bascom kannst Du nunmal nicht mit denen von WinAVR vergleichen, bzw. nur sehr bedingt.

    Um Dein Beispiel mal aufzugreifen: In Bascom gibt es "Config Portc" als vorgefertigten Befehl, der letztendlich nichts anderes macht, als auf das Register DDRC zuzugreifen und entsprechend zu beschreiben. In WinAVR wird das Register direkt mit Namen angesprochen und der entsprechende Wert zugewiesen.

    Zudem musst Du in WinAVR das makefile anpassen.
    Falls Du davon noch nichts gehört hast, solltest Du Dich darüber mal informieren.

    Was die Programmierung angeht - WinAVR ist ein reiner Compiler - er kann gar nicht programmieren. Das mitgelieferte "Programmers Notepad" hat eine Programmierfunktion drin. Dazu kann ich Dir allerdings keine Hilfe geben, ich benutze zum Programmieren immer AVRStudio mit JTAG ICE bzw. AVRISP. Alternativ gibt es auch noch PonyProg, das kannst Du afaik auch mit Parallelport-Proggern einsetzen.

    askazo

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    15.01.2007
    Ort
    Wolfsburg
    Alter
    36
    Beiträge
    23
    Zitat Zitat von Spongebob85
    Alleine die Pins als Ein- oder Ausgänge zu setzen...
    MfG Jan
    das ist nicht so schwer wie es sich anhört...

    du nimmst einfach das register von dem port den du nutzen möchtest, sagen wir mal portc. und dann willst du pin6 setzen. siehts als c befehl so aus.

    DDRC |=(1<<PC6); damit ist der Pin als Ausgang deklariert.
    das ganze macht nichts weiter als eine oder- verknüpfung mit dem wert 1, der einfach an die stelle des pins geschiftet wird.

    bissl aufgebröselt sieht das so aus ( wenn wir davon ausgehen das DDRC auf 0 steht)

    DDRC = 00000000 ( alte Wert DDRC)
    ------------- ( oder )
    01000000 ( 1<<PB6)

    DDRC = 01000000

    wenn du dann den pin setzen willst, machst das gleiche nur das du statt DDRC nun PORTC schreiben musst.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    32
    Beiträge
    199
    Das is alles echt eigenartig!!!
    Wo kommt z.B. DDRC her. Was das mit dem "Oder" auf sich hab hab ich immer noch nicht verstanden. Meist is das doch ne bedingung für irgendwas. Würde das beim Port b DDRB heißen? Wie deklariere ich einen Pin als Eingang? So? DDRB |= (1>>PC6) Was ist mit internen Pullup-/Pulldownwiderständen? Ich werde noch bekloppt

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von Spongebob85
    Das is alles echt eigenartig!!!
    Wo kommt z.B. DDRC her.
    Als "Geheimtip" kann man nur die Lektüre des Datenblattes empfehlen !!

    Grüße.
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    Wo kommt z.B. DDRC her. Was das mit dem "Oder" auf sich hab hab ich immer noch nicht verstanden. Meist is das doch ne bedingung für irgendwas. Würde das beim Port b DDRB heißen? Wie deklariere ich einen Pin als Eingang? So? DDRB |= (1>>PC6) Was ist mit internen Pullup-/Pulldownwiderständen? Ich werde noch bekloppt
    @spongebob85 schau dir doch das Tutorial an, das von SIGINT gepostet wurde. Da wird das alles sehr schön erklärt.

    MfG

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    32
    Beiträge
    199
    Bei diesem Tutorial bin ich ja auf diese ganzen Fragen gestoßen.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2006
    Ort
    Biberach
    Alter
    27
    Beiträge
    485
    Es wird doch in dem Tutorial erklärt wie man einen Eingang definiert und wie man Pullupwiderstände aktiviert.
    Ansonsten kannst du noch bei google nach Bitmanipulation gucken.
    Achja und was die einzelnen Register sind, z.B. PORTC, kannst du im Datenblatt deines AVRs nachschaun.

    MfG

Berechtigungen

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