Forum: Compiler & IDEs funktioniert das auf diese weise?


von Alex (Gast)


Lesenswert?

Hallo,
ich beschäftige mich jetzt seit ein paar Wochen mit Elektronik und habe
mir einen AT90S4433 zugelegt und da der Programmer von/für SP12 am
einfachsten zu löten war, will ich jetzt damit ein kleines
Erfolgserlebnis erreichen. Vielleicht kann mir da jemand helfen.

Also die Verbindung zwischen SP12.exe und der Hardware steht, ich
bekomme eine positive

Rückmeldung und es wird angezeigt dass der 4433 erkannt wurde.
So sieht meine Hardware aus (das erste bild - ...ich weiss, sieht
primitiv aus):
http://www.xs4all.nl/~sbolt/e-spider_prog.html

So weit so gut, aber was nun?

Ich wollte erstmal mit einem Schalter eine LED mit dem µC ansteuern.
folgendes habe ich mir ausgedacht, wie mit kanonen auf spatzen
schiessen, aber egal:


#include <stdio.h>  /* welche bibliothek hab ich denn */
                    /* bzw.  brauch ich denn? */

main()
{
   PORTB1 = Eingang; /* wie muss ich da den Eingang deklarieren?*/
                     /* welcher Port als Eingang? Port B, C, D?     */
   PORTB2 = Ausgang; /* egal welcher Port Eingang oder Ausgang ist? */

if (Eingang = Low/0)
      Ausgang = Low/O;

else      Ausgang = High/1;  /* die LED soll leuchten */

}

dann kompilieren und die .bin in eine .hex wandeln - aber wie!?
dann mit SP12 uploaden. so habe ich mir das vorgestellt.


wäre toll, wenn mir jemand helfen könnte, wie das Programm aussehen
muss, damit es auch funktioniert und an welchem Port beim AT90S4433 der
Eingang bzw. Schalter und an welchem Port die LED sein soll.


Ausserdem würde ich mich über links zum Thema "C für AVR-µC´s"
freuen!

danke schon mal im voraus!
ist jetzt schon spät, gute nacht

von Alex (Gast)


Lesenswert?

ein kommentar dazu würde mir vorerst auch schon weiterhelfen!

Hilfe!
Ich kenne die Syntax spezielle für AVR's nicht!

von Alex (Gast)


Lesenswert?

schon besser oder?


#include <io.h>

main()
{
    outp(0xff, DDRB);      /* use PortB for output (LEDs) */
    outp(0x00, DDRD);      /* use PortD for input (switches) */

if (DDRD = 0)
        DDRB = 0;
    else
        DDRB = 1;     /* turn LEDs on */
}

von Alex (Gast)


Lesenswert?

ich suche einen guten link oder ein buch zum Thema AVR's in C
programmieren.
ich würde gerne wie im AVR-Tutorial mit ein paar Schaltern LEDs
ansteuern, aber nicht in assembler sondern in C.

von Florian Pfanner (Gast)


Lesenswert?

Schau dir mal auf AVR-Freaks.net um. Dort müsstest du einiges finden.
Hier auf der Seite existiert auch irgendwo ein Link zu einer C
einführung für AVR.

Gruß, Florian

von Alex (Gast)


Lesenswert?

danke!

Ich hab vor 2 Tagen den µC AT90LS4433 bekommen und jetzt hab ich mir
schon einen winzigen programmer gebaut und die ersten LEDs leuchten
jetzt auch schon.
So macht das Spass, allerdings mag ich Assembler nicht sonderlich und
abschreiben ist auch nicht mein Ding..
hab trotzdem mal den I/O-Teil vom Tutorial in Assembler programmiert:

.include "4433def.inc"
         ldi r16, 0xFF
         out DDRB, r16
         ldi r16, 0b11111000
         out PORTB, r16
ende:    rjmp ende

allerdings hab ich Null Ahnung von der Assembler Syntax und will sie
eigentlich auch gar nicht lernen, da mir C besser gefällt und ich auch
schon etwas kann.

Wie ändere ich mein kleines Programm, damit daraus ein "Lauflicht
wird?

so nebenbei:
im Tutorial steht im I/O-Teil, dass die 4433def.inc fehlerhaft ist und
es wird auf die richtige Datei verlinkt...
die hat bei mir auch einen Fehler produziert (bei Zeile 164 glaub ich)
- ich hab die Zeile gelöscht und es ging - was ich da gelöscht habe
will ich vorerst gar nicht wissen...

von Florian Pfanner (Gast)


Lesenswert?

Lies dier mal folgenden Artikel durch:
http://www.mikrocontroller.net/articles/c/ (hier auf der Seite)
Ich habs zwar noch nicht ganz durchgelesen, aber es müsste einige
Grundlegende dinge vermitteln.

Gruß, Florian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.