Forum: Mikrocontroller und Digitale Elektronik AVR-Compiler


von Anton (Gast)


Lesenswert?

Hallo,

suche einen AVR Compiler und Programmierumgebung, habe zwar einige 
gefunden komme aber nicht so klar mit.

AVR-Studio 4
AVR GCC

Oder kann mir mal jemand erklären wie die funktionieren?

Gruss aNton

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von Anton (Gast)


Lesenswert?

also nochmal

ich verstehe kein Wort und kann den zusammenhang nicht richtig 
begreifen.

Also ich suche ein Programm wo ich den AVR- Programmieren kann wie z.B.

.include "2313def.inc"      ;Definitionsdatei laden
.cseg          ;Beginn eines Code-Segmentes
.org 0          ;Startadresse=0
;
start:  ldi  r16,low(ramend)    ;Stackpointer auf
  out  spl,r16      ;RAM-Ende setzen
  ldi  r16,0b00000001    ;PortB: PB0 auf Ausgang
  out  ddrb,r16    ;setzen
  clr  r16      ;Anfangswert setzen
;
loop:  out  portb,r16    ;Daten an PortB ausgeben
  rcall  wait      ;Warteschleife aufrufen
  inc  r16      ;Datenwert erhöhen
  rjmp  loop      ;Schleife neu beginnen
;
;  Warteschleife (ungefähr 500ms)
;
wait:  ldi  r19,10      ;r19, r18 und r17
  clr  r18      ;ergeben zusammen
  clr  r17      ;einen 3-Byte-Zähler
wait1:  dec  r17      ;niedrigstes Byte -1
  brne  wait1      ;0 erreicht? nein -> Schleife
  dec  r18      ;mittleres Byte -1
  brne  wait1      ;0 erreicht? nein -> Schleife
  dec  r19      ;höchstes Byte -1
  brne  wait1      ;0 erreicht? nein -> Schleife
  ret        ;Schleifenende, Rückkehr

dieses Testprogramm.

dann suche ich ein Programm wo ich es Compilieren kann und mit PonyProg 
in den Chip schreiben kann.

Gruss Anton

Ich brauche Links wo ich die Programme einfach runterladen kann oder wie 
kann ich denn das sonst machen?

Was ist eigentlich AVR-GCC was macht dieses Programm ich verstehe die 
Anleitung nicht!

Gruss Anton

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

http://www.mikrocontroller.net/tutorial2.htm

AVR-GCC ist ein C-Compiler, kein Assembler.

von Günter König (Gast)


Lesenswert?

Hi Anton,

sieh dir bitte mal diesen Link an:

http://myplace.nu/avr/yaap/index.htm

Diesen Programmer nutze ich jetzt seit einigen Monaten und bin sehr 
zufrieden damit

Gruß,
Günter

von Arvid Teichtmann (Gast)


Lesenswert?

Hi Anton,

wie ich aus einem früheren posting von Dir entnehme, benutzt Du PonyProg 
zum programmieren, damit wäre die Programmierung der controller ja 
geklärt.

Wenn du deine controller in assembler programmieren willst, nimm 
AVR-Studio4, öffne ein neues Projekt, schreibe den code in assembler, 
führe build aus, öffne das .hex File mit ponyprog und bruzzel deinen 
avr.

Wenn du in c programmieren willst, brauchst du AVR-Studio3 und den 
avr-gcc compiler dazu. Avr-studio3 muss dann eingerichtet werden für den 
c-compiler. Avr-Studio4 bietet (noch) nicht die Möglichkeit, einen 
externen c-compiler einzubinden.

Lies dir die Tutorials und Anleitungen auf dieser Seite gründlich (!) 
durch, dann erledigen sich viele Fragen.

Alle infos und downloads findest du unter
http://www.mikrocontroller.net
http://www.avrfreaks.net
http://www.atmel.com

Bei Fragen nochmal melden...

Gruss
Arvid

von Anton (Gast)


Lesenswert?

Hallo

ich wollte mich bei allen über eure Beiträge bedanken, habe es jetzt 
auch geschafft.

Da ich Anfänger bin, komm ich mit AVR Studio nicht zu recht, deshalb 
habe ich mir das Programm WAVRASM oder so ähnlich runtergeladen, ich 
finde das ok, leider bräuchte ich jetzt noch die Befehle in deutsch 
damit ich die begreifen kann, was jeder Befehl so alles macht.

Vor 5 Jahren hantierte ich mit dem 80C535 herum, aber nur Schulische 
kenntnis d.h. wie dieser Chip wirklich funktioniert keine Ahnung, da wir 
ein fertiges ExperimentierBoard hatten, mussten wir nichts anderes tun 
als das programm zu schreiben und zu übertragen, das ich keinen blassen 
schimmer habe wie man den 80C535 extern mit einem EPROM beschalten tut 
kam mir der AT90S2313 gerade recht.
Nach 5 Jahren hab ich auch schon die Befehle und das handling für den 
80C535 vergessen.

Kennt jemand von euch deutsche Internet Seiten über den AT90S2313 
Befehlsatz und einigen Beispielen?

Was ich suche ist ein einfaches programm wo ich an Port B 7 Bit als 
eingang habe und je nach dem was für eine Bitkombination erscheint der 
Chip es erkennt und am Port D auch eine 7 Bit leitung den Code ausgibt.

Beispiel:

Schalter 1 ist an einen GAL16V8 angeschlossen - bei betädigen des 
Schalters taucht am Eingan des AVR eine 7 bit lange Kombination 
"0000001" die wird von dem AVR erkannt und steuert seinen Ausgang mit 
der Kombinations "0000001" da am ausgang auch ein GAL16V8 angschlossen 
ist, steuert es dann den jeweiligen Verbraucher.
Und immer so weiter.
Denn ich habe vor bei unserem Auto einige Knöpfe zu verändern, da die 
elektr. Scheibenheber nicht so komfotabel sind.

Aber alles mit der Zeit, erstmal will ich mal begreifen wie die Eingabe 
und Ausgabe im AVR geht.

Danke an Alle!

Gruss Anton

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hi Anton,

ich habe nicht ganz verstanden was du tun möchtest. Was ist das für eine 
"Kombination" die am Eingang "auftaucht"? Und wozu sind die zwei GALs 
gut? Ich wette die kannst du dir sparen.

Die allerersten Grundlagen zu Ein- und Ausgabe bei AVRs verrät dir 
http://www.mikrocontroller.net/tutorial2.htm . Wenn ich nicht so faul 
wäre, würde da ja schon ein bisschen mehr stehen... aber mal sehn, sind 
ja noch Ferien ;-)

Gruß
Andreas

von Anton (Gast)


Lesenswert?

Hallo Adreas,

es ist eigentlich ganz einfach, ich benötige viele Eingänge deshalb 
benötige ich den GAL am Eingang so ähnlich wie ein AdressCodierer!

Knopf 1 = "0000 001"
Knopf 2 = "0000 010"
Knopf 3 = "0000 011"
.
.
.
Knopf 30 = "xxxx xxx"

Sonst nichts!

Gruss Anton

von Arvid Teichtmann (Gast)


Lesenswert?

Hi Anton,

* wieso kommst Du mit AVR-Studio4 nicht zurecht???
* viele Einsteigerinfos findest Du hier auf dieser Seite
* Port-Eingabe und Ausgabe geht mit den Befehlen
out, in, sbi, cbi
* Befehlssatz findest du unter http://www.eu.atmel.com unter
Microcontroller / AVR  Datasheet  Instruction Set
* um Englisch wirst du nicht herumkommen im Elektronik- bzw.
Computerbereich
* Schreibe bitte genauer, was du nicht verstehst

Gruss
Arvid

von Karlheinz (Gast)


Lesenswert?

also das mit den GAL´s kapier ich nicht
du kannst doch an die eingangsports des controllers direkt deine 
schalter anschliessen ......
und wieso willst du am ausgang das gleiche ausgeben wie am eingang 
ansteht ? wofür dann der controller ?
vielleicht solltest du dich erst mal mit den grundlagen von 
mikroprozessoren befassen und bei der gelegnheit auch deine 
englischkenntnisse verbessern (denn da kommst du wirklich nicht 
drumherum)
dann kommst du vermutlich auch mit dem avr-studio zurecht, denn ich 
finde das ist eine der genialsten und einfachsten systeme für die 
avr´s...

von AntonWorld@gmx.de (Gast)


Lesenswert?

Hallo Karlheinz,

also ich hatte schonmal mit Microcontroller der Fam. 80C535 zu tun, aber 
bitte!

Wofür soll der GAL sein, also ich erkläre es dir es sei denn du kannst 
mir an dem AT90S2313 mehr als 15 Taster anschließen, wenn du das 
schaffst , dann verbeuge ich mich und ich benötige den GAL wirklich 
nicht.

Ansonsten muss ich meine Variante mit dem GAL durchziehen.

Das Studio Prgramm brauch ich nicht, ich hab einen spez. Editor 
runtergeladen und der reicht mir vollkommen.

Also man hört sich.

Gruss Anton

von Karlheinz (Gast)


Lesenswert?

also ich wollte dich wirklich nicht beleidigen, sorry wenn das so ankam
aber ich habe neulich erst im usenet einen beitrag gesehen wo einer 
fragte  warum der assembler kein komma bei dezimalzahlen akzeptiert ....

also: SORRY

anyway, schon mal ueber eine eingangsmatrix fuer deine taster 
nachgedacht ?
zum bleistift 3 ausgaenge nacheinander setzen und 3 eingaenge abfragen 
welcher dabei jeweils gesetzt ist ?
3 in x 3 out = 9 taster
4 in x 4 out = 16 taster

von Anton (Gast)


Lesenswert?

Hallo Karlheinz,

sorry, auch wegen mir, ich hätte nicht so direkt sein sollen.

Ich hatte auch schon einige Beiträge wo ich harte Antworten bekommen 
habe, als ob es voraussetzung sein müsste die Sachen zu wissen, dann 
bräuchte ich auch keinen Forum mehr wenn ich alles wissen würde :-)

Aber egal, dein Vorschlag mit dem Crosspoint-Schalter (4x4X) z.B. 22100 
ist auch keine dumme Idee :-) Der nachteil ist natürlich wieder müsste 
ich Bestellen, komme nicht mehr von einer gróßstadt wo es 
elektronikläden gibt fg und die GAL*s hätte ich hier in massen!

Bei einem stell ich mich total blöd an, (sorry wenn es für dich jetzt 
ein bisschen sich blöd anhören tut :-)) kann ich wenn ich z.B. jetzt 
meinen AT90S2313 4 Tatster anschließen und jeden Taster mehrere 
funktionen einprogrammier, aber so das jeder Taster jeder Zeit drückbar 
ist obwohl einer von den vier gedrückt sind? Ich hoffe du bist 
mitgekommen fg

Beispiel: Fensterheber ich drücke auf dem Knopf ca. 2sek lang dann fährt 
meine Scheibe hoch, parallel dazu drückt meine Freundin von Ihrer Seite 
Ihr Taster öfter um an die richtige position mit Ihrem Fenster zu 
fahren.

Was ich eigentlich mit dem AT90S2313 machen wollte eine Inteligente 
Fensterheben Steuerung bei meinem Auto, ob es sich rentiert ist ne 
andere Frage :-) Da es mich aber nervt immer die Fenster hochzufahren 
bevor ich den Zündschlüssen zurückdrehen muss.

Das war bei meinen Eltern im OPEL OMEGA B viel komfortabler :-) und das 
wollte ich natürlich nachmachen, meine Kenntnisse sind schon ein wenig 
eingerostet, aber mit der Zeit fallen mir immer ein paar Sachen von 
damals wieder ein :-)

Also nichts für ungut Karlheinz auch wegen vorhin bei meiner Antwort!

Danke!

Gruss Anton

von Karlheinz (Gast)


Lesenswert?

naja, solange die taster nicht am selben input-pin liegen geht das 
natürlich
man müßte sich halt vorher überlegen welche taster parallel gedrückt 
werden können und auch entsprechend ausgewertet werden müssen

ich will dir ja auch keine GAL´s oder so ausreden ...
ich würde halt prinzipiell so wenig bauteile wie möglich verwenden
( schon alleine deshalb weil jedes ja eine fehlerquelle darstellt)

aber so langsam komme ich dahinter was du eigentlich willst *grins
und da ich eigentlich gar keine erfahrung mit GAL´s habe würde ich zur 
not einen dezimal-bcd wandler einsetzen

aber warum mußt du irgendwas bestellen wenn du eine tastaturmatrix an 
den controller anschliessen willst ?

 IN 1   |--/--/--/--/-
 IN 2   |--/--/--/--/-
 IN 3   |--/--/--/--/-
 IN 4   |--/--/--/--/-
              |  |  |   |
 OUT 1 --|  |  |   |
 OUT 2 ----|   |   |
 OUT 3 -------|    |
 OUT 4 ----------|

die ausgaenge 1-4 werden nacheinander gesetzt und dann jeweils
anhand der eingaenge ermittelt welche taster gedrückt sind

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Siehe auch den entsprechenden Beitrag im "Codesammlung"-Forum.

PS: ASCII-Malereien funktionieren hier im Forum nicht, also am besten 
als Textdatei im Anhang posten.

von Karlheinz (Gast)


Lesenswert?

danke für den tipp, bin halt recht neu hier im Forum :-)
andrerseits: wenn ich was male ist das eh nicht zu erkennen, ob im als 
ASCII oder als Textanhang :-)

von Anton (Gast)


Lesenswert?

Hallo Karlheinz,

ja, so wenig bauteile wie möglich will ich nähmlich auch :-)

Ich mag eh keine protzige Schaltunge, sag mal kennst du Eagle?

Wenn ja weißt du wie man Schaltungen Zeichnet und das das Programm die 
Leiterbahnen automatisch berechnet?

Ne, du verstehst was falsch, ich hab keinen Matrix IC, muss  ihn erst 
bestellen :-(

Ein GAL ist was wunderbares :-)
Das muss du dir unbedingt aneignen :-)

Gru Anton

von Karlheinz (Gast)


Lesenswert?

eagle ist wohl das am weitesten verbreitete layout proggi, allerdings 
muss ich gestehen dass ich mich damit nicht auskenne, das gehört wohl 
auch nicht in das forum hier
aber wie gesagt, was willst du mit einem matrix ic (was immer das auch 
sein mag)?

von Anton (Gast)


Lesenswert?

Hallo Karlheinz,

ich denk wir reden die ganz Zeit ein wenig vorbei, erklär mal wie so 
eine EingangsMatrix bei dir so aussieht, also so wie ich das verstanden 
habe ist das kein IC, und was soll das sonst sein?

Mit dem GAL, wollte ich so eine 64 bit eingans-MATRIX realisieren.

Pin 1 des Gals ist ein Eingang an dem ein Taster angschlossen ist, und 
am Ausgang des Gals das 7 bit breit ist, also 7 Pins, soll  "0000 001" 
Ausgegeben werden.

und immer so weiter

Gruss Anton

von peter (Gast)


Lesenswert?

Hi Anton

schon mal an einen 74hc151 gedacht?
3 Pins vom AVR als Ausgänge und 1 Pin als Eingang schalten.
Schalternummer ausgeben und Du kannst am Eingang den Zustand abfragen. 
Damit sind dann auch Kombinationen (Schalter 1+3) möglich, die Abfrage 
läuft ja seriell. Und so ein 151er kostet bei Reichelt z.B nur 0.25 
Euro.

1 IC, 3 Ausgänge, 1 Eingang -> 8 Tasten
2 IC, 3 Ausgänge, 2 Eingänge ->16 Tasten (das hab ich vor)
9 IC, 6 Ausgänge, 1 Eingang -> 64 Tasten

peter

von Karlheinz (Gast)


Lesenswert?


von Karlheinz (Gast)


Lesenswert?


von Anton (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich verstehe nicht warum ihr alle so kompliziert denkt!
Es geht doch viel leichter und kompfortabler mit einem GAL!

Also wie ihr sehen könnt ist mein GAL1 als Input geschaltet, dort kann 
ich 8 Taster anschließen, wenn ich einen Taster drücke, dann Codiert der 
GAL das Signal als 7 Bit Code an den AT90S2313.

Der AVR hat jetz die Aufgabe, das gesendete Signal am Port B zu 
enschlüsseln.

Dabei wir am Ausgang des AVR der gleiche 7 bit Code an dem Port D 
gesendet und gelangt in den GAL2, so das der GAL dann weiß welchen Motor 
er steuern soll!

So kann ich beliebige viele Taster und verbraucher anschließen wie ich 
mag! Aber nicht mehr als 7bit Kombinationen.

Da wo der GAL1 ist kann ich Parallel an den Port B noch einen 2ten GAL 
anschließen und die 7 bit Leitung zum AVR verbinden und keinen extra Pin 
von dem AVR verbrauchen. Und am Ausgang des AVR's genau das selbe.

Wer mit der beigefügten TXT Datei nichts anfangen kann, zeichne ich gern 
die Schaltung neu aif ein Papier und Scan dies ein.

Gruss Anton

von peter (Gast)


Lesenswert?

Du willst also so eine Art Prioritätsencoder bauen und die Ausgänge der 
GALs verbinden? Dann mußt du Die anderen hochohmig schalten. Wie 
steuerst du das? Wenn Du 2 Taster gleichzeitig betätigst, hast Du sonst 
eine Art Kurzschluß oder eine völlige Fehlinterpretation der Tasten.

Mit einem 7 Bit Eingangswert hast du nur 128 Kombinationen!
Willst Du beliebige Kombinationen zulassen kannst Du nur 7 Schalter 
anschließen. Willst du max. 2 gleichzeitig abfragen, dann max. 16 
Schalter.
16 Schalter bedeutet 16*15/2=120 Kombinationen (*).
17 Schalter bedeutet 17*16/2 = 136 > 128 Kombinationen, also zuviel.

Ich sehe noch nicht wie Deine Lösung funktionieren soll, außer wenn du 
sicherstellen kannst, immer nur eine Taste zu drücken.

Meines Meinung nach entweder die Multiplexerlösung mit dem 151er (o.ä.) 
oder eine Tastaturmatrix mit einer Hand voll Dioden und, wenn du Ports 
sparen mußt, zusätzlich Schieberegister oder (74138, 74154...) für die 
Zeilenauswahl.

peter

PS: (*)die Logikschaltung für 16 Schalter will ich sehen, kein Eprom 
bitte :-)

von Peter (Gast)


Lesenswert?

Also ich hab da mal eine ziemlich trickreiche Schaltung zur Abfrage 
einer Tastaturmatrix gesehen. Und zwar kann man, wenn man über Ports 
verfügt, die sich sowohl als Ein- als auch als Ausgänge schalten lassen 
(ist ja beim AVR gegeben), durch Einfügen von Dioden in die Matrix der 
Tastatur das Ganze mit total wenigen (Einzel-)Ports abfragen. Leider 
finde ich die Schaltung nur nicht mehr, die war nämlich einfach genial.

Gruss, Peter

von AntonWorld@gmx.de (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Peter,

ok, das mit dem GAL's geb ich ja zu, das hat mich auch gestört, das ich 
keine mehreren Kombinationen machen konnt, aber das wollt ich ja 
ausprobieren, da ich wie schon erwähnt außer Übung bin und für mich 
nicht auf anhieb alles Logisch  erscheint, deshalb liebe ich ja dieses 
Forum und schreib erst meine unperfekten Ideen in das Forum und warte 
auf kritik oder verbesserungen. :-)

Ok ich hab mir mal gedanken gemacht was du erzählt hast, mit dem 74151, 
jedoch ersetze ich den 151 auf 74150, das ist ein 16to1 Multiplexer. 
Anbei schicke ich als Anhang eine unvertige Konstruktion mit 16 
Eingängen und 16 Ausgängen, die Seriell in den AT90S2313 eintreffen und 
augegeben werden.
Dabei verhält sich der AVR mit den restlichen Ports (PB1,PB2,PB3,PB4) 
wie ein Zähler und Taktet die beiden De- und Multiplexer.

Was meinst du ist es jetzt besser?

Wenn ich z.B. jetzt 32 Ein/Augänge möchte benutze ich die restlichen 
Ports, oder? Oder gibt es eine Kaskadier möglichkeit? mit den 
Multiplexer?!

Sag mal, das Register wo du gemeint hattest? Speichert die Eingaben ab 
und gibts sie dann weiter? Kannst du mir mal einen nennen? Ich hab mit 
Registern nicht so viel am Hut :-)

Gruss Anton

von peter (Gast)


Lesenswert?

Hi Anton,

die Eingangsseite sieht gut aus, vom 150er hab ich kein Datenblatt 
(obwohl ich mir fast 600MB, das sind >1000 pdf's, von 
http://www.philipslogic.com auf meinen Rechner gespiegelt hab), aber 
wenn der wie der 151er arbeitet ist das genau das, was ich mir 
vorgestellt habe. Eingänge vom Multiplexer mit Pullup versehen und dann 
per Taster auf Masse legen.

Bei 32 Eingängen baust Du die gleiche Seite für den Eingang nochmal und 
nimmst einfach einen 2ten Eingangspin. Für den Zähler natürlich auch 
wieder PB1-PB4 nehmen. Das ist wohl das Einfachste.

Ich sehe kein Problem darin, Multiplexer zu kaskadieren. Also 16 
Multiplexer mit je 16 Tasten in Ebene 1 und dann einen Multiplexer in 
Ebene 2 der die 16 Ausgänge der ersten Multiplexer auf einen Portpin 
(natürlich hier andere Portbits als Zähler verwenden, d.h. ein längerer 
Zähler).

Zur Ausgangsseite kann ich leider nichts sagen. Mein Entwurf (mein 
erster Versuch mit nen Microcontroller) existiert bisher auch nur auf 
elektrischem Papier (hab grad teilweise die Platine für CPU/RAM 
entworfen) und im AVR Studio. Und wenn man die Ausgänge in 
Multiplexverfahren immer nur kurz (ist ja nur max. 1 Pin Low, also 
selektiert) einschaltet könnte das ja je nach Verbraucher Probleme 
bereiten. (LED flackern vielleicht, Motoren laufen nicht an, Sirenen in 
Form eines Multivibrators funktionieren evtl. gar nicht....).

Ich brauche bei meinem Projekt (nen Reversi Spiel) 64 DUO LED's und 4 
7Seg. Anzeigen (160 Bit Daten). Ich hoffe mal das ich da auch irgendwas 
mit Multiplexen machen kann, hab wenig Lust 20 74373 Latches zu 
verbauen. Hängt davon ab, wie stark das ganze flimmert.
Ansonsten halt die IC-Grab Lösung, könnte ich dann leicht Memory Mapped 
bauen (ich nehm nen 8515 mit zus. 8K ext. SRAM)

Das mit dem Schieberegister bezog sich auf diese Standard 4*4 
Keyboardschaltung. Da wäre ja auch 32*4 oder so denkbar und die 32 
Anschlüsse, von denen dann immer genau einer selektiert wird, verbindest 
du mit den Schieberegistern statt direkt mit Portpins.

Peter

von AntonWorld@gmx.de (Gast)


Lesenswert?

Hallo Peter,

ok mal sehen wenn mich meine Freundin morgen lässt probier ich das mal 
aus mit dem Multiplexer die Bauteile müsste ich eigentlich alle da 
haben.

Wenn du den 74150 als Datenbtall brauchst scan ich ihn dir ein und 
schick ihn dir!

Das mit RAM und der Rest wo du erzählst hast, ist noch etwas hoch für 
mich! Aber kommt Zeit... kommt Erleuchtung fg

Also machs gut man hört sich :-)

Gruss Anton

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.