Microcontroller bequem in C programmieren

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 06 10 2024  15:09:41      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
Microcontroller bequem in C programmieren

    







BID = 355490

Calidus

Stammposter



Beiträge: 291
Wohnort: Nördlich vom A*** der Welt
 

  


Mahlzeit, Leute.

Nachdem ich nun das Wochenende nicht da war, stelle ich heute traurig fest, dass der alte Beitrag weg ist.

Also, es geht um:

* eine Gewichtsmessung mit einer Waage mit einer seriellen Schnittstelle
* eine Bargraf-Anzeige der Ergebnisse mit einer LED-Kette
* Verstellen der Bargraf-Anzeige mit Hilfe von zwei Knöpfen "zu viel" und "zu wenig", so dass die mittlere grüne LED nur bei dem perfekten Gewicht aufleuchtet
* Damit das geht, will ich auch die Ergebnisse speichern. Ich brauche knapp 10 Bytes Datenspeicher.

Das alles wollte ich nach einer Empfehlung von hier mit Pics machen, weil man die anscheinend in C Programmieren kann und weil hier auf eine Seite mit Tips und Tricks zu Pics verwiesen wurde.

Meine Fragen waren nun:
- Habt ihr Empfehlungen für die Auswahl von Pic, Programmer und Entwicklungsumgebung?

Tut mir Leid um eure Beiträge, ich habe gesehen da waren schon sieben Antworten. Ich habe leider nur die erste lesen können, bevor ich erst verreist bin und dann das Forum nicht mehr so wie früher war.

BID = 355642

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein

 

  

Hier im Forum werden 2 familien bevorzugt: PICs und AVRs.
Zu PICS : ... hab' ich keine Ahnung
zu AVR: Entwicklungsumgebung Software: WinAVR - C - Entwicklungsumgebung (kostenlos, GNU)

Hardware: vom Billig - Progger (ISP In System Programmer mit nur ein paar Widerständen am Printer - Port des PC) bis zum STK500 Starterkit von Atmel (kommt gleich mit Tasten und LEDs für die ersten Programmierversuche und mit der ges. ATMEL Entwicklungsumgebung in Assembler Sprache).
Tutorial im Internet ist ebenso vorhanden (links findest Du hier im Forum)
Für Deine Aufgabe dürften schon uC vom Typ ATtiny2313 o.ä. genügen.
Die haben einen seriellen Eingang und genügend Ein- und Ausgänge füe einige LEDs.

BID = 355650

Ltof

Inventar



Beiträge: 9324
Wohnort: Hommingberg

Zu PICs: ich programmiere nur in Assembler. Als Programmer benutze ich ganz gerne den PicKit 2 für "mal eben schnell".

Hier nochmal der Link: http://www.holger-klabunde.de/ (da werden aber nicht nur PICs behandelt)

Ich kann Dir nur raten, Dich dort und anderswo einzulesen und Dir eine eigene Meinung zu bilden. Und wenn Du hier hundert mal nachfragst, was zu empfehlen ist - Du wirst keine "richtige" Antwort bekommen - nur persönliche Erfahrungen und Meinungen. µC-Programmierung ist fast wie Religion. Jeder hat einen anderen "Glauben".

Nochwas: streiche das Wort "bequem" aus Deinem Vokabular!

Bis Du "bequem" mit µCs arbeitest, hast Du eine "unbequeme" Zeit. Wie lange und wie hart diese ist, hängt von Deinen Fähigkeiten und Durchhaltevermögen ab.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

[ Diese Nachricht wurde geändert von: Ltof am  2 Aug 2006  8:19 ]

BID = 355818

Calidus

Stammposter



Beiträge: 291
Wohnort: Nördlich vom A*** der Welt


Im Studium fand ich Microcontroller proggen auch bequem. Register gemäß Datenblatt einstellen, Extern-Kram an die Pins anklemmen, das hat so gut wie immer nach einer halben Stunde funktioniert.

Allerdings hatte ich dort eine lauffähige Entwicklungsumgebung, ein komplett entstörtes Mikrocontrollerboard mit fertiger Außenbeschaltung und um den Programmer brauchte ich mich auch nicht kümmern.

Also erwarte ich hier natürlich ein bisschen mehr Schwierigkeiten.

Religionen finde ich gut, denn wenn man beiden Seiten zuhört hat man meist am Ende etwas brauchbares herausgefunden. Zum Beispiel, dass der Pic oft C versteht, und jetzt weiß ich auch dass es ein C - "WinAVR" gibt, das ebenfalls funktioniert.

Nü ja, ich mach mich dann mal auf die Internetsuche.

[ Diese Nachricht wurde geändert von: Calidus am  2 Aug 2006 17:35 ]

BID = 355822

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Der Pic versteht garnix. Der versteht nur Maschinencode, der für seine CPU assembliert wurde.

Und jedes C-Programm wird compiliert (also vom C-code in Assemblercode und dann assembliert).


Das WinAVR ist aber nicht für PICs, sondern für AVRs. Damit wirst du nur lauffähigen Code erstellen können, der auf AVRs rennt.

_________________

BID = 355826

Calidus

Stammposter



Beiträge: 291
Wohnort: Nördlich vom A*** der Welt

Ja, das hatte ich beides bereits verstanden.

Deswegen habe ich ja auch wieder die Qual der Wahl und beide Sorten erwähnt: Bei Pics habe ich nämlich auch Gerüchte von C-Programmierumgebungen gehört.
An dieser Stelle wäre vielleicht ein Google-Suchwort zum finden der Pic-Umgebung auch hilfreich. Ich finde ja jede Menge Seiten aber irgendwie nicht das richtige.

BID = 356057

cholertinu

Inventar



Beiträge: 3755
Wohnort: CH

Falls das ganze etwas kosten darf: PIC-C ANSI Compiler von Hitech http://www.htsoft.com/

BID = 356059

Her Masters Voice

Inventar


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 5308
Wohnort: irgendwo südlich von Berlin

für Infos zu PICs ist immernoch http://www.sprut.de die beste Anlaufstelle.

_________________
Tschüüüüüüüs

Her Masters Voice
aka
Frank

***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************

BID = 356155

Marino

Gelegenheitsposter



Beiträge: 85

Ich habe auch die ersten Schritte von sprut.de gelernt. Die Beispiele sind aber in Assemblercode, Du scheinst lieber mit C programmieren zu wollen. Dort kannst Du aber schauen, ob Assembler auch für Dich in Frage kommt.

Ich persönlich, habe mich für Assembler entschieden und Heute bin ich über diese Entscheidung sehr froh, ich habe es nicht bereut. Über diese Frage Assembler oder C habe ich am Anfang viel nachgedacht. Meine Einstellung war und bleibt: Assembler ist die PIC Muttersprache und so brauche ich keinen Dolmetscher, der kostet Geld und wer weiß was er erzählt.

Zur Deiner Fragen.

Programmer: Für den Anfang empfehle ich den PICkit. Ich habe den alten PICkit1 und MPLAB-ICD-2. Der ICD-2 ist ein In-Circuit Programmierer und Debugger für nur 126 Euro, für den Anfang empfehle ich den aber nicht. Für 40 Euro bekommst Du den PICkit 2 einen PIC oder zwei und viel zu lesen, zum lernen ist das ideal.

Entwicklungsumgebung: Die Entwicklungsumgebung ist MPLAB und sie ist kostenlos. Für C-Dolmetscher habe ich keine Ahnung, eine mini Version ist glaube ich kostenlos???

Ich bestelle mein Zeug bei Microchip.com da bekomme ich alles, vergleiche aber bitte die Preise mit Conrad und den Anderen.

Gruß
Marino


BID = 356163

Calidus

Stammposter



Beiträge: 291
Wohnort: Nördlich vom A*** der Welt

Das waren gute Antworten, Danke!

Ich werde mich jetzt für drei Tage an die Ostsee verabschieden, und danach kümmere ich mich mal sehr intensiv um die Programmierumgebungen.

Ich mag Assembler persönlich nicht so gerne, weil ich schon etliche Dinge mit C gemacht habe und Assembler Neuland für mich ist. Dann könnte ich das "bequem" tatsächlich streichen.

Andererseits, hier wird ja viel Assembler bevorzugt. Wie ist denn so das moderne Assembler, muss man sich da so simple Dinge wie arrays, Division oder speichern immer noch komplett selber schreiben? Denn wenn nicht, würde ich tatsächlich mal drüber nachdenken.

BID = 356177

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Wie ich oben sagte, ist die Assemblersprache (Assembler ist das Programm, was aus ihr den Maschinencode erstellt) maschinenabhängig. PICs haben zwar wie AVRs gemeinsame Mnemonics (das sind die "Befehle"), aber jeder Controller hat auch Mnemonics, die ein anderer nicht hat.

Der "moderne" Assembler kennt, wenn es die Maschine nicht unterstüztzt, auch keine Division. Das muss man sich selbst programmieren. Es gibt allerdings CPUs, die Dividieren können und da gibt es dann entsprechende Mnemonics. Ob der PIC das kann, weiß ich nicht.

Was du mit "speichern" meinst, weiß ich nicht. Es gibt Controller, die SRAM haben, da kann man dann auch speichern. Man kann auch in den Flash schreiben (wieder: maschinenabhängig) und/oder in ein vorhandenes EEPROM. Register sind Speicher, die direkt von der CPU und der ALU angesprochen werden können. Register haben alle Controller.

Arrays kann man auch benutzten, ist aber etwas komplizierter als mit Basic oder C. Man legt ein Offset z.b. im RAM fest und zählt dann eine Konstante oder eine Variable drauf. So kann man auch Arrays mit 1 Dimension erstellen. Aber von "haus aus" gibt es das nicht.


Edit: Aber lass dich davon nicht entmutigen, Assembler ist eigentlich die einfachste Sprache - sieht nur nicht unbedingt so aus .

_________________


[ Diese Nachricht wurde geändert von: DonComi am  3 Aug 2006 15:33 ]

BID = 356201

Marino

Gelegenheitsposter



Beiträge: 85

Für normale Controller Aufgaben brauchst Du keine Arrays und keine höhere Mathematik. Wenn Du viel mit Arrays arbeiten willst brauchst Du einen dsPIC (Digital Signal PIC).

BID = 356211

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz

Ich habe meine AVRs bis jetzt nur in C programmiert und nie das Gefühl gehabt ich müsste jetzt unbedingt Assembler haben. Auch C-programme werden recht effizient und platzsparend wenn man sich beim Programmieren etwas Mühe gibt. Zudem kann man mit C einfacher auch mal etwas "unanständiges" programmieren, z.B wenn man der Ansicht ist man müsse mit 32 Bit Variablen oder Gleitkommazahlen herumrechnen was ich mir in Assembler relativ unbequem vorstelle.

BID = 356214

DonComi

Inventar



Beiträge: 8605
Wohnort: Amerika

Stimmt, isses .


Bequem isses, man kann Variablen halt direkt mit Operatoren verknüpfen, während man dazu in Assembler erstmal die Adresse in die Pointer laden muss (z.b. ldi ZH, HIGH(var) ldi ZL, LOW(var)), dann muss man den Inhalt aus der Variablen in ein Register holen (ld r16, Z), irgendwie damit operieren und dann zurückschreiben (st Z, r16).

Aber gut, das ist ja weniger tragisch . Gewöhnt man sich dran. Aber wie gesagt, mit C ist es halt praktisch, weil der Code wesentlich allgemeiner ist und es recht schnell geht.

_________________

BID = 356217

high_speed

Schreibmaschine



Beiträge: 2073

Hardware-Multiplizierer und Teiler wirst du in den kleinen
µC (Mikrokontrollern) ehr nicht finden, dies ist das Gebiet
der DSPs (digital signal processor). Multiplizierer sind in
Hardware sehr aufwendig zu integrieren und verbrauchen
verhältnismäßig viel Chipfläche. Im normalen
Verwendungsbereich dieser µC werden selten schnelle
Multiplikationen / Divisionen benötigt, so dass man sie in
mehreren Schritten mit den normalen ALU-Befehlen (Arithmetic
Logical Unit) berechnen lässt. Der Multiplizierer / Teiler
wird in Software geschrieben. Wen man sich auf
Multiplikationen und Divisionen zur Basis 2 Beschränkt, geht
es auch direkt mit den Schiebebefehlen der ALU.
(
In FPGAs (Field Programmable Gate Array) werden vom
Hersteller schon mehrere Multiplizierer integriert damit vom
Benutzer dafür nicht viele Logikelemente verbraucht werden
müssen, des weiterem kann man einen Multiplizierer, der
schon fertig im Silizium verschaltet ist, schneller takten,
als einen aus vielen Logikelementen zusammengesetzte.
(Das war mal ein kleiner Einblick in die programmierbare Logik)
)

Und immer der Streit Assembler <-> C.
In der Zeit von RISC (Reduced Instruction Set Computing)
würde ich in jedem Fall zu C raten wegen der besseren
Wartbarkeit des Codes. Das Argument der schnelleren
Programmausführung lasse ich mal nicht gelten. Bei CISC
(Complex Instruction Set Computing) macht es noch einiges
aus, da die CPU viele Befehle aufweist, die teilweise nur
von bestimmten Registern durchgeführt werden konnten. Der
Compiler konnte von den vielen Befehlen dadurch nur ein Teil
nutzen.
RISC-CPUs sind auf die Verwendung von Compilern optimiert.
Sie besitzen nicht mehr so viele Befehle, dafür aber mehr
Register die gleichwertig genutzt werden können.

Für die AVR-Familie von Atmel gibt es einen kostenlosen
C-Compiler. (Hattest du ja schon gefunden und wurde schon
mehrmals erwähnt.)

Für AVR Besorge dir am besten:
AVR Studio 4 (Entwicklungsumgebung, Assembler, Simulator) http://www.atmel.com/dyn/products/tools.asp?family_id=607#798
WinAVR (C-Compiler kann in AVR-Studio eingebunden werden) http://winavr.sourceforge.net/
PonyProg2000 (Programmer) http://www.LancOS.com

http://de.wikipedia.org/wiki/Atmel_AVR
AVR-GCC-Tutorial http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

MfG
Holger

_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!

Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 2 Beiträge verfasst
© x sparkkelsputz        Besucher : 182134584   Heute : 2955    Gestern : 5445    Online : 479        6.10.2024    15:09
5 Besucher in den letzten 60 Sekunden        alle 12.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0516788959503