Forum: PC-Programmierung 12 Led's mit C++ ansprechen atmega128


von kritzel (Gast)


Lesenswert?

hallo!

also ich habe einen Atmega128 über einen RS232 an den Com1 anschluss
meines win2000 pc's angeschlossen.

ich möchte die ganze sache mit winavr realisieren, weiß nur nicht genau
wie! (-;

ich möchte die LED's die an PB0-5 und PD0-5 angeschlossen sind
ansprechen und bei einer bestimmten eingabe (z.B. wenn ich 1 eingebe
leuchtet die led an PB0 und wenn ich 2 eingebe eben die nächste...usw.)
zum leuchten bringen!

habe die ganzen teile gestern zusammengelötet und mache mich jetzt ans
programmieren! leider ist das tutorial alles in assambler erklärt, hab
mir das schon ein paar mal angesehen!

ausserdem wie kann ich testen das überhaupt eine kommunikation zwischen
pc und µC stattfindet?!

gibt es seiten die ihr mir empfehlen könnt die sich mit der
programmierung von µC beschäftigen und auch tutorials anbieten?!

danke schonmal fürs antworten!

mfg christoph

von Sebastian (Gast)


Lesenswert?

testen kannst das in dem du ein programm auf den avr schiebst was dir
das empfangene zeichen zurück sendet.

von kritzel (Gast)


Lesenswert?

schön...hört sich gut an...jetzt muss ich nur noch wissen wo ich so ein
programm herbekomme(bzw. wie ich selbst eins schreibe), wie ich das auf
den avr schiebe und wie ich dann feststelle das das zeichen zurückkommt!
sorry mach das zum ersten mal und hab keine ahnung...

von Kay (Gast)


Lesenswert?

hi,

ganz einfach:

Du schreibst für den uC ein Programm, das dir, wenn eine 1 über die
serielle kommt, PortB.0 = 1 macht. schau mal auf

http://www.rowalt.de/mc/index.htm

da findest du, wie man die serielle des AVR "bedient". Der rest ist
dann ein kinderspiel !

mfg Kay

von tex (Gast)


Lesenswert?

wenn Du noch so wenig mit uCs und Programmierung gemacht hast, ist die
Serielle Schnittstelle vieleicht ein bisschen zu heftig. Du musst Dir
ja auch überlegen, wie Deine LED wieder ausgehen soll, ...
Versuch doch erst mal ein ganz keines Programm, mit ein paar Tastern,
die die LEDs an Deinen Ports ein und ausschalten und hangelst Dich so
zur seriellen Schnittstelle vor.

von kritzel (Gast)


Lesenswert?

Taster? ich habe keine Taster!das muss so funzen weil dieses projekt
wenn es funktioniert hier in der firma eingesetzt werden soll...bin
azubi...ich hab ja zeit rauszufinden wie das geht! (-;

die lampe soll so lange leuchten bis ich die nächste eingabe mache...

ehrlich gesagt würde mir für den anfang auch reichen wenn überhaupt mal
was leuchtet wenn ich irgendwas drücke!

von Sebastian (Gast)


Lesenswert?

was genau soll das denn werden wenn es fertig ist??

von kritzel (Gast)


Lesenswert?

ich arbeite in einem logistic zentrum und die wagen in die die leute die
waren legen, haben 12 fächer! wenn ein mitarbeiter mit einem scanner
(der zwischen tastatur und pc ist) eine productnummer einscannt soll
das passende licht am passenden fach des wagens leuchten! ich habe
jetzt das ganze in klein auf einer platine zusammengelötet und brauche
einfach mal ein programm das LED's anspricht(über den com1 am pc zum
atmega128). wenns geht in c++! ich weiß aber immer noch nicht was für
ein programm ich überhaupt nehmen soll..es gibt so viele! habe jetzt
winavr, das scheint gut zu sein!

ausserdem bin ich mir immernoch nicht sicher ob ich das überhaupt
richtig zusammengebaut habe! es ist doch richtig das ich rxd vom µC an
txd am PC geschlossen habe!oder?!eigentlich logisch... (-:

von Kay (Gast)


Lesenswert?

Wenn du jetzt Zeit hast ( hast du ja gesagt ), dann fang erstmal an,
dich mit der Programmierung des Atmega zu beschäftigen. häng an den
mega erstmal Led´s ran und lass die blinken. schritt für schritt, sonst
wird das nix. und ohne eigeninitiative wird das eh nix. hier bekommt man
nix geschenkt :-)

von kritzel (Gast)


Lesenswert?

@kay

genau das was du mir gesagt hast habe ich ja vor! ich möchte mich an
das thema herantasten! aber ich brauche auch die mittel um mich
heranzutasten (-; z.B. das passende passende c-programm und natürlich
muss ich auch genau wissen ob ich das auch alles richtig
zusammengelötet habe.

in meinen gedanken lief das das ungefähr so ab:

1.wow...mein chef hat mir ja mal ein richtig cooles projekt aufgegeben
2.ich suche einfach im netz nach der passenden lötanleitung und nach
der passenden programmiersoftware

...so..schön wärs! ausser dieser seite habe ich nichts brauchbares
gefunden! und deswegen poste ich hier was das zeug hält! (-;

von icke (Gast)


Lesenswert?

Also die passende Programmiersoftwäre wäre der gcc. Da gibt es im wiki
eine sektion, wo der Umgang mit dem erklärt ist und wo man ihn
runterlädt. Außerdem eine Programmieranleitung, so a'la ich kann
bißchen c und will jetzt programmieren. Echt ganz gut.
Persönlich nehme ich zum programmieren den ISP vom STK500, aber man
kann auch mit gcc kostenlose Software und gebaute Programmierdongels
einsetzen. Das steht auch im wiki, konktret wärs wahrscheinlich
empfehlenswert da konkret die Leute hier zu fragen, die es so ganz
kostenfrei machen. Aber ich würd mir das STK mit Erweiterungsboard
kaufen - ist für eine Firma preislich Kinderkacke und dürfte diesen
Preis mit einem gesparten Entwicklungstag auch wieder rausholen.

Für den PC habt ihr in der Firma hoffentlich einen Compiler. Das ist
meistens der Fall. Ich glaub es gibt auch kostenlose c compiler für
win32, aber kenn ich mich nicht aus. Allerdings habe ich auch noch nie
erlebt, daß eine Firma da kein Microsoft Produkt hat...


Dein Post ist aber bißchen zweideutig: was z.B. ist 'das passende
C-Programm...' Da denkt jeder du meinst ein Programm was das macht,
was du brauchst und nicht '..die passende Programmiersoftware..'

Wenn du dir aber erst mal aneignen musst, wie der avr funktioniert, wie
du seine Harware programmierst (und das ist das was Kay meint!) dann
dauert das natürlich ein wenig. Vielleicht nimmst du dann einen
Controller den du kennst. (Falls du schon einen kennst).
C kannst du hoffentlich, denn wenn du das lernen musst brauchst du
Nerven aus Stahl - dann wäre ein Programmierpaket wie Bascom und Visual
Basic vielleicht eine gute Wahl, um rein handwerklich nicht ausgebremst
zu werden.

von Mike (Gast)


Lesenswert?

Das Programm an sich ist easy, wenn man weiß wie es geht. Das du keine
Infos im Netz gefunden hast nehme ich dir nicht ab, selbst auf dieser
Seite gibt es massig Links, die auf weitere Tutorials verweisen. Es
gibt genug Codeschnipsel zu dem Thema, die du nur noch zusammensetzen
musst.

Wenn du glaubst, dass dir jemand die komplette Arbeit abnimmt, bist du
glaube ich auf dem Holzweg. Dafür ist ein Forum nicht da. Wenn du
finanziell flüssig genug bist, stände dem natürlich nichts im Weg.
Schließlich wirst du für deine "Arbeit" ja auch entlohnt.

Du schreibst zigmal, dass du dir wegen des Schaltplans nicht sicher
bist. Warum postest du ihn nicht einfach?

von noob (Gast)


Lesenswert?

Ist der mega128 nicht auch etwas überdimensioniert, zum Empfang eines
Zeichens über rs232 und leds anknipsen?
Da könntest du vielleicht besser einen kleineren nehmen. Spart ja auch
Geld.

von Sebastian (Gast)


Lesenswert?

der mega128 ist ganz sicher sogar etwas zu viel, aber naja... ich
verfahre manchmal ähnlich. am anfang nimmt man das größte was da ist
(zu experimentieren) damit man alle möglichkeiten ausprobieren kann.
wenn dann die experimentierphase abgeschlossen ist sucht man das am
besten passende gerät (avr) aus und paßt das ganze darauf an. so
vermeidet man, daß man z.b. dem m8 kauft und dann feststellt, daß man
für sein vorhaben 2 io pins zu wenig hat. den m128 würde ich aber
trotzdem nicht nehmen da ich die nicht tqfp avr´s bevorzuge... weil die
anderen passen besser auf ne lochraster-platine, was am anfang irgendwie
praktischer ist

von kritzel (Gast)


Lesenswert?

@mike

ich hab wirklich viel zeug im netz gefunden nur weiterhelfen tuts mir
irgendwie nicht!

ich möchte auf KEINEN FALL das mir hier jemand die komplette arbeit
abnimmt! ich finde das projekt was mir mein chef aufgegeben hat sehr
interessant und möchte das wirklich weitestgehend selbst machen!aber
ich kann keine theorie in praxis umsetzten wenn ich keine theorie
kenne!

@ all
den schaltplan poste ich gleich nochmal!

habe hier c++ builder und winavr! ich denke das reicht zum
programmieren! so wie ich das jetzt aus mehreren beiträgen rauslesen
konnte ist das programmieren über rs232 ein ziemliches problem!

ich habe das im moment so das der pin2 (empfang am pc) an an den TxD
des µC gelötet ist und der PIN3 an RxD und natürlich GND auch an GND am
µC.
ponyprog findet zum beispiel das µC nicht...also ist glaube ich mit der
schaltung schon was nicht ok...am besten fotographiere den ganzen kram
und poste mal alles! (-;

von icke (Gast)


Lesenswert?

Hast du denn schon was fertig? Speziell die PC Seite - kann der PC schon
verstehen, welche Produktnummer eingescannt wurde?
Wenn das geht kannst du den Code für LED Nr. xyz ja erst mal an einen
anderen PC mit Terminal senden.
Wenn der da ankommt ist ja der Schritt den avr anstelle Terminal dran
zu hängen nicht mehr weit.
Dann versuchst du die Zeichen im avr zu empfangen und wenn das klappt,
machst du die LED, die zum gesendeten Code passt an.

Ich würde vorschlagen, daß du das in etwa so anpackst. Parallel kannst
du dich in die avrs einarbeiten, sprich mit einem Taster LEDs
manipulieren, oder so. Um dich mit ihm anzufreunden.

Hast du denn (schon?) ein konkretes Problem? Außer, daß der avr nicht
erkannt wird. Da klärt sich ja vielleicht - ich würde aber nicht bloß
die Schaltung abphotografieren, sondern auch den Schaltplan posten.

von Sebastian (Gast)


Lesenswert?

aber du hast doch einen pegelwandler dazwischen oder??

von Mike (Gast)


Lesenswert?

"aber ich kann keine theorie in praxis umsetzten wenn ich keine
theorie
kenne!"

Da bin ich komplett deiner Meinung. Deshalb lies:

http://www.google.de/search?hl=de&q=avr+tutorial&btnG=Google-Suche&meta=
Dort findet man bereits 3-4 nützliche Links.

Weiter geht es dann mit:
http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial

Danach sollten weder schaltungs- noch programmiertechnisch größere
Hürden bestehen. Allerdings hätte dieser Schritt vor dem Zusammenlöten
irgendwelcher Bausteine kommen sollen. Aber aus Fehlern lernt man :)

von kritzel (Gast)


Lesenswert?

@ sebastian

ich benutze einen crumb128 v2.0, da ist der max232 schon eingebaut!

von icke (Gast)


Lesenswert?

Zuerst: schwingt der Quarz? Hat das Modul an den Oszillator Pins Takt?
Reset i.O.?

von kritzel (Gast)


Angehängte Dateien:

Lesenswert?

hier ist mein komplettes datenblatt, alles was ich gelötethabe hab ich
mir daraus abgeleitet!
die kathode der LED's hab ich an PB0-5 und PD0-5 angelötet, die anode
ist mit einem widerstand verbunden der an vcc geht. wie hier
beschrieben: http://www.mikrocontroller.net/tutorial/io-basics.htm
an CON4 habe ich bei RxD die sendeleitung und bei TxD die
empfangsleitung des pc's gelötet! GND des rs232 steckers hab ich nicht
an CON4 sondern direkt an den µC an GND verbunden! An CON3 habe ich bei
VTG den pluspol des netzteils und bei GND den minuspol! das wars
eigentlich mit löten...

Ponyprog z.B. sagt immer unknown device...also irgendwas stimmt nicht!

@icke

wie kann ich feststellen ob "der quarz schwingt"? was Oszillator Pins
sind muss ich auch noch rausfinden und den reset habe ich zwar auf dem
datenblatt bei CON1 und J1 gefunden aber nichts daran angeschlossen!


ansonsten nochmal vielen dank für die vielen antworten...irgendwann
wenn ich alles verstehe hoffe ich euch auch mal weiterhelfen zu können!


PS: das dauert aber noch ein bisschen! (-;

von icke (Gast)


Lesenswert?

In dem Datenblatt steht doch, daß auf dem avr ein Bootloader installiert
ist, der voll stk500 kompatibel ist, d.h. du solltest damit dieses Modul
direkt mit dem gcc programmieren können, wenn du das stk500 als
Programmierinterface angibst und der Bootloader läuft.

von level1 (Gast)


Lesenswert?

Also wie ich dem Datenblatt entnehmen kann, hat das Teil
einen integrierten Bootloader, womit man mittels eines
Seriellen oder USB-Kabel die Firmware auf den µC bringt.
Deshalb Frage: Lag bei dem Modul ein Serielles oder USB-
Kabel dabei?

Entweder Seriell: Du mußt PF7 mit einem Widerstand gegen Masse
brücken.

Oder USB: Du mußt PF6 mit einem Widerstand gegen Masse
brücken.

Wenn du so weit bist und hast das Kabel angeschlossen
(nimm am besten das/ein Serielle Kabel), dann öffne ein
Terminalprogramm (unter Windows -> Hyperterminal),
stelle die Parameter ein für COM 115200/8/N/1 und gib dem
Teil Strom. Wenn es sich meldet, ist der erste Schritt getan,
ansonsten 3 mal ! drücken und warten, ob was passiert.

Sollte das so weit funktionieren, dann kannst du mit
dem Programmieren fortfahren.

von kritzel (Gast)


Lesenswert?

@level 1

das ist mal ne beschreibung mit der ich echt was anfangen kann...sehr
schön!

ich habe ein nullmodemkabel...das müsste funzen!

ich benutze einen 1k5 widerstand...finds voll blöd das man im
datenblatt null angaben zu solchen dingen wie werte von widerständen
die man benutzen soll findet! aber naja..dafür gibts ja hier fähige
Leute! (-;

von kritzel (Gast)


Lesenswert?

hmmm...hab alles so gemacht...aber nichts passiert...hatte soviel
hoffnung...ich kotz!

irgendwas mach ich falsch...nur was?! grübel

von Kritzel (Gast)


Angehängte Dateien:

Lesenswert?

unfassbar aber war: ES HAT EIN ZEICHEN GESENDET!!! freu

aber jetzt habe ich folgendes problem, die kontrolllampe am µC flackert
kurz wenn ich strom drauf gebe und geht dann aus! aber in der zeit in
der es geflackert hat, hat es die zeichen in meiner angehängten datei
"gesendet"!

von Andreas Siebel (Gast)


Lesenswert?

Du hast doch die Anleitung zu diesem Modul. Da steht doch alles drin was
das Dingen wann machen soll. Oder?!?!!?

Dann gibts da noch ein Bedienungshandbuch für!!

Ich hab auf der Seite http://www.chip45.com/ gelesen, dass es von dem
Modul ne Serie gibt, in der der Bootloader nicht richtig funktioniert.
Wenn du so eins hast, brauchst du erstmal nen anderen ISP (In System
Programmer) z.B. der auf der PonyProg Seite beschrieben ist, um damit
dann den Bootloader zu erneuern.

Meine Meinung ist, dass dieses Modul für den Einstieg überhaupt nicht
geeignet ist und dass du dir erstmal die Grundlagen über
Mikrocontroller aneignen solltest. Wenn du einen AVR nehmen möchtest,
dann mach dich über die Programmierung schlau. Einfach und leicht
nachzubauen ist das Programmierinterface von der PonyProg Software.
Dann kannst du auch alle AVR's programmieren.
Die ganze Geschichte funktioniert über die Pins MISO MOSI SCLK und
RESET. Wo die Dinger an dem AVR liegen Siehst du im Datenblatt
(www.atmel.com), in dem  du dann gleich mal weiter stöbern kannst.
Wenn du den Programmer (ein paar ZDioden, nen Transistor und n paar
widerstände) hast und den AVR mit ihm verbunden kannst du ihm mal mit
PonyProg "Hallo" sagen und ihn mal auslesen, mal die
Configurationbits anschauen und im Datenblatt gucken, wofür die denn da
sind. Bis jetzt musstest du noch keine Beschaltung am AVR vornehmen.
keinen Quarz oder sonstwas. "Nur" Spannung muss anliegen.

An deiner Stelle würde ich mir jetzt also nen ATmega32 beschaffen. Der
hat genügend Pins für deine Anwendung und du wirst ihn erstmal wohl
schwerlich ausreizen können. Ausserdem gibts den im DIL-40 Gehäuse,
welches du am besten mit einem Sockel auf ne Lochrasterplatine bringst.
Auf die kannst du auch das Programmierinterface auflöten.

Ich denke mit dem Board, was du jetzt hast, schlägst du dich mit viel
zu viel Sachen rum, die du NOCH nicht beherrscht. Fang klein an und
schaffe dir ne gesunde Basis, auf die du Aufbauen kannst. Du bist ja
schließlich in der Ausbildung und willst was lernen und nicht einfach
irgendwas irgendwie hinwursteln.

von kritzel (Gast)


Lesenswert?

hi andreas!

also das ist mir auch alles klar das der µC viel zu heftig für mich als
anfänger ist! aber ich kanns nun nicht mehr ändern, anscheinend funzt er
ja nur mit der stromversorgung habe ich probleme...wie gesagt, die lampe
flackert kurz und bleibt dann aus! aber in der zeit in der sie flackert,
sendet er etwas...also bin ich doch schonmal auf einem guten weg!
oder?!

und das mit dem hinwurschteln...da hast du auch absolut recht! ich habe
mir sogar überlegt ein µC projekt als abschlussarbeit zu machen!
größenwahn lässt grüssen, aber bis dahin habe ich hoffentlich das
stromproblem unter kontrolle! (-;


ich kann mir einfach nicht vorstellen was es sein könnte und somit
werde ich das wohl so machen das ich bis auf strom ALLES von dem µC
entferne..mal sehen was der strom dann macht!

von Andreas Siebel (Gast)


Lesenswert?

Hast du die Baudrate im Hyperterminal richtig eingestellt??

Welche Lampe fackelt kurz?

von kritzel (Gast)


Lesenswert?

hab ein bisschen nachgeforscht...naja eigentlich hab ich nur einen satz
in dem datenblatt gelesen...und die LED die da kurz flackert ist die
status LED vom bootloader! und die flackert beim stromgeben immer 3
mal! also scheint der strom richtig anzuliegen!

von Till Backhaus (Gast)


Lesenswert?

Muss es unbedingt mit Microcontroller sein? Sonst muesstest Du 12LEDs
auch noch mit dem Parallelport ansprechen koennen... Dann wird gar
keine Microcontroller benoetigt.

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.