Forum: Compiler & IDEs AVR Butterfly Programm


von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
Ich habe mir zum Einstieg in die Mikreocontrollerwelt einen AVR 
Butterfly gekauft. Ich weiss wie man den mit UART Programmiert, habe 
schon mit Terminlaprogrammen die Verbindung getestet, und auch schon 
fertige Programme geflasht. Hat alles wunderbar geklappt, worueber ich 
sehr froh bin.
Nun kommt allerdings die zweite grosse Huerde: Ich will ein kleines 
C-Programm schreiben, welches einen Portpin auf 1 setzt, damit ich z.B 
eine Led anseuern kann. Ich habe schon einige Stunden im Internet 
gesucht, aber nirgends ein eindeutig fuer den Butterfly ausgeschriebenes 
C-Programm gefunden, welches einen Portpin ansteuert.
Koennte jemand von euch mir vielleicht einen Vorschlag schicken, den ich 
nur noch mit AVR Studio in eine .hex- Datei compilieren muss, und dann 
flashen kann. Ich habe zwar einige Programmbeispiele fuer andere 
Controller gefunden, habe dann versucht diese ein wenig umzuwandeln und 
auf den Controller zu flashen, hat allerdings noch nie geklappt :-(.
Vielen Dank schon einmal im Voraus,
Steffen

von 6640 (Gast)


Lesenswert?

Aufm Schema nachschauen, was denn wie zu konfigurieren ist, dann sollte 
es einfacher werden.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Tja, das ist der Moment, wo das Lernen beginnt. Dieses "kannste mir mal 
ein Programm machen?"-Rumgebettel ist doch scheiße. Warum kauft du dir 
so ein  Einsteigersystem um dann nicht selbst zu lernen?

- Beispiel (Schaltplan und Programm) für einen AVR LED-Blinker im Netz 
suchen. Für welchen AVR ist erstmal ziemlich egal.

- Beispielprogramm so lange lesen bis man es verstanden hat.

- Beispielschaltplan so lange lesen bis man ihn verstanden hat.

- Datenblatt für genau den AVR der auf Butterfly sitzt besorgen.

- Datenblatt so lange lesen, bis man eine Vorstellung davon hat, wie man 
das Blinker-Programm für den Butterfly-AVR umschreiben kann.

- Schaltplan des Butterfly besorgen.

- Butterfly-Schaltplan so lange studieren, biss man ein Vorstellung 
davon hat, wie man den Schaltplan des LED-Blinkers für den Buterfly 
anpassen kann.

- Schaltung aufbauen

- Software schreiben

- Software laden

- Fehler suchen

Wer reden hier übrigens von durchaus mehreren Wochen Arbeit, wenn man 
ganz von Vorne anfangen muss. Wer das nicht will: Anderes Hobby suchen.

von Karl H. (kbuchegg)


Lesenswert?

Steffen Oesterwind wrote:

> Nun kommt allerdings die zweite grosse Huerde: Ich will ein kleines
> C-Programm schreiben, welches einen Portpin auf 1 setzt, damit ich z.B
> eine Led anseuern kann. Ich habe schon einige Stunden im Internet
> gesucht, aber nirgends ein eindeutig fuer den Butterfly ausgeschriebenes
> C-Programm gefunden, welches einen Portpin ansteuert.

Wie Hannes schon geschrieben hat:
Da musst du selber durch.

Aber ein paar Hinweise und Tips
Zuallererst musst du rausfinden, wo deine LED angeschlossen ist.
Das geht am einfachsten mit dem Schaltplan. Du hast doch eine
Schaltplan?
Also im Schaltplan suchst du dir erst mal die LED.
Rund um die LED wird noch etwas Aussenbeschaltung sein (Widerstände,
ev. ein Transistor, ich kenne die Schaltung nicht). Das ignorierst
du erst mal. Wichtig ist: von dieser LED geht eine Leitung zum
Prozessor (mglw. über ein paar zusätzliche Bauteile, wie Widerstände,
Transistoren). Wichtig ist: An welchem Prozessorpin kommt diese
Leitung an? Das ist für dich die wichtige Information.
Neben dem Prozessorpin steht im Schaltplan eine Bezeichnung.
In dieser Bezeichnung steht zb PB4 oder PA3 oder PD7
Da mag in Klammern noch etwas dabeistehen, wie zb (ADC0) oder
(MOSI) oder dergleichen aber das interessiert im Moment nicht.
Wichtig ist nur dieses 3 Buchstaben Kürzel. Mal angenommen
da steht PD3
P  steht für Port
D  steht für den Port D
3  ist die Pinnummer innerhalb des Port D

Jetzt weist du also, dass die Led am Port D am Pin 3 angeschlossen
ist. Also musst du diesen Port-Pin auf 1 oder 0 schalten, damit
die LED leuchtet. Ob 0 oder 1 findest du am schnellsten
raus, indem du es einfach ausprobierst.

Damit man den Port-Pin beeinflussen kann, muss er auf Ausgang
geschaltet sein. Dazu brauchst du das, zum jeweiligen Port
gehörende Datenrichtungsregister. Eine 1 an der Bitposition 3
(weil es ja PD3 war) schaltet den Pin 3 auf Ausgang (Du setzt hier
natürlich deine richtigen Zahlen ein).
Tja. Und dann brauchst du den Pin nur nich auf 0 oder 1 setzen.
In einer der beiden Stellungen sollte die LED leuchten
1
#include <avr/io.h>       // das wird immer eingebunden
2
3
int main()                // die Programmausführung beginnt
4
{                         // immer bei der Funktion main()
5
6
  DDRD = ( 1 << PD3 );    // Im Datenrichtungsregister für den
7
                          // Port D (daher DDR D) das Bit für
8
                          // den Pin 3 auf 1 setzen
9
10
  PORTD = ( 1 << PD3 );      // Pin 3 am Port D auf 1 setzen
11
12
  // PORTD = ~( 1 << PD3 );  // alternativ den Pin 3 auf 0 setzen
13
14
  while( 1 )              // und den Prozessor beschäftigen
15
    ;         
16
}

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
Vielen Dank erstmal fuer die schnellen Antworten!!!!
Auf dem Butterfly- Board ist standartmaessig keine LED eingebaut, und 
ich muss die an irgendeinen Port anschliessen. Da der Butterfly ja 3.3 
Volt Ausgangsspannung hat, benoetige ich ja keinen Vorwiderstand.....
Kann ich das von Karl Heinz geschriebene Programm einfach so compilieren 
mit AVR Studio, und dann bekomm ich meine .hex Datei????
Ich hab des naemlich schonmal versucht, aber dann kam da immer ne .c 
Datei raus, und die kann ich ja nicht auf den Controller flashen....
Vielen Dank fuer eure Hilfe,
Steffen

von Karl H. (kbuchegg)


Lesenswert?

Steffen Oesterwind wrote:
> Hallo!
> Vielen Dank erstmal fuer die schnellen Antworten!!!!
> Auf dem Butterfly- Board ist standartmaessig keine LED eingebaut, und
> ich muss die an irgendeinen Port anschliessen.

Na, dann such dir einen aus.
Am besten einen Pin an einem Port an dem sonst noch nichts hängt.

> Da der Butterfly ja 3.3
> Volt Ausgangsspannung hat, benoetige ich ja keinen Vorwiderstand.....

Sagt wer?
Natürlich solltest du auch dann einen Vorwiderstand einbauen.

http://www.mikrocontroller.net/articles/LED

> Kann ich das von Karl Heinz geschriebene Programm einfach so compilieren
> mit AVR Studio, und dann bekomm ich meine .hex Datei????

Ganz genau

> Ich hab des naemlich schonmal versucht, aber dann kam da immer ne .c
> Datei raus,

mit Sicherheit nicht.
Die *.c ist die Eingangtsdatei. Die enthält das C Programm.
Der Compiler compiliert das dann, das Zwischenergebnis wird
gelinkt und am Ende entsteht das HEX File (wenn es keinen
Fehler gab).

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
danke fuer die Links, da hab ich jetzt was zu lesen :-).
Am Butterfly gibts leider, soweit ich weiss, keinen einzigen unbelegten 
Pin, deshalb werd ich halt irgendeinen belegten verwenden muessen, und 
dann faellt halt die Funktion von dem Teil, des da dran haengt aus......
Ich hab irgendwo mal gelesen, dass man die USI Pins irgendwie verwenden 
kann, und die JTAG Pins auch, aber da muss man die JTAG- Funktion 
irgenwie disablen, und des weiss ich nicht, wie des geht.
Welche Pins wuerdet ihr verwenden????
Vielen Dank, fuer die schnellen Rueckmeldungen,
Steffen

von Karl H. (kbuchegg)


Lesenswert?

Steffen Oesterwind wrote:
> Am Butterfly gibts leider, soweit ich weiss, keinen einzigen unbelegten
> Pin,

Auf dem 'Schaltplan', den ich auf die Schnelle gefunden habe

http://www.atmel.com/dyn/resources/prod_documents/doc4249.pdf

ist der komplette Port D unbelegt. Am Port B dürften auch noch
etliche Pins frei sein.

von Sebastian M. (izaseba)


Lesenswert?

Karl heinz Buchegger wrote:
> Auf dem 'Schaltplan', den ich auf die Schnelle gefunden habe
>
> http://www.atmel.com/dyn/resources/prod_documents/doc4249.pdf
>
> ist der komplette Port D unbelegt. Am Port B dürften auch noch
> etliche Pins frei sein.

Hallo, leider stimmt das nicht ganz, Port D ist komplett für das Display 
belegt, da würd ich keine LED dran machen.

Nimm am besten die Pins von der USI Schnittstelle oder von JTAG, den man 
zuerst per Software deaktivieren sollte.

Gruß Sebastian

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
OK, wie muss ich denn die JTAG- Schnittstelle genau per Software 
deaktivieren? Koenntet ihr mir vielleicht die genauen Programmzeilen 
schreiben, die ich dann nur noch in das Programm einfuegen muss? Das 
waere sehr nett!!!
Wie spricht man denn die USI oder JTAG- Schnittstelle an?
Bei einem Port sagt man dann halt z.B PORTD1 oder sowas, aber wie macht 
man das bei USI und JTAG?
Vielen Dank schon einmal im Voraus!!!
Gruesse, Steffen

PS: Das ist ja echt klasse, wie schnell einem Anfaenger hier im Forum 
geholfen wird!!!!!

von Karl H. (kbuchegg)


Lesenswert?

Steffen Oesterwind wrote:
> Hallo,
> OK, wie muss ich denn die JTAG- Schnittstelle genau per Software
> deaktivieren?

Es gibt da 2 Möglichkeiten.
Entweder das JTAG per Fuse abstellen. Das wäre für mich die
grundsätzlich bessere Lösung (wenn du JTAG sowieso nicht
brauchst). Allerdings muss man dazu an die Fuse-Bits ran und
da hängt es von deinem Brennprogramm ab, wie man das dort
macht.

Die andere Variante ist zb hier beschrieben

http://www.siwawi.arubi.uni-kl.de/avr_projects/BF_JTAG_disable.html

> Wie spricht man denn die USI oder JTAG- Schnittstelle an?
> Bei einem Port sagt man dann halt z.B PORTD1 oder sowas, aber wie macht
> man das bei USI und JTAG?

Du benutzt den Port Pin dann wie jeden anderen auch.

Alle Port Pins werden über diese Syntax angesprochen.
Nur manche Port Pins haben auch noch eine 2-te Bedeutung, wenn
die entsprechende Funktionalität eingeschaltet wird.
Ist die Funktionalität nicht eingeschaltet, ist das ein
stinknormaler Port Pin und wird auch so angesprochen.

von Sebastian M. (izaseba)


Lesenswert?

>Wie spricht man denn die USI oder JTAG- Schnittstelle an?
>Bei einem Port sagt man dann halt z.B PORTD1 oder sowas, aber wie macht
>man das bei USI und JTAG?

Nein, Du hast mich falsch verstanden...
Du sollst die Pins verwenden, die am Butterfly als USI bzw. JTAG 
ausgeführt worden sind, nicht die Schnittstelle als solche.

>OK, wie muss ich denn die JTAG- Schnittstelle genau per Software
>deaktivieren?
Das steht im Dattenblatt zu Mega169

>Koenntet ihr mir vielleicht die genauen Programmzeilen
>schreiben, die ich dann nur noch in das Programm einfuegen muss? Das
>waere sehr nett!!!
Sicher wäre das nett, Du möchtest aber was lernen, oder ?
Besorg Dir die Beschreibung von Butterfly, Dattenblatt von M169 und 
versuch mal was selber auf die Beine zu stellen, wenn es nicht klappt 
kannst Du gerne nochmal nachfragen...

Gruß Sebastian

P.S. und lass bloß die Finger von Fusebits, wenn Du Dich da aussperst 
kannst Du den Butterfly als Anfänger in den Müll werfen...
Deswegen JTAG per Software ausschalten und nicht per Fuse
(Sorry Karl Heiz)

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
Vielen Dank fuer die schnellen antworten!!!
Ich habe mich falsch ausgedrueckt, dass stimmt, ich meinte nicht die 
Schnittstelle als solche sondern halt die Pins, die die Schnittstelle 
bilden.
Ich habe jetzt ein bisschen auf der Seite, die Karl Heinz oben 
geschrieben hat ein wenig umgesehen, und habe dann das Programm, das 
Karl Heinz oben geschrieben hat abgeaendert:
------------------------------------------------------------------------
#include <avr/io.h>
#include <avr/interrupt.h>
int main()
{
void disable_JTAG(void)
{
  unsigned char sreg;

  sreg = SREG;
  cli();
  MCUCR |= ( 1 <<JTD );
  MCUCR |= ( 1 <<JTD );
  SREG = sreg;
}
  DDRD = ( 1 << PF4 );


  PORTF = ( 1 << PF4 );

  while( 1 )
    ;
}
------------------------------------------------------------------------ 
--
Ist das so jetzt korrekt???
Laut Datenblatt bilden die Pins F4,F5,F6,F7 das Jtag Interface.
Dieses hab ich durch den Befehl mit dem MCUCR Register deaktiviert, und 
verwende es dann fuer die Funktion ein/aus.
Ich hoffe es passt so.
Gruesse, Steffen

von Karl H. (kbuchegg)


Lesenswert?

Steffen Oesterwind wrote:

> Ist das so jetzt korrekt???

Dein gcc wird das akzeptieren. Aber nur deswegen, weil er
eine Erweiterung eingebaut hat, die das akzeptiert.
Funcktionen können in Standard-C nicht ineinander
geschachtelt definiert werden.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
4
void disable_JTAG(void)
5
{
6
  unsigned char sreg;
7
8
  sreg = SREG;
9
  cli();
10
  MCUCR |= ( 1 <<JTD );
11
  MCUCR |= ( 1 <<JTD );
12
  SREG = sreg;
13
}
14
15
int main()
16
{
17
  disable_JTAG();
18
19
  DDRD = ( 1 << PF4 );
20
21
  PORTF = ( 1 << PF4 );
22
23
  while( 1 )
24
    ;
25
}

> Laut Datenblatt bilden die Pins F4,F5,F6,F7 das Jtag Interface.
> Dieses hab ich durch den Befehl mit dem MCUCR Register deaktiviert, und
> verwende es dann fuer die Funktion ein/aus.

Müsste so gehen.
Allerdings werden LED normalerweise so angeschlossen, dass man
eine 0 ausgeben muss, damit die LED brennt.

Klemm mal an PF4, PF5, PF6 und PF7 4 LEDs an.
Und zwar so (am beispiel PF4)

            +-------+
   PF4 o----| 100   |--------------+
            +-------+              |
                                   |
                                 -----
                                  \  /
                                   \/
                                 -----
                                   |
                                   |
                                 --+--   GND

(Wenn die LED dann zu schwach brennt, kannst du den Widerstand mal
auf die Hälfte verringern)

Das Programm welches die LED dann zum Leuchten bringt
schaut so aus:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
4
void disable_JTAG(void)
5
{
6
  unsigned char sreg;
7
8
  sreg = SREG;
9
  cli();
10
  MCUCR |= ( 1 <<JTD );
11
  MCUCR |= ( 1 <<JTD );
12
  SREG = sreg;
13
}
14
15
int main()
16
{
17
  disable_JTAG();
18
19
  DDRD = ( 1 << PF4 );
20
21
  PORTF = 0b00000000;
22
23
  while( 1 )
24
    ;
25
}

Du kannst dann auch mal mit der Portzuweisung spielen

  PORTF = 0b01010000;

dann sollen nur mehr 2 LED brennen (die an deren Position eine
0 steht.)


            +---------- PF7
            |+--------- PF6
            ||+-------- PF5
            |||+------- PF4
            ||||+------ PF3
            |||||+----- PF2
            ||||||+---- PF1
            |||||||+--- PF0
            ||||||||
  PORTF = 0b01010000;

von Sebastian M. (izaseba)


Lesenswert?

> DDRD = ( 1 << PF4 );

Hier war wohl
1
DDRF = ( 1 << PF4 );
 gemeint, oder ?

Ich wollte das nur so in den Raum werfen, bevor Du es übersehen 
solltest.

Gruß Sebastian

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
Ich hab alles verstanden, bis auf das mit dem Spielen an der 
Portzuweisung.
Warum sollen 2 LEDs leuchten, wenn da anstatt PORTF = 0b00000000; , 
PORTF = 0b01010000; steht?
Beim 2. stehen noch zwei 1-en drin, das sehe ich, aber woher weiss man 
was genau diese zwei 1-en machen?
Hat das was mit dem binaerem Zahlensystem zu tun?
Gruesse, Steffen

PS: Vielen Dank fuer die schnellen Antworten, ich war schon ganz 
verzweifelt, weil ich ewig lang probiert habe, und sich nichts ruehrte 
:-(.

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

OH, sorry, Ich hab den letzten Teil von Karl Heinz Beitrag nicht 
gesehen.
Da stehts ja, warum die bestimmten LEDs an und aus gehen.
Tschuldigung, es ist schon spaet, und ich werd langsam muede...........
Gruesse, Steffen

von Karl H. (kbuchegg)


Lesenswert?

Sebastian Mazur wrote:
>> DDRD = ( 1 << PF4 );
>
> Hier war wohl
1
DDRF = ( 1 << PF4 );
 gemeint, oder ?
>

Da sieht man's wieder:
4 Augen sind einfach besser als 2.
Egal wie gut man aufpasst, irgendwas wird immer übersehen.

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
So, jetzt hab ich ausgeschlafen, und bin wieder fit :-). Nun wuerde ich 
noch gerne eine Funktion einbauen, dass die LEDs nur dann angehen, wenn 
ein Port per Taster auf 0 gelegt wird. Ich habe das oben genannte 
Programm dann so gut, wie ich es konnte, umgeschrieben:
------------------------------------------------------------------------ 
----
#include <avr/io.h>
#include <avr/interrupt.h>

void disable_JTAG(void)
{
  unsigned char sreg;

  sreg = SREG;
  cli();
  MCUCR |= ( 1 <<JTD );
  MCUCR |= ( 1 <<JTD );
  SREG = sreg;
}

int main()
{
  disable_JTAG();

  DDRF = ( 1 << PF4 );            Hier muss irgendwo noch der Eingang
                                  konfiguriert werden
IF PINF = 0b00010000
THEN PORTF = 0b00000000;
ELSE PORTF = 0b11110000;

  while( 1 )
    ;
}
------------------------------------------------------------------------ 
-
Ich habe das ganze jetzt mal so gemacht, wie ich es mir in etwa 
vorstelle. Ich weiss nicht, wie man den Eingang konfiguriert, aber das 
koennt ihr ja vielleicht noch verbessern. Wenn sonst noch etwas falsch 
ist, koenntet ihr das vielleicht verbessern?
Vielen Dank schon einmal im Voraus,
Steffen

von Sebastian M. (izaseba)


Lesenswert?

Hallo,

Naja, das sieht schonmal aus wie eine Mischung aus C und Basic...

Aber eine ander Frage, warum nutzt Du nicht den eingebauten Joystick ?

Enter liegt z.B. an PB4 und schaltet beim Druck gegen GND.

dann könnte das Programm so aussehen:
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
4
void disable_JTAG(void)
5
{
6
  unsigned char sreg;
7
8
  sreg = SREG;
9
  cli();
10
  MCUCR |= ( 1 <<JTD );
11
  MCUCR |= ( 1 <<JTD );
12
  SREG = sreg;
13
}
14
15
int main()
16
{
17
  disable_JTAG();
18
19
  DDRF = ( 1 << PF4 );
20
  PORTB = (1<<PB4); //Pullup einschalten
21
  while( 1 ) {
22
    if (!(PINB&(1<<PB4))) {
23
       PORTF &=~(1<<PF4);
24
    } else {
25
       PORTF |=(1<<PF4);
26
    }
27
  }
28
return 0;  
29
}

Achso, jeder Pin der im DDR* nicht als Ausgang konfiguriert wurde, 
bleibt halt Eingang.

Gruß Sebastian

P.S. Hast Du Deine LED schon angeschlossen ?

von Karl H. (kbuchegg)


Lesenswert?

> IF PINF = 0b00010000
> THEN PORTF = 0b00000000;
> ELSE PORTF = 0b11110000;

Morgen tust du dir selbst einen Gefallen und gehst in die
nächste Buchhandlung. Dort stürmst du die EDV Regale und
kaufst dir erst mal etwas Grundlagenliteratur zum Thema
'Programmierung in C'.

Immer wieder empfehlenswert ist der sog. K&R, der Kernighan - Ritchie.
Ist sowas wie die Bibel der C-Programmierer.

http://www.mikrocontroller.net/articles/Buchtipps#C-Programmierung

So hat das im Moment keinen wirklichen Sinn.
Ich würde dir auch empfehlen, deine ersten Schritte in der
C-Programmierung auf einem PC zu gehen. Die Möglichkeiten
zur Ein/Ausgabe, sowie zum Debuggen eines Programms sind dort
nunmal um ein Vielfaches besser als auf einem AVR mit seinen
begrenzten Resourcen.

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
Vielen Dank fuer die schnelle Rueckmeldung!!!
Ich kann natuerlich auch den Joystick verwenden, hab ich gar nicht 
drangedacht. Klasse Idee!
Ich konnte leider die LED noch nicht anschliessend, da ich im Moment 
nicht zu Hause bin, und somit das Butterfly nicht hab :-(.
Hast du das Programm schon ausprobiert, weil manche Sachen da blau und 
gruen sind. Das sieht aus, als ob es in AVR Studio geschrieben wurde.
Mie ist gerade noch etwas eingefallen, und zwar moechte ich nach dem 
Tastendruck vier LEDs nacheinander angehenlassen. Allerdings soll immer 
nur dann die naechste angehen, wenn die vorhergende wieder aus ist. Hier 
hab ich allerdings keine, auch nur ansatzweise Ahnung, wie ich das 
realisieren soll, da ich im main- Teil den If/Else- Befehl nicht versteh 
:-(.
Koenntet ihr die Programmaenderung vielleicht noch posten???
Das waere sehr nett!!!!
Gruesse, Steffen

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
Entschuldigung, aber ich war gerade am schreiben von meinem Beitrag und 
habe dann den von Karl Heinz nicht gelesen, bevor ich meinen gepostet 
hab.....
Ich werde mich demnaechst mal nach dem Buch umschauen. Ich habe schon, 
wie Sebastian bereits festgestellt hat, begrenzte Erfahrungen mit Basic.
Wenn ihr noch Zeit und Lust habt koenntet ihr ja noch die kleine 
Programmaenderung posten, wenn nicht ist auch nicht tragisch.
Vielen Dank, Steffen

von Sebastian M. (izaseba)


Lesenswert?

>Hast du das Programm schon ausprobiert, weil manche Sachen da blau und
>gruen sind. Das sieht aus, als ob es in AVR Studio geschrieben wurde.

Kratz
Nee, ausprobiert habe ich das nicht, und es wurde nicht in AVR Studio 
geschrieben, sondern in  mikrocontroller.net "on the Fly" und Blau und 
Grün liegt vielleicht an der Syntaxhighlighting ?

>Mie ist gerade noch etwas eingefallen, und zwar moechte ich nach dem
>Tastendruck vier LEDs nacheinander angehenlassen. Allerdings soll immer
>nur dann die naechste angehen, wenn die vorhergende wieder aus ist. Hier
>hab ich allerdings keine, auch nur ansatzweise Ahnung, wie ich das
>realisieren soll, da ich im main- Teil den If/Else- Befehl nicht versteh
>:-(.

Ja, machen kann man viel, aber bedenke, Rom haben die auch nicht von 
Heute auf Morgen gebaut...
Versuche erstmal zu verstehen, was in der if/else Abfrage abgeht, folge 
dem Rat vom Karl Heiz und dann sehen wir weiter ;-)

Zum Buch, ja K&R ist Klasse,
Für absolute Anfänger empfehle ich eher
"Helmut Erlenkötter; C Programmieren von Anfang an."
das ist wirklich sehr leicht geschrieben und ist auch viel billiger...

Gruß Sebastian

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo!
Vielen Dank fuer den Tip mit dem Buch, ist bestellt......
Soll ich dann diesen Thread jetzt ruhen lassen, und wieder was 
reinschreiben, wenn ich das Buch mal gelesen hab, oder soll ich dann nen 
neuen aufmachen?
Vielen Dank auch an alle, die mir die Programme gepostet haben, und mir 
geholfen haben. Ich bin jetzt schon einiges weiter gekommen!!!
Gruesse,
Steffen

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
mir steht gerade einer aufm Schlauch.....;-)
Und zwar hab ich folgendes Problem: Ich hab mein C Programm für einen 
ATtiny12  geschrieben, und will das jetzt mit AVR Studio in eine .hex- 
Datei umwandeln.
Welche Schritte muss ich machen (welche Befehle eingeben, welche Buttons 
drücken, usw......) ?????

Das C Programmieren von Anfang an- Buch hab ich inzwischen durch, ist 
echt klasse!!!
Gruß, Steffen

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
kennt keiner irgendein Tutorial, zum Erlernen wie man AVR Studio 4 
benutzt.
Ich habe schon die Anleitungen auf der ATMEL- Seite durchgelesen, bin 
aber nicht weitergekommen.
Ich benötige nur die notwendigen Schritte vom Programmtext zur .hex- 
Datei.
Vielen Dank schon einmal im Voraus.
Grüße, Steffen

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.