Gefunden für avr compiler zugriff - Zum Elektronik Forum |
| 1 - Twi write und read ATmega 16 -- Twi write und read ATmega 16 | |||
| |||
| 2 - Ein Laie hat ein DSO138 Mini Oszilloskop gekauft, was nun? -- Ein Laie hat ein DSO138 Mini Oszilloskop gekauft, was nun? | |||
| Hi,
ja, warum hat der Laie denn ein DSO138 Oszilloskop gekauft? Weil ich in einem anderen Thema von "mlf_by" gefragt wurde ob ich ein Oszi habe, jetzt habe ich ein Oszi :-). Ein großes DANKE an dieses Forum und seine Mitglieder, dafür daß ich im fortgeschrittenen Alter noch lerne mit einem Oszi umzugehen! Als erstes wurde die Gebrauchsanweisung mehrfach vor und zurück gelesen um die neuen Begriffe bei so einem Oszi einigermaßen zu verstehen, dann sollte etwas mit dem Oszi gemessen werden aber was? Hm, da ist doch diese Tonleiter die mit einem ATtiny85 erzeugt wird, mal sehen was das Oszi so anzeigt wenn man am Lautsprecher misst. Aha, die Spannung wird als Rechtecksignal angezeigt, und auch die Frequenz der Noten steht da :-). O.K., der erste Test war von Erfolg gekrönt, als nächstes wurde am Lautsprecher eines DFPlayers gemessen. Hm, das sieht doch aus wie die Visualisierung der Bandbreite beim VLC (Mediaplayer): Man könnte jetzt das Oszi dafür benutzen welches ca. 120mA braucht um so eine Spielerei zu basteln, oder es mit einem... | |||
3 - Spannungswächter aus Resten ;-) -- Spannungswächter aus Resten ;-) | |||
| Hi,
das Programm wurde angepaßt, es schaltet die AVRs aus bei Unterspannung. Scheint mir die beste Lösung zu sein, Die Spannung ist weg und ich werde wach, Problem beheben oder AKKU tauschen und gut ist. Code : ' Compiler: Bascom 2.0.7.5 ' ' Dateiname: Spannung-messen A85.avr ' Funktion: eine Spannung messen und je nach Spannung etwas ausführen ' Datum: Start 17.12.2021, Stand 19.12.2021 ' Von: Naubaddi ' ' ATtiny85 (B.5 Reset) ' ' +---v---+ ' PCINT5/RESET/ADC0/dW B.... | |||
| 4 - Frage an die C Programmierer -- Frage an die C Programmierer | |||
Zitat : BlackLight hat am 8 Okt 2021 20:17 geschrieben : zyklomatische Komplexität [..., A, B, X] gerne das Kotzen. Halleluja! Und Amen! Ich möchte dir am liebsten einen Blumenstrauß schenken für deine klaren Worte! Die Zeiten von obfuscated code sind so dermaßen vorbei, aber irgendwie wollen das viele nicht wahr haben. Seit Jahrzehnten haben wir die GCC, die auch die AVR-Welt betreibt, und es gibt wohl kaum einen Compiler, der selbst so genial optimiert. Klar, bis auf die Ausnahmen, die ganz speziell für den und den Kern geschrieben wurden, und guess what, die meisten davon basieren auch auf dem GCC, etwa bei nVidia und deren Tensor Cores. Es gibt im Netz genügend Battles zu finden, in denen GCC mit allen verfügbaren Optimierungen gegen puren Maschinencode antreten, und die GCC sind im schlechtesten (!) Fall 6% langsamer und im besten gleich schnell. Nochmal zum Nachdenken: int RegulaererMehrwertsteuer... | |||
| 5 - Steuern und Regeln -> wo und wie anfangen -> die Suche nach dem roten Faden -- Steuern und Regeln -> wo und wie anfangen -> die Suche nach dem roten Faden | |||
| Dann mal von vorn:
Du benötigst ja zunächst eine Plattform. Du kannst dich heute zwischen unzählichen Plattformen und Architekturen entscheiden. Meine persönlichen Favoriten der Mikrocontroller sind: 8 bit - die AVR-Familie von Atmel: einfach zu handhabende und schnell erlernbare Architektur, viele Entwicklungsmöglichkeiten (Programmer von einigen Euro bis mehrere hundert Euro), eine tolle IDE (Atmel Studio) und viele Ressourcen im Internet. Kann auch in Form eines Arduinos eingesetzt werden, auch wenn ich persönlich den Arduino-Hype nicht teile. Prozessoren sind relativ günstig, aber für ihre Rechenleistung sehr teuer. Typische Vertreter ATmega88PA (kein ATmega8 mehr, ist veraltet), ATmega328P, ATXmegaxxx (teuer, aber leistungsfähiger). Taktraten bis 32MHz 8 bis 16 Bit - PIC-Serien von Microchip. Kannste nach gucken, ich würde sie aber nicht empfehlen. Das liegt nicht daran, dass sie schlecht sind, sondern dass ich arbeitsbedingt nur wenig damit zu tun hatte, obwohl sie grade für Regelungstechnik und Stellglieder gut geeignet sind (hochauflödende PWM und Brückenhardware). | |||
| 6 - Wer hilft mir, WinAVR zu konfigurieren? Oder hat jemand eine bessere Software? -- Wer hilft mir, WinAVR zu konfigurieren? Oder hat jemand eine bessere Software? | |||
| Das ist wieder ein klassisches Beispiel wo man mit Linux wesentlich besser aufgestellt ist.
Versuch es doch mal zb. mit Ubuntu. Der Compiler für die AVRs basiert auf dem GCC und ist deshalb natürlich opensource. Die Pakete für Compiler und Bibliothek heißen: 'gcc-avr' und 'avr-libc'. Makefiles findet man sicher zu Hauf im Netz. Zum flashen ist außerdem 'avrdude' hilfreich. Es gibt auch eine GUI dafür: http://avr8-burn-o-mat.aaabbb.de/ Als Editor komme sehr sehr viele in Frage. Ich verwende gerne Geany. Mit einer einzigen Befehlszeile: sudo apt-get install gcc-avr avr-libc avrdude geany ...wird alles notwendige installiert und wird ab dann auch automatisch aktualisiert. mfg Fritz ... | |||
| 7 - Programm für Fahrtsteller anpassen -- Programm für Fahrtsteller anpassen | |||
| ...ich mal einfach mal hier mit einem weiteren kleinen Problemchen weiter.
Diesmal geht es ums Entprellen ....jaja ich weiß, dieses Thema wurde schon in tausend Foren durchgekaut, würde aber dennoch gerne wissen, wo der Fehler liegt. Verwendet habe ich diesen Code (von hier) Allerdings bringt mein Compiler (AVR Studio 4.19) die Fehlermeldung expected identifier or '(' before '{' token in Zitat : #define debounce( port, pin ) Dieser Zeile ({ static uint8_t flag = 0; Daher die Frage a... | |||
| 8 - Lauflicht im BASCOM -- Lauflicht im BASCOM | |||
Zitat : Ich vermute es mal stark... C ist eine Sprache, der man fast überall begegnet, sei es bei der Treiberprogrammierung, Systemprogrammierung oder auch den meisten älteren Applikationen in Linux. C wird noch lange in diesem Bereich der Quasi-Standard sein, auch wenn einige „Embedded Systems“ mittlerweile sogar in .NET programmierbar sind (Unsitte, läuft aber ganz gut). Andere Systeme werden in herstellerspezifischer Sprache programmiert. BASCOM ist zwar für diejenigen nett, die dem AVR schnell etwas beibringen wollen, aber es ist halt AVR-spezifisch und erzeugt nicht grad den besten Code. Hinzu kommt, und das ist eigentlich mein Hauptkritikpunkt: die Sprache ist mit Schlüsselwörtern überladen, für jeden Mist gibt es feste Schlüsselwörter, obwohl es auch normale Prozeduren oder Funktionen täten. Außerdem wird nunmal die meiste freie Software für AVRs in C programmiert. Als Compiler bietet sich der GCC an, der... | |||
| 9 - AVR-Assemblercode von Atmega88 auf -8 umstricken -- AVR-Assemblercode von Atmega88 auf -8 umstricken | |||
| Hi!
Ich möchte mir ein Elektorprojekt nachbauen. Dafür wird ein Atmega88 verwendet, ich habe aber nur den Atmega8 hier. Ich habe schon etwas über die Unterschiede gefunden, blicke aber trotzdem nicht ganz durch. http://www.gaw.ru/pdf/Atmel/app/avr/AVR094.pdf Z.B. meckert der Compiler über "out TCCR0A,r16" Ist irgendwie klar, der Atmega8 hat ja nur einen Ausgang vom zweiten Timer etc. Aber wie schreibe ich das um? Geht das überhaupt, oder war der Atmega88 _statt_ dem 8er nötig? Wäre schön, wenn mir jemand weiterhelfen würde
Code : | |||
| 10 - HiFi Verstärkerändnisproblem beim AVR GCC -- HiFi Verstärkerändnisproblem beim AVR GCC | |||
| Moin Simon,
Das Programm sieht schon OK aus. Das Problem wird das Nutzen der Makros _delay_ms und _delay_us sein. Lass mich raten: du hast keine Optimierung eingestellt, oder? Wenn keine Optimierung angeschaltet ist, wird für genannte Makros der Teil der libc hinzugelinkt, der für Float-Berechnungen zuständig ist... Dadurch bläht sich der Kode so auf. Rufe den Compiler mit der Option -Os oder -O2 auf, dann schrumpft deine Programmgröße .
P.S.: für konstante Strings kannst du noch avr/pgmspace.h inkludieren. Ein konstanter String wird nicht ins RAM kopiert und nimmt daher nur Platz im ROM weg. Der Datentyp lautet dann: prog_char const* mein_String = "..."; prog_char const mein_String[] = "..."; Lesen geht dann mit byte = pgm_read_byte(pointer); Edit: und zufällig gesehen: ... PORTD &= 0x11111011; ...
[ Diese Nachricht wurde geändert von: DonComi am 23 Jan 2011 23:30 ] [ Diese Nachricht wurde geänder... | |||
| 11 - Allgemeine Frage zum Lernpaket Elektronik Start mit USB -- Allgemeine Frage zum Lernpaket Elektronik Start mit USB | |||
| Das heißt Bascom (von "Basic Compiler"), nicht Basecome.
Zitat : Den Link zu Reichel mit dem Bord den du mir gegeben hast, mit welcher Software kann man da Arbeiten? Steht doch bei: Zitat : Produktbeschreibung: Kompakter In-System-Programmer für die Atmel AVR 8bit RISC Microcontroller. Die In-System-Programmierung findet über 6pin-ISP-Anschlüsse statt. Benötigte Software: AVR Studio 4.xx (Freeware). Das AVR-ISP beinhaltet folgende Leistungsmerkmale: •Schnittstelle zum AVR Studio •In-System-Programmieren von allen AVR-ISP-Varianten •Programmiert Flash und EEPROM •Versorgung über die Zielhardware von 2.7V bis 5.5V •Einstellbare ... | |||
| 12 - Mein großes Azubiprojekt -- Mein großes Azubiprojekt | |||
Hallo Martin, willkommen im Forum
Wenn ich Dich richtig verstanden habe, möchtest Du eine Beleuchtung mit LED-Leuchtmitteln für ein Aquarium bauen. Die Beleuchtung soll Abends/Nachts/Morgens das Mondlicht imitieren. Also z.B. bei Vollmond im 18:00 Uhr langsam angehen, um 00:00 Uhr volle Helligkeit erreichen, und dann bis 06:00 Uhr wieder abnehmen. Ein abnehmender Halbmond geht natürlich erst gegen Mitternacht auf und wird auch nie so hell wie ein Vollmond. Außerdem könnte man Abschnittsweise das Licht noch etwas weiter abdimmen (Simulation von Wolken). Soweit richtig? Ja, das schreit nach einem Microcontroller (kurz µC oder uC). Zur LED-Leuchteneinheit selbst: Wenn ich mich recht erinnere, hatte hier jemand vor einiger Zeit auch so etwas gebaut (Bilder gab's auch). War mit vielen normalehellen LEDs gelöst, die in vorgeböhrte Löcher in ein Alu-U-Profil gesteckt wurden (das macht einen Lüfter unnötig und gibt außerdem gleichmäßigeres Licht). Auf der Rückseite konnten die LEDs dann gut ohne Platine verdrahtet werden. Als Spannungsversorgung für Dein Projekt empfiehlt sich übrigens ein Gleichspannungsnetzteil mit einer Spannung von bis zu 40V (damit man möglichst viele LEDs in Reihe schal... | |||
| 13 - Bitmanipulationen bei AVR GCC -- Bitmanipulationen bei AVR GCC | |||
| Hallo,
jetzt geb ich auch mal wieder meinen Senf dazu. Hab jetzt etwas rumprobiert und schreibe die Bitmasken jetzt auch direkt. Am liebsten in Binärer Notation, da erkennt dann jeder was gemeint ist. Leider unterstützt der Compiler das noch nicht so lange und könnte mit älteren Versionen Probleme geben. Etwas was mir allgemein bei den AVR aufgefallen ist: Für den Anfänger gibt es sehr viel weniger Fallstricke als z.B. bei den PIC. Grüße Simon ... | |||
| 14 - Probleme TWI (I2C) Atmega 16 -- Probleme TWI (I2C) Atmega 16 | |||
| Hallo,
du hast leider immer noch nicht genau verstanden, wie der Bus funktioniert bzw. die Hardware im AVR. (Welchen nutzt du gerade nochmal?) Also: Du initialisierst beim Slave die Hardware mit TWAR = Address; . Aufrufen tust du die Funktion mit der Adresse 0x2. Schaut man sich das Register TWAR aber an, sieht man, dass das LSB (das unterste, kleinste Bit) nicht zur Adresse gehört! Dieses Bit muss auf 0 geschrieben werden, wenn man regulär (über die eigene Adresse) adressiert werden soll. So, 0x2 in diesem Register bedeutet, dass das 2. Bit 1 ist. Dort liegt aber nunmal das erste Adsressbit. Also hat dein Slave im Endeffekt nur die Adresse 0x1 und nicht 0x2. Das hatte ich bereits 20mal erwähnt und so ist das auch in meiner Bibliothek implementiert. Dort wird die übergebene Adresse um ein Bit nach links verschoben. Auf das LSB wandert automatisch eine 0. Es muss also TWAR = Address << 1; heißen. Der Master sollte soweit stimmen, setze aber mal den Wert für TWBR auf 64. Dann liegst du bei gut 50kHz und nicht 100kHz SCL-Takt. Schreibe die Empfangsroutine folgendermaßen um: | |||
| 15 - AVR - Geschwindigkeit von Operationen und Variablentypen -- AVR - Geschwindigkeit von Operationen und Variablentypen | |||
| Hallo,
Zitat : Braucht der AtMega zum Subtrahieren (bzw. simples Dekrementieren) deutlich länger als für Additionen? Oder für Schiebeoperationen nach links statt rechts? Mit avr-gcc <Standardparameter> -g übersetzen und mittels avr-objdump -S <fertiges Programm, z.b. main.o> das Disassembling anschauen. Dekrementieren und Inkrementieren dauert je einen Taktzyklus (inc, dec),wobei oft auch subi genutzt wird. Mit subi kann man dekrementieren, inkrementieren, mehr als 1 addieren und subtrahieren. Der Trick ist, dass man einfach mit dem Komplement subtrahiert, wenn man addieren will
Schiebeoperationen um ein Bit nach links oder recht dauern ebenfalls einen Maschinenzyklus, also z.B. bei 1MHz nur eine Mikrosekunde. Suche im Disassembling nach "rol" bzw. "ror" bzw. "lsl" und "lsr". Eventuell w... | |||
| 16 - Mehr als 4 Timer realisieren -- Mehr als 4 Timer realisieren | |||
| Hallo Hajos,
Zitat : 1) Kann der WinAVR C - Compiler tatsächlich C++ ? 2) Wie groß wird der Code ? zu 1: Ja, kann er. Das Backend bzw. den ganzen Toolchain-Rattenschwanz dafür kannst du, analog zum 'normalen' GCC C++-Backend (g++) mit avr-g++ aufrufen. C++ wird allerdings nicht komplett unterstützt (kaum ein Compiler unterstützt alles, was C++ rein theoretisch können sollte... ).
Exceptions, new, new[], delete und delete[] sind nicht implementiert, wobei man sich letztere mit der libc zusammenbauen könnte, indem man new und delete überlädt und intern dann mit malloc und free arbeitet. Weiterhin ist die STL und die STDC++ nicht vorhanden... Die ist auch wesentlich größer als der ROM der kleineren AVRs und dafür auch schlicht und ergreifend nicht gemacht. Achja, alle Arten von virtuellen Methoden/Konstruktoren etc. tunlichst vermeiden. Auch RTTI und andere nette ... | |||
| 17 - OLED-Display ansteuern -- OLED-Display ansteuern | |||
| Hallo,
Ja, C ist eine gute Entscheidung, schon allein deswegen, weil du damit auch Anwendungsprogramme für den Rechner schreiben kannst. Du hast also weitreichend etwas davon .
Das Buch über den Mega8 sollte sich nutzen lassen, auch wenn du einen seiner größeren Brüder nimmst. Die unterscheiden sich hier und da in Port-Adressen, im Speicher und in der Periferie. Da man aber die Adressen nicht direkt, sondern über Bezeichner anspricht, stellt das kein Problem dar. Grundsätzlich gilt, die wichtigste Lektüre ist das Datenblatt. Hier kann man sich viele Datenblätter anzeigen lassen oder sie besser gleich herunterladen. Weiterhin sollte das Tutorial auf Mikrocontroller.net den nötigen Einstieg mit dem C-Compiler (und noch viel mehr) AVR-GCC für AVRs erleichtern. Dazu benötigst du das AVR Studio von Atmel (gibts afaik gegen kostenlose Registrierung auf Atmels Website) und die Erweiteru... | |||
| 18 - Selbstbau eines Lichtweckers mit digitaler Steuerung -- Selbstbau eines Lichtweckers mit digitaler Steuerung | |||
| Hallo Nico,
Zitat : Kannst du mir vllt. etwas Lektüre für die Lücke zwischen den ELKO-Grundlagen und der Verwendung eines Mikrocontrollers empfehlen? Oder ist gerade dafür das Evaluationsboard da? Das Eval.-Board ist vor allem dafür da, dass man eine Hardware hat, die definitiv funktioniert und alles Wichtige für den Anfang bereitstellt. Dort ist eine Beschreibung drin (auch als Download bei Pollin verfügbar), in der drinsteht, wie alles aufgebaut werden muss etc. Gebrannt wird der Mikrocontroller am besten mit Ponyprog2000 oder mit avrdude (wobei ersteres eine grafische Oberfläche hat). Um in Assembler programmieren zu können benötigst du AVR Studio von Atmel, was man dort kostenlos herunterladen kann. (Es gibt auch Opensource-Programme, mit denen ich vor allem unter Linux arbeite. Da reicht ein stinknormaler Editor und der AVR-Assembler.) Um zusätzlich C-Programme für AVRs zu entwickeln benötigt man WinAVR, das das AVR... | |||
| 19 - AVR-Studio Fehlermeldung -- AVR-Studio Fehlermeldung | |||
| Habe ein winig herumgespielt.
Jetzt kommt keine Windows Fehlermeldung mehr dafür steht im AVR-Studio unter Message : Error creating plugin : Error creating plugin : Error creating plugin : Error creating compiler Error creating compiler Ich werde es wieder eimal mit Deinstallation und nochmalige Installation probieren. [ Diese Nachricht wurde geändert von: Rambodischien am 2 Jan 2010 11:59 ]... | |||
| 20 - ATmega8515 mit STK-500 und AVR-Studio 4 -- ATmega8515 mit STK-500 und AVR-Studio 4 | |||
Zitat : Gableguy2000 hat am 19 Okt 2009 20:18 geschrieben : was meinst du in welcher Programmiersprache? Na welche du kannst... Für C muß glaub ich auch noch der WinAVR Compiler installiert sein. Und in C kann ich dir nicht wirklich helfen. Ansonsten funktioniert die Sache vom Prinzip her so: -Controller auswählen -port-pin als Ausgang definieren (an dem die led hängt Schleife: -port pin toggeln -kurze pause -port pin toggeln Dann compilieren,in den µC übertragen(brennen)> fertig Und schon blinkerts... http://blazer21.bl.funpic.de/avr/software.htm ... | |||
| 21 - Einsteiger -- Einsteiger | |||
Offtopic : Zitat : Sprachen; Asambler (geht so) Das mit der Schreibweise üben wir noch mal.
Bei der Menge an Kenntnissen sollte das nicht allzu schwierig sein. Im Hobbybereich sind Atmel AVR und Microchip PIC verbreitet, was man benutzt ist eine Glaubensfrage. Assemblerkentnisse für die jeweilige Architektur sind nützlich, programmieren kann man in Asm, C oder für Atmel auch Basic/Bascom. Lesestoff (bunt gemischt): https://forum.electronicwerkstatt.d......html | |||
| 22 - Programmieren in C -- Programmieren in C | |||
| Sehe ich genauso.
Erstmal in PIC-Assembler einarbeiten, dann lernt man auch in C günstiger auf den Proz. zugeschnitten zu programmieren. Für den PIC die kostenlose PIC-IDE von Microchip runterladen, dann einen kostenlosen C-Compiler ( hab hier CC5X, mach aber inzwischen mehr mit AVR-gcc für Atmels) und einen einfachen Programmer von sprut bauen. Am besten zuerst ganz einfache C-Programme programmieren, wie LED blinken lassen. Oder bestehende, funktionierende Programme schrittweise mehr und mehr modifizieren. Um C zu lernen, solltest du mal den Kerningham-/Ritchie durchlesen, eine Kombo speziell für PIC ist eher unwahrscheinlich. Das M&T-BUch ist sicher auch nicht verkehrt. Lies es ruhig zuende durch
Gruß Stefan ... | |||
| 23 - Eletronic simulaor -- Eletronic simulaor | |||
Offtopic : Mit diesem Adapter, ein wenig modifiziert, so wie ich in brauchte
http://www.lancos.com/e2p/avrisp-siprog.gif Aber wie gesagt, sind AVRs, keine PICs. AVRs lassen sich mit AVR-Assembler (im Datenblatt zum jeweiligen Chip sauber beschrieben), C und C++ sowie ein paar anderen Sprachen, darunter Bascom Basic, programmieren. Für Assembler kannst du AVR Studio nehmen, für C und C++ sowie Ada die Erweiterung WinAVR, für Linux dann alles per GCC-Backend für AVRs, also Assembler, Compiler, Linker. Ich programmiere hauptsächlich in C, flotte Sachen komplett in Assembler und da, wo es auf generischen Kode und Übersichtlichkeit ankommt in C++, wobei ich das auch nur für etwas größere AVRs nehme. C++ wird natürlich nicht vollständig unterstützt, ist ja auch klar, dafür sind die Kerlchen gar nicht gemacht und Vieles ist nur über Tricksen möglich (Exceptions z.B.). | |||
| 24 - Mehrere Versionen von WinAVR -- Mehrere Versionen von WinAVR | |||
| Hallo,
ich bin auf der Suche nach der Lösung /Antwort auf folgende Frage, aber finde es einfach nicht: Ich habe WinAVR-20070525 und AVRStudio 4.13 Build 528 installiert und alles klappt soweit. C-Code -> Programmers Notepad -> Make All, dann mit AVR Studio das .hex durch das STK500 auf den Chip laden. Das geht auch anders, aber so hat es bislang immer geklappt. Darum bin ich auch bislang bei dieser alten Version geblieben und möchte dies auch für die ATMEGA88-Projekte so lassen. Um nun aber auch den AT90PWM3B programmieren zu können, werde ich wohl eine neue Version von WinAVR brauchen, meine kennt diesen Chip noch nicht. Es darf sich auf keinen Fall irgendetwas an der Lauffähigkeit der alten Version ändern. Dass muss weiterhin alles genau so klappen!!!!! (Ja, an dieser Stelle ist wirklich 5x! erforderlich) Was ich im WinAVR User Manual – 20070525 gefunden habe, klingt nicht besonders gut: | |||
| 25 - C-Programmierung: Float in Int umwandeln -- C-Programmierung: Float in Int umwandeln | |||
Puh, da kommt man ja kaum mit...
--- Zitat : Was ist dieser scope-Bereich? Ist ein Segment ein "Stück Speicher"? Was den "Heap" angeht: Wikipedia meint http://de.wikipedia.org/wiki/Dynamischer_Speicher [1] Wenn ich das richtig verstehe (am Beispiel vom AVR, den kenne ich besser als einen PC): Static-Variablen werden irgendwo im SRAM abgelegt und bleiben dort, für auto-Variablen wird der Stack genutzt. Da aber alle Variablen innerhalb einer Funktion standardmäßig auto sind müsste doch ständig der Stackpointer verändert werden, oder? [2] Irgendwie blicke ich da nicht durch... zu 1: Ein AVR hat keine Se... | |||
| 26 - AVR: C-Bibliothek in Assembler verwenden -- AVR: C-Bibliothek in Assembler verwenden | |||
| Moin, was mir noch eingefallen ist:
Je nach dem, mit welchem C-Compiler du kompilierst, musst du natürlich ein paar Teile in deinem Hauptprogrann anpassen: Wenn z.B. einer Funktion Parameter übergeben werden sollen, musst du schauen, wie das dein Compiler haben möchte. Es ist abhängig vom Datentyp, von der Anzahl und von der Größe der Parameter/Argumente. Sind es zuviele oder zu große, werden sie über den Stack übergeben. Ansonsten wird das bei AVRs sinnigerweise über Register gemacht. Das Gleiche gilt für entsprechende Ergebnisse, die die Funktion zurückliefert. Auch diese landen i.d.R. bei AVRs in definierten Registern. An diese Regeln, die auf den ersten Blick nicht immer Sinn ergeben (der aber bei genauerem Überlegen doch da ist ) musst du dich zwingend halten, sonst funktionierts nicht.
Zudem musst du die C-Bibliothek mit bestimmten Compiler-Optionen übersetzten: es muss festgelegt werden, dass die Quelldatei(en) nur compiliert, nicht aber gelinkt (z.B. gegen die Initialisierungs-Prozeduren und kleinere AVR-Bibliotheken) werden sollen. Mit dem gcc, den du u.U. in Verbindung mit WinAVR einsetzt, geschieht das mit dem Argument -c. | |||
| 27 - avrasm2: LWRD-Funktion gibt nur 1 Byte zurück? -- avrasm2: LWRD-Funktion gibt nur 1 Byte zurück? | |||
| Moin,
Ein Assemblierprogramm ("Assembler") erzeugt doch nur aus dem menschenlesbaren Assemblersprachen-Kode den (binären) Maschinenkode. Ein Compiler übersetzt (und macht noch viel mehr) den Hochsprachenkode in einen niedrigeren, z.B. in Assemblersprache. Danach läuft der Assembler über diesen Kode und erzeugt en Maschinenkode. Man kann den GCC so aufrufen, dass der generierte Assemblersprachenkode in eine Datei geschrieben wird. Danach bricht er ab, ruft den as nicht mehr auf. Erst dieser würde den Binärkode erstellen. Das ist immer so ein Problem: Der Begriff "Assembler" meint dieses Programm, während es oft synonym für "Assemblersprache" oder "-dialekt" gebraucht wird. Edit: P.S.: Ich will hier auf keinen Fall klugscheißern. Es mag viele Compiler geben, die ihren Assembler selbst haben. (denn der kommt schließlich vor dem Linker). Zitat : Ein Assembler macht doch auch nur Maschinencode aus einem Mensc... | |||
| 28 - Brandmeldeanlage realisieren -- Brandmeldeanlage realisieren | |||
Offtopic : Hallo Ralph, Ich beherrsche den AVR-Assemblerdialekt vollkommen, andere Dialekte ebenso. Habe unzählige Dinge geschrieben, aber irgendwann nerven einen gewisse Dinge, die einem der Compiler eben auch abnehmen kann. Aber wie gesagt, wichtige Dinge werden direkt in Assembler kodiert, auch z.B. auf dem PC oder Laptop. C ist da schon ganz angenehm, aber C++ bietet eben eine höhere Abstraktion. Da ich genau weiß, wie so ein AVR funktioniert, kann ich ihn auch ruhig mit C++ programmieren, und auch den Compiler so parametrisieren, dass er sehr optimalen Kode erzeugt. Schöne Grüße zurück
... | |||
| 29 - Mikrowellecontroller programieren -- Mikrowellecontroller programieren | |||
| Hallo
Also ich will da mal nicht so sein, schließlich sind Foren zum schreiben da: Die Programmiersprache: Meiner Meinung nach ist es sinnvoll Microcontroller in C zu programmieren. Es ist relativ leicht zu lernen und liefert vergleichsweise schnellen Code. Soll das Programm besonders schnell und kompakt sein führt wohl an Assemlber kein Weg vorbei. Ist die Anforderung komplizierter und ein 'größerer' Microcontroller verfügbar verliert man mit C allerdings schnell den Überblick. In solchen Fällen empfiehlt es sich wohl eine objektorientierte Sprache wie C++ zu verwenden. Natürlich gibt es Compiler für alle möglichen Sprachen (wobei ich aber nicht ganz verstehe wozu man einen Microcontroller in BASIC programmieren sollte ?) Falls du vor hast dich in Zukunft mehr mit Computern, Programmieren, etc auseinander zu setzen ist es sicher kein Fehler sich mit C beschäftigt zu haben, deshalb und aus oben genannten Gründen: C Falls du noch keine Programmiersprache kannst, ist es sicher sinnvoll zuerst nur kleine Programme für den Computer zu schreiben und die Microcontroller zunächst zu vergessen, das ist sonst wohl zuviel auf einmal. (Ja, das ist einfacher, am Anfang zumindest) Falls du schon Erfahrung in C oder ein... | |||
| 30 - Unterbrechen eines Befehls durch ISR -- Unterbrechen eines Befehls durch ISR | |||
| Weil es irgendwann wehtut: Atmel ist der Hersteller, und dieses Wort sagt rein garnichts, aber auch überhauptgarnix über die zugrundeliegende Architektur.
Es handelt sich wohl eher um einen AVR-Core, welcher z.B. gänzlich anders aufgebaut ist als z.B. ein ARM. Das dazu. Nun zum Thema: Du sagtst, folgender Befehl dauert 2 Zyklen: PORTB |= _BV(PB2); // 2 Takte Das ist korrekt, aber auch nur, weil der Compiler das in die für einen gewissen IO-Adressbereich gültige Instruktion sbi a,b kodiert. Und diese dauert nunmal zwei Zyklen und ist, wie bereits erwähnt wurde, nicht unterbrechbar. Selbst ein völlig _ischer Compiler würde daraus kein LDI R1,x MOV R2,R1 machen, denn das ergibt keinen Sinn. Unter anderem kann in ein Register kleiner 0x10 kein Wert sofort geladen werden. Normalerweise würde es eher so aussehen: LDI 0x18, 0x4 IN 0x19, PORTB OR 0x19, 0x18 OUT PORTB, 0x19 Das auf drei Operationen zu optimieren ist leicht: IN 0x19, PORTB ORI 0x19, 0x4 OUT PORTB, 0x19 Auf anderen Adressen kann es auch so aussehen: LDS 0x19, PORTB ORI 0x19, 0x4 STS PORTB, 0x19 (Register hexadezimal). | |||
| 31 - C oder Assembler was ist besser? -- C oder Assembler was ist besser? | |||
| Hallo,
das ist eine schwierige Frage, mit Assembler lernt man sehr gut den Aufbau des Controllers kennen und kann so seine Programme optimal anpassen. Bei größeren Programmen wird es mit Assembler aber schnell unübersichtlich, außerdem lassen sich Programmteile und -routinen in C leichter in weiteren Programmen wiederverwenden, so dass man nicht jedes Mal das Rad neu erfinden muss. Ich persönlich habe mit Assembler für AVR angefangen, bin aber nach einer Weile aus obigen Gründen auf C umgestiegen. Ich würde Dir empfehlen, Dich erstmal mit dem Datenblatt des Controllers zu beschäftigen und vielleicht das ein oder andere kleine Programm in Assembler zu schreiben, z.B. eine LED mit einem Timer blinken lassen, Daten per RS232 zu empfangen und auf einigen LEDs auszugeben etc. Die Bezeichnungen der einzelnen Steuerregister für Timer und Schnittstellen etc. wirst Du schließlich auch in C kennen müssen. Danach würde ich mich aber verstärkt auf C konzentrieren, da die Sprache hardwareunabhängig ist und sie Dir früher oder später an vielleicht ganz anderer Stelle wieder begegnen wird. Was den oft angesprochenen Geschwindigkeitsvorteil von Assembler angeht: Ein guter C-Compiler wie der AVR-GCC für die AVR-Mikrocontroller erzeugt von sich aus schon recht guten Code... | |||
| 32 - I2C Ansteuerung Atmel -- I2C Ansteuerung Atmel | |||
| Der Fehler liegt hier:
TWCR |= (0<<TWEA)|(1<<TWEN)|(1<<TWIE); Das Bit TWEA muss gesetzt sein, damit beim Adressieren die TWI-Hardware mit ACK bestätigt. Weiterhin solltest du statt SIGNAL(...) ISR(...) nehmen, oder für den Fall, dass du SIGNAL() nimmt, avr/signal.h einbinden! Dann schauste mal in die iom128.h rein, und guckst, wie dort der Signalname deklariert wurde - nur der zählt! SIGNAL() hat keine Probleme damit, einen Vektor zuzuordnen, der nicht existent ist. Er springt dann intern zum Label bad_vector_ oder so ähnlich. Schau dir doch mal das Kompilat an. Oder besser die Ausgabe von avr-objdump -d "programmname" > disassembler Dort sollte dann das SIG_TWI_etc. durch vect_n ersetzt worden sein. Edit: und das hier Zitat : void init_twi_slave (uint8_t adr) { TWAR =... | |||
| 33 - UART Probleme -- UART Probleme | |||
| Hallo Rambodieschen
Das sieht doch schonmal ganz gut aus, nur ist da noch ein logischer Fehler: Zitat : Temp=Wert & 0xF0; if(Temp <0xA0) Puffer[2]=Temp +'0'; else Puffer[2]=Temp+'A'-10; Du verundest Temp mit 0xF0, dabei kommt entweder 0 raus oder aber eine Zahl, die größer als 15 ist. Da darfst du jetzt aber keinen Offset mehr dazuaddieren, denn dann stimmen die ASCII-Zeichen nicht mehr. Um das zu vermeiden, solltest du die Nibbles einfach tauschen oder den Wert durch 16 teilen oder alle Bits um vier Stellen zum LSB schieben. Daher wiederholt sich obiger Vorgang: /* Code */ Temp=(Wert>>4) & 0x0F; if(Temp <0xA) Puffer[2]=Temp +'0'; else Puffer[2]=Temp+'A'-10; //Code Du siehts, der Algorithmus ist sehr einfach. Man kann ihn eben noch so erweitern, dass man, wie ich das oben schon angedeutet habe, die Ermittlung... | |||
| 34 - welchen Microcontroller und wie damit umgehen? -- welchen Microcontroller und wie damit umgehen? | |||
| Hallo,
bei Mikrocontroller.net finden sich schöne Tutorials zu den AVRs an sich (http://www.mikrocontroller.net/articles/AVR-Tutorial) sowie zum offenen C-Compiler AVR-GCC (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial). Letzterer lässt sich in die kostenlose Programmierumgebung AVR Studio von Atmel einbinden, so dass Du unter der gleichen Programmoberfläche Assembler und C programmieren kannst. Zum Kennenlernen des Controllers eignet sich Assembler besonders, weil man sich mit der Struktur des Controllers bewusst auseinandersetzen muss, für größere Projekte würde ich aber wegen der Übersichtlichkeit und der einfachren Wiederverwendbarkeit von Code C empfehlen. Von Basic würde ich hingegen generell abraten, da man sich hier leicht einen schlechten Programmierstil angewöhnen kann, der einem bei der späteren Programmierung in C böse ein Bein stellt. Zum Einstieg ist das schon erwähnte Board von Pollin eine gute und günstige Möglichkeit, ein Programmieradapter für die serielle Schnittstelle ist direkt int... | |||
| 35 - steuerung von ausgängen am µC per rs232 -- steuerung von ausgängen am µC per rs232 | |||
| Erstmal so zum Anfang:
1. Es wäre angenehm, wenn du die Regeln der deutschen Rechtsschreibung einhalten würdest. Groß- und kleinschreibung wurde ja nicht scherzhaft erfunden und Interpunktion hilft extrem, den Sinn eines Textes zu verstehen bzw. ihm erst einen zu geben. Schließlich soll sich jemand die Texte durchlesen. 2. Du hast uns nur einen Teil des Quelltextes gezeigt, es fehlt der Kopf: Code : /**************************************************************************** UART.c ------ Übungsprojekt zum Empfang von Daten mit... | |||
| 36 - ECU für einen Rasenmäher - wer wäre interessiert? -- ECU für einen Rasenmäher - wer wäre interessiert? | |||
| Moin Moin,
Zitat : [...]Assembler-Fetischisten (DonComi,Jornbyte u.a.)[...] Früher stärker als heute. Dennoch programmiere ich öfters in AVR-Assembler, wenn es nicht in Klimmzügen enden soll. Es ist imho wesentlich einfacher, Assemblerprogramme einfach, effektiv und schnell zu schreiben, als so einen Murks erzeugen zu lassen. Allerdings ist der avr-gcc mit seiner Toolchain fast so gut, wie ein erfahrener Assemblerprogrammierer, für andere Zielsysteme sowieso, da der AVR-Assembler vergleichsweise einfach ist und viele Instruktionen genaugenommen gemogelt und doppeltgemoppelt sind, einige werden wissen, was ich meine. sbr und ori oder sehr viele andere Instruktionen haben sinnigerweise den gleichen Instruktion-Code (und wenn das Zielregister und die Konstante gleich sind sogar den gleichen Opcode ).
Mittlerweile, seit ca. 2 Jahren schreibe ich fast ausschließlich in C, hat gewisse Gründe und Vort... | |||
| 37 - Lichtschranke mit Reaktionszeit, Ratschläge gesucht! -- Lichtschranke mit Reaktionszeit, Ratschläge gesucht! | |||
| Man kann auch einen sehr exakten Takt erzeugen (Quarz).
Dieser geht, mit einem UND verknüpft, auf einen BCD-Zähler mit mehreren Stellen, ggf. vorher noch über einen geeigneten Teiler, damit das Ergebnis auf den 7-Segmenten nicht umgerechnet werden muss. Im Normalfall liefert der LS-Ausgang low, der Takt & low ergibt low, es wird nicht gezählt. Ändert sich nun der Zustand von low auf high, passiert der Referenztakt das Undgatter und kann gezählt werden, bis er wieder gesperrt wird. Es müssen einige Sachen beachtet werden 1. Die LS muss entstört werden 2. Sie muss unabhängig vom permaneten Licht sein und nur auf Änderungen reagieren, 3. Der Takt und Vorteiler sollten einerseits an die Genauigkeit 10ms und an die maximale Unterbrechungszeitspanne angepasst werden. Es müssen Schranken gesetzt werden, da ja sonst die Anzahl der 7Segmente steigt. Also: hohe Genauigkeit -> relativ kurze Torzeiten, oder rel. niedrige Genauigkeit -> größere Torzeiten. Anders ginge es auch mit einem Mikrokontroller, ist aber mit Programmierung verbunden. Das ist zwar ein Segen, da es recht schnell machbar ist, dafür erfordert es Kenntnisse der entspr. Mnemonics des ... | |||
| 38 - µController -- µController | |||
| Unter diesen Voraussetzungen würde ich zu Atmel greifen, der Programmer AVRISP MKII ist USB und für nicht allzuviel Geld z.B beim Reichelt erhältlich. Dazu bekommst du die Software AVR Studio um den Controller zu flashen oder Programme zu simulieren.
Compiler gibt es gratis, ich verwende WinAVR mit AVR-GCC, einem open source C-Compiler. Damit geht eigentlich alles was mit den Controllern möglich ist, bisher musste ich kein Assembler lernen, obwohl das gemäss der Ansicht von Vielen den besten Einblick in die Funktionsweise der Controller gibt und man damit die letzten paar % Leistung aus den Käferchen herausquetschen kann. Mit C kann man jedoch mit weniger Aufwand komplexe und sehr leistungsfähige Programme erstellen. Als Einstiegsliteratur empfehle ich dazu das AVR-GCC Tutorial von mikrocontroller.net: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial und natürlich das Datenblatt eines AVR-Prozessors, erhältlich auf der Website von Atmel. Als Einstiegscontroller ist ein ATMega48 oder 88 sehr gut, der hat viele Funktionen und ist von der neusten Generation. Wenn du einen AVR kennst kannst du mit allen arbei... | |||
| 39 - Umstieg auf C ==> Literatur gesucht -- Umstieg auf C ==> Literatur gesucht | |||
Es gibt beim avr-gcc (den benutzt du, auch wenn du es vermutlich nicht wusstest ) 5 Optimierungsstufen, nementlich O0-O3 und Os. O0 bis O3 optimieren verschiedene Dinge, Os optimiert speziell auf kompakten Kode.
Aber nicht immer ist Os das beste, auch wenn es meist den kürzesten Kode erzeugt. Du kannst dir das mal im Listing anschauen, per linux mit avr-objdump oder mit Avr-Studio indem du festlegst, dass ein Listingfile erzeugt wird. Da stehen dann alle Assemblerbefehle drin. Warum sich diese merkwürdigen Sachen bei C durchgesetzt haben? kA, aber mir sind die tausendmal lieber als diese Krüppelbefehle in Basic...
Und bedenke, was mit diesen Sprachen schon gemacht wurde. Da kommt Basic nicht mit. ußerdem vereinfacht das auch vieles. Wie schon erwähnt. Ein Beispiel: Dim i as Byte Dim a as Byte i = 100 If i = 100 Then a = 10 Else a = 20 End if --- unsigned char i=100,a; if(i==100) a=10; else a=20; -- Ok, blödes Beispiel, aber beide Male wird das Gleiche getan. Und was sieht besser aus? Vorallem hat man damit die Grundlagen für C++ gelegt, welche einfach abartig sta... | |||
| 40 - AVRs unter Linux programmieren -- AVRs unter Linux programmieren | |||
| Hallo Liebe Forenmitglieder,
Da ich nun fast vollständig auf Linux umgestiegen bin, musste ich zwanghaft eine Alternative für das gute alte AVR-Studio finden. Hier nun eine kleine Liste mit guten Tools für Linux rund um AVRs: - Programmer: avrdude (unterstützt so ziemlich alle Programmer, auch die Lowcost-Varianten für den Parallelport) - Compiler: avr-gcc und binutils bietet die Möglichkeit, C und C++ (eingeschränkt!) für AVR zu kompilieren und Assembler zu assemblieren und zu linken. Ist die gleiche Sammlung an Tools, die WinAVR bietet fürs AVR-Studio) - IDE: kontrollerlab (bzw. KontrollerLab) ist eine komplette Entwicklungsumgebung für KDE, enthält umfangreichen Editor (mit Syntaxhighlighting und automatischer Einrückung), Serielles Terminal, Projektdateienanzeige, eingebaute Funktion zum kompilieren und übertragen des Programmes via avrdude. -> http://www.cadmaniac.org/projectMai.....erlab ... | |||
| 41 - Welchen Controller könnt ihr empfehlen -- Welchen Controller könnt ihr empfehlen | |||
| Bei so geringen Anforderungen, kann man nahezu jeden µC verwenden. Ich würde einen kleinen AVR (tiny2313 oder mega8) verwenden. Einen Basic Compiler gibt es dafür auch. ... | |||
| 42 - Professionelle Software für Microcontroller Programmierung? -- Professionelle Software für Microcontroller Programmierung? | |||
| Ich dachte du wolltest was professionelles!?
Da ist das AVR-Studio zusammen mit dem STK500 die einzige vernünftige All-in-one-Lösung. Klar ist PonyProg auch ein gutes Programm, das dann auch mit Selbstbauboards funktioniert, aber es kann kein High-Voltage-Programming, und On-Chip-Debugging auch nicht. Soweit ich weiß gibt es mittlerweile auch nen C-Compiler fürs AVR-Studio. Linux-Programme: avrgcc avra avrp simulavr ... ... | |||
| 43 - RGB-LED Matrix -- RGB-LED Matrix | |||
Hallo Labersack ( )
Aus dem letzen Posting von stalky13 geht das aber hervor. P.S.: Ich weiß, es ist ein ewiger Glaubenskrieg zw. AVR- und PIC-Programmierern, aber ich würde nochmal empfehlen, einen AVR zu verwenden, weil: - sie bei 20MHz auch bis zu 20MIPS Umsatz haben, - sie recht günstig sind - und die meisten eine UART haben. - es einen komplett kostenlosen Assembler und C-Compiler gibt. Basic kann man eh vergessen, die ist zu langsam und zu abstrakt. ... | |||
| 44 - Problem mit Pony Prog ISP... MISO auf HI kommt nicht runter... -- Problem mit Pony Prog ISP... MISO auf HI kommt nicht runter... | |||
| Hallo,
Ja, ich behaupte, dass, wenn man nur eine Grundahnung von digitalen Verknüpfungen, Registern und Binärzahlen hat, man sich allein mit dem Instruction Set Summary Assembler für AVR aneignen kann. Ein paar Sachen sind zu beachten, wie Eigenarten einiger Register oder der Begrenztheit diverser Sprungbefehle. Aber das ist alles erstmal nebensächlich; das lernt man automatisch mit. Geh mal realistisch davon aus, dass du nach ca. einer Woche das erste, leichte Programm schreiben kannst. Mein allererster Befehl war: ldi r16, 100 Du kannst mit dem AVR Studio deine Programme simulieren. Dazu steht neben dem Befehl ein Pfeil und wenn du einen chritt weitergehst, dann wird der Befehl ausgeführt. Dabei kannst du den Inhalt aller Register direkt auf dem Bildschirm schritt für Schritt verfolgen. Ganz groß fängt man bei 0 an. Der Programmzähler beginnt bei der Adresse 0x0000 (am Anfang des Flash) und arbeitet sich dann durch. (auch hier gilt: es gibt Ausnahmen wie die Vektoren um ein Offset zu erhöhen (Bootloader)) Der erste Befehl sollte immer die Initialisierung des Stackpointers sein. Was das ist, wirst du lernen. das klappt so: ldi r16, LOW(RAMEND) ldi r17, HIGH(RAMEND) out SPL, r16 out SPH, r... | |||
| 45 - Delay Befehle verursacht grosses .hex file -- Delay Befehle verursacht grosses .hex file | |||
| Ich weiss ja nicht was der Compiler da genau macht, noch kenne ich mich mit der Hardware des AVR genau aus (nur PIC)
Aber wenn man davon ausgeht dass er mit 20 Mhz rennt, 4 Taktschritte für einen Befehl verwendet und Dann mal 10 ms Pause mit nop befehlen füllt, dann kommt man Bei 16 bit Worten ziemlich genau auf 10Kb Nop Guck dir doch mal den Sourcecode in Assembler an. Ich kann mir zwar nicht vorstellen, dass der den delay mit NOP füllt, aber evtl gibt es ja einen besseren befehl dafür. ... | |||
| 46 - AVR Entwicklungsumgebung -- AVR Entwicklungsumgebung | |||
Ja, die gleiche Frage steht auch auf http://www.mikrocontroller.net/topic/66376#new
Hallo, Wir sind am Evaluieren der passenden Mikrocontrollerfamilie für den LowRange Einsatz (kleine Steueraufgaben). Dabei kommen vor allem AVR und PIC in Frage. Der PIC hat den Nachteil, dass halt vieles etwas umständlicher ist (z.B. Memory Pages) und kein freier C-Compiler verfügbar ist. Beim AVR gibt es ja den avr-gcc, integriert in die WinAVR Umgebung. Dieser und weitere Faktoren führen dazu, dass wir eher Richtung AVR tendieren (auch im Hinblick auf OpenCores fürs FPGA). Frage: Welche zusätzlichen "Betriebsmittel" benötige ich zusätzlich zum WinAVR? Welcher Programmer wird benötigt und eignet sich auch für den produktiven Einsatz? Was setzen ihr im kommerziellen Einsatz ein? Gruss, Martin ... | |||
| 47 - Schaltung für in den PC -- Schaltung für in den PC | |||
| Hallo,
man kann Programme z.B. über die serielle Schnittstelle (RS232 konkret) in den Controller laden, das setzt aber ein kleines (Boot-)Programm voraus, welches bereits im Controller sitzt und brav wartet, bis z.B. eine Programmiersequenz gestartet wird. Also nix für Anfänger. Weiterhin empfehle ich gradezu das Erlernen des AVR-Assemblers, das mag vllt. schwer sein zu anfang, aber es macht mehr Sinn, als auf einer hohen Abstraktion zu programmieren. Vermutlich gibt es einen Compiler für Delphi, aber da kann ich nichts zu sagen. Für mich gibt es nur Assembler und C .
Wie auch immer, als Programmieradapter empfehle ich den Paralleladapter von Ponyprog (http://www.lancos.com/prog.html) und dieses Programm ebenfalls zum Flashen und konfigurieren deines AVRs. IO kann man beliebig erweitern, indem man die Daten nicht parallel sondern seriell ausgibt und dann ans Ende ein Schieberegister hängt. Das geht sowohl für Ein- als auch Ausgänge (selber schon sehr oft gemacht). Dafür empfehle ich allerdings dann den Einsatz von Assembler, da man hier sehr schnelle Routinen schreiben kann, die innerhalb von einigen µs die Schieberegister aktualisieren. Analog-Ein- und Ausgänge... | |||
| 48 - PIC PCLATH -- PIC PCLATH | |||
| Ich habe von PICs keine große Ahnung (eher AVR) aber versuche mal die Labels ohne Umlaute wie 'ä' 'ü' und 'ö' zu benutzen.
Das Problem liegt demnach beim Compiler, der möglicherweise falsche Adressen erzeugt. PS: Ich habe nicht nachgeschaut, ob dein Programm überhaupt Sinn macht. Es viel eben mit den Umlauten auf. ... | |||
| 49 - BASCOM und PONYPROG für DOS?? -- BASCOM und PONYPROG für DOS?? | |||
| Moin.
sp12 kann mit dem Parallelport-Adapter für Ponyprog umgehen, denn das ist ja die verbreitete STK200/Kanda-Schaltung. Aber nicht mit dem seriellen SI-Prog, also auch nicht mit dem Pollin-Board. Und eine Entwicklungsumbegung für DOS... ich glaub, das sieht schlecht aus. Vielleicht wird man gerade noch einen Assembler für DOS auftreiben können. Hmm, fällt mir gerade diese Sekunde ein, also ohne extra nachzugucken: Der gavrasm, aus dem avr-asm-tutorial,... lässt der sich nicht dem Freepascal Compiler unter DOS kompilieren? D. ... | |||
| 50 - AT Mega 32 -- AT Mega 32 | |||
| Hi!
Der Link ist Murks. Ich nehme an Dein "einfacher" Programmieradapter wird auch für andere AVR's einsetzbar sein. Lade dir einmal das AVR-Studio herunter, schaue dir den dritten Beitrag in diesem Forum an. C-Compiler gibt es eine ganze Menge, auch für die AVR's. Ich bin allerdings der Meinung daß Du mit einem "kleineren" µC besser beraten bist. Die können nicht so viel, bereiten nicht soviele Probleme und kosten nur knapp über einen Euro. Assembler ist die beste Wahl um den Proz. zu verstehen. Was hast Du denn vor/welches Projekt soll es denn zum Anfang sein? Gruß, olfi ... | |||
| 51 - Mein Kampf (Mit Bascom/Meine Probleme damit) -- Mein Kampf (Mit Bascom/Meine Probleme damit) | |||
| Für die drei LEDs:
Dazu müssen alle drei Anschlüsse, an denen die LEDs hängen, als Ausgang definiert sein. Laß zunächst LED1 leuchten, also z. B. PortD = &B10000000 Nimm eine Byte-Variable, die die drei möglichen Zustände durchzählt (ich nenne sie mal "Zustand") und jetzt auf 1 steht. Nun programmiere eine Schleife (Stichwort LOOP), die zunächst weiter nichts macht, als auf einen Tastendruck zu warten. Wenn die Taste gedrückt wurde, erhöhe den Zustandszähler um 1. Aber Achtung: Wenn du auf diese Weise bei 4 angekommen bist - Zustand 4 gibt es nicht! -, mußt du wieder bei 1 anfangen, d. h. wenn Zustand = 4 ist, muß Zustand = 1 werden. Je nach der Zahl in "Zustand" gibst du nun verschiedene Werte an PortD aus, also wenn Zustand = 1, dann wird PortD = &B10000000 wenn Zustand = 2, dann wird PortD = &B01000000 wenn Zustand = 3, dann wird PortD = &B00100000 Zum LCD steht nichts im Buch, aber es ist sehr einfach. Schau mal in der BASCOM-Hilfe unter "Attaching an LCD Display". (Was eigentlich doppelt gemoppelt ist, denn das "D" in "LCD" steht schon für "Display".) Wenn du die Anschlüsse so mit den AVR-Ports verbindest, wie unter "Options -> Compiler -> LCD... | |||
| 52 - Assembler oder Bascom -- Assembler oder Bascom | |||
| Ich bin auch mit dem Tut. von www.avr-asm-tutorial.net angefangen und kann es nur weiterempfehlen. Bei den µC finde ich wichtig, dass man die Hardware versteht, und das geht mit Asm am besten.
Assembler halte ich bei µC auch so für eine Grundvoraussetzung, da man damit, und nur damit, zeitkritische Prozeduren am besten schreibt. Wenn es komplexere Programme werden kann man immernoch auf C oder Basic umsteigen, aber man kann Dinge die schnell geschehen müssen oder an denen sich der Compiler einen abbricht immer noch teilweise als Assembler einbinden. ... | |||
| 53 - simples BASCOM Programm?!?!? könnt ihr mir beim erklären helfen???? -- simples BASCOM Programm?!?!? könnt ihr mir beim erklären helfen???? | |||
| Hallo Bastelheini,
Du musst für den ATmega8 auch die entsprechende Definitionsdatei einbinden: $regfile = "m8def.dat" Dann musst du deine Taktfrequenz dem Compiler übergeben, nicht stumpf abschreiben, was im Tutorial steht: (Aus den PNs habe ich erfahren, dass es 8MHz sind): $crystal = 80000000 '8MHz So, dann geht das Programm los: Ich empfehle wärmstens, immer das passende Datenblatt im Hintergrund laufen zu haben, dann kann man sich schnell helfen: Das Register DDRx legt fest, ob der entsprechende PIN ein Ein- oder Ausgang ist. Ist der Pin ein Eingang (entsprechendes Bit ist dann 0), dann lässt sich noch ein sog. Pull-Up-Widerstand an- oder ausschalten, indem man das entsprechende Bit im PORTx-Register setzt. Es gibt also für alle IO-Pins 3 Register: * Das DDRx-Register (Data Direction Register) für Einstellung ob Ein- oder Ausgang * Das PORTx-Register für die Datenausgabe (wenn du hier ein Bit setzt, dann geht der entsprechende Pin auf High) (Wenn der Pin als Eingang definiert wurde und man die gleiche Bitposition in PORTx auf 1 setzt, dann wird der Pullup eingeschaltet. Weitere Kombinationen dieser beiden Register PORTx und DDRx bitte im Datenblatt nachsehen... | |||
| 54 - 90S2313>Tiny2313 -- 90S2313>Tiny2313 | |||
| Von der MiniDMX-Seite
Zitat : Für die Version 2.0 der MiniDMX-Firmware wurde der Quelltext in C komplett neu geschrieben. Zur Übersetzung wurde der AVR-GCC benutzt. Diesen Compiler gibt es für Windows mit umfangreichen Hilfsprogrammen als WinAVR-Paket. Compiler-Link: http://sourceforge.net/projects/winavr/ Quelltext-Link: http://s101188989.alturo-host.de/ma.....2.zip Hab keine Zeit mich drum zu kümmern, hab es bisher auch noch nicht nötig gehabt, aber auf der WinAVR-Seite sollten entsprechende Informationen zu finden sein. ... | |||
| 55 - Verkehrsampel -- Verkehrsampel | |||
Hallo kleines Alphabet
Warum kein µC(Mikrocontroller)? Das wehre vom Schaltungsaufwand das einfachste. Wenn du es aber mit Logik realisieren willst brauchst du einen Taktquelle (NE555), einen Zähler und eine Decoderschaltung, die ein bisschen größer ausfallen dürfte. Ist das ungefähr die Schaltfolge? rot rot + gelb grün - grün - grün - grün gelb rot .. Da der Taktgenerator mit einer festen Frequenz lauft, sinnvollerweise mit dem gemeinsamen Teiler der Einzelzeiten müssen mehrere Ausgänge des Decoders miteinander oder verknüpft werden. (Bei einem EPROM wird er eben entsprechend programmiert.) Die Programmiersoftware für die AVR-Mikrocontroller kann man kostenlos herunterladen. Zum Programmieren braucht man auch nicht extra ein teures Programmiergerät kaufen. 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) | |||
| 56 - Asuro-Roboter als Einstieg für 80C51-Derivate -- Asuro-Roboter als Einstieg für 80C51-Derivate | |||
| Hallo Zwack,
mit den 8051-Cores hatte ich noch keinen Kontakt, ich habe fast ausschließlich AVR hier am Werkeln. Zitat : - Compiler natürlich C (wassn sonst?) Wieso "Wassn sonst"? Ich programmiere meistens in Assembler(-sprache!). Aber mach das lieber mit C, da gibt es viele Vorteile (wg. Portierung auf andere Maschienen und so). Zum Rest kann ich dir nichts sagen, da ich von diesen Dingen nichts besitze. Sry. ... | |||
| 57 - Mikrowellecontroller bequem in C programmieren -- Mikrowellecontroller bequem in C programmieren | |||
| 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 Assembl... | |||
| 58 - Atmel Evaluations-Bausatz von Pollin modifizieren -- Atmel Evaluations-Bausatz von Pollin modifizieren | |||
| DAS Programmieren?
Das liegt an der Programmiersprache. Für AVR ziehe ich Assembler (AVR-Studio) vor, zeitlich nicht zu unterbieten. Aber es gibt auch Compiler C oder Basic (Bascom, Demo bis 4kB kostenlos) Tutorial-Links sind im Mikrocontroller-Forum hochgepinnt, und das schon länger (link)
Ich bin mit avr-asm-tutorial.net angefangen... ... | |||
| 59 - ich krieg das programmierwn nicht gebacken -- ich krieg das programmierwn nicht gebacken | |||
Lade dir mal PonyProg2000 herunter. Link Die aktuelle Version ist v2.06f BETA und da ist er drin. > hab ponyprog abr erst seit einpaar tagen Dann hast du dir wohl eine alte Version heruntergeladen. > und welchen programmer hab ich? avr isp i/o oder avr isp api? Das solltest du wissen. Bis jetzt wissen wir nur, dass er an der parallelen Schnittstelle betrieben wird. Link I/O -> direkter Hardwarezugriff API -> übers Betriebsystem API (application programming interface) Link > und wie kann ich text reinschreiben bei ponyprog? > das einzige, was geht ist die hex datei aus dem avrstudio > reinladen. PonyProg ist nur ein Programmiersoftware, nicht mehr. Es beinhalten keinen Assembler und auch keinen Compiler (z.B. WinAVR). WinAVR | |||
| 60 - PIC oder Microkontroller -- PIC oder Microkontroller | |||
Also der ATmega16 ist ein uC (=Mikrocontroller) der Firma Atmel, die Reihe nennt sich AT-Mega (es gibt auch AT-Tiny, das sind "kleinere") und der Controllertyp heißt AVR. Insgesamt brauchst du ein Programm zum schreiben des Codes, evtl. Debuggen (Simulation am PC), einen Compiler und eine Brennsoftware (NEIN, Nero geht nicht ). Dazu einen ISP-Brenner (im Pollin-Board enthalten). Mit dem Mercedes von Atmel wirst du nicht viel anfangen können, da du a) die Funktionen nicht nutzen kannst, bzw. diese Mega-Programme bei Anfängern nicht funktionieren werden und b) diese kein DIL-Gehäuse haben, also SMD-Bauteile sind und nicht in Lochraster passen. Weitere Beschreibungen sind Atmel (Übersicht), den oben genannten Links und den Datenblättern zu entnehmen. Ach ja, Forumsuche hilft sicherlich auch ziemlich. Gruß clembra ... | |||
| 61 - RGB-LED Rainbow Effekt -- RGB-LED Rainbow Effekt | |||
Was die RGB-LEDs betrifft, ich will damit eine Ecke im Raum (weiße Rauputzwand) beleuchten. Was den PIC betrifft, in welcher Sprache hast du den denn programmiert? Ich will nämlich auch mit der Programmierung von µC anfangen, kann mich weder für eine Sprache entscheiden, d.h. ich würde am liebsten in C programmieren, aber dafür gibt es keinen Compiler. Und ich kann mich nicht für PIC oder AVR entscheiden. Dazu gibt es auch ein Topic von mir im Bereich Microcontroller.... | |||
| 62 - Basic Compiler für den AVR Atmel -- Basic Compiler für den AVR Atmel | |||
| Es gibt ja verschiedene versionen von Basic Compielern für den AVR.
Ich hatte mir vor ca. 1 jahr mal eine version runtergeladen die von den Libarys her ein Nokia handy display ansteuern konnte. Jetzt such ich schon seit 3 stunden dieses programm im netz... kann es aber leider nicht finden, weiß einer von euch wie dieser compiler heißt bzw wo ich den downloaden kann ?
Bascom fastavr und rvk-basic habe ich schon durch, die wahrens nicht... Gruß Sven ... | |||
| 63 - umstieg von JAVA auf C.... ein paar anfängerfragen -- umstieg von JAVA auf C.... ein paar anfängerfragen | |||
| dank euch,
ich habs hingekriegt. C ist ja ne ziemlich geile sprache. besonders gut find ich das die so schön schnell ist.
ich hab mitlerweile auch raus wie ich ein byte maskiere, brauch ja nur ein & ums zu UNDen
so nun hab ich noch ne kleine frage, ich hab ja die programme fürn PC geschrieben um da mithilfe einer zusatz IO karte was auszugeben. wie schauts denn aus wenn ich nu einen µC beschreiben will. beim alten AVR studio (version 3.5) ist meines wissens ja ein kostenloser C compiler drin(bin ich gerade am saugen, mit isdn brauchts da was ). wenn ich stack usw initialisiert hab kann ich dann so direkt mit dem C proggi loslegen?
ich hab ja schon kleine bis grosse proggis in assembler fürn at90 und atmegas gemacht. muss ich da irgendwas dolles beachten oder kann ich so in die tasten hauen? mich interressieren das sehr weil ich mich bei assembler natürlich um alle rechnungen drücke bei denen komma usw zahlen rauskommen. das muss in C ja wunderbar gehen. MfG MinceR... | |||
| 64 - Projekt gesucht -- Projekt gesucht | |||
| AVRs sind um einiges schneller als PICs, billiger und haben mehr Peripherie onboard. Außerdem soll auch das programmieren etwas einfacher sein.
Was ich für uC auf jedenfall empfehle: Assembler Ich mache fast alles in Assembler, nur wenn es komplizierter wird und ich viel rechnen muss, mit Fließkommazahlen o.ä. verwende ich C. Daher ist C auch sinnvoll, vor allem für größere Projekte. Und da C sowiso die weitestverbreitete Sprache ist, spricht eigentlich nichts dagegen C zu lernen. Basic empfehle ich auf keinen Fall, da dieses um einiges langsamer ist als C und derart Hardwareentfernt arbeitet, dass man zwar irgendwas programmiert, aber garnicht weiß was der uC einfach macht um das Ziel zu erfüllen. In C ist alles noch relativ gut zu verstehen, was der Compiler aus einem Befehl macht, was vor allem bei der Fehlersuche hilfreich ist, wenn man wissen will ob der Compiler beim Übersetzen einen Fehler gemacht hat. Dafür braucht man dann Assembler. Basic ist für einfache und kleine Projekte OK, aber sobald es mal etwas größer wird bekommt man nur Probleme. Und wenn du C und Assembler auf dem AVR kannst, dann ist es eine Kleinigkeit jeden anderen uC zu programmieren. Ok, man muss sich etwas in die anderen Befehle einarbeiten, aber es ist einfac... | |||
| 65 - AT90S1200 -- AT90S1200 | |||
| nochn tipp, wenn du dir das nächste mal was zum testen kaufen willst hol dir 2 ganz dicke. atmega16, oder atmega8515 oder ka was. gucke beim testen von sowas nie auf den preis, du willst ja das testen was die so können und nicht gucken wie schnell du an deine grenzen des programmiertechnisch möglichen kommst.
hätte ich das in assembler geschrieben und nicht dein compiler säh das mickeymaus proggi so aus: Code : ldi r16,0b01000000 out ddrd,r16 ;(6 als ausgang alles andere eingang) ldi r16,0b00100000 out portd,r16 ; pullup von d-5 an | |||
| 66 - WINAVR für AT90S1200 -- WINAVR für AT90S1200 | |||
| Ich bin mir jetzt nicht ganz sicher, ob der 1200er wirklich unterstützt wird, aber wenn, dann liegt es am fehlenden SRAM. Da scheinen die C-Compiler nicht mitzumachen, da ihnen die reine Nutzung der Register nicht reicht.
Aher du hast auch so den denkbar ungünstigsten Start-Controller gewählt. Hätte eher mit dem Mega8 angefangen. Der kostet auch nicht gerade viel mehr, hat aber einen um einiges größeren Funktionsumfang und mehr Speicher. Ich weiß gar nicht mal, ob der 1200er überhaupt noch produziert wird. Aber auf jeden Fall ahst du auf nen ziemlich toten AVR gesetzt, da derzeit nach und nach alle klassischen AVR (Also alle AT90Sxxxx) entweder gegen mega odet tiny Typen ausgetauscht werden, oder ganz rausfliegen. ... | |||
| 67 - Programmierung von Controllern ??? -- Programmierung von Controllern ??? | |||
Zitat : hpm hat am 10 Sep 2004 07:20 geschrieben : Hallo Forumler, Ich habe verschiedene Anwendungen, die den Einsatz einer kleinen Steuerungen rechtfertigen! Nun muß ich aber erst mal allgemein Fragen. 1.- Was gibt es für Möglichkeiten kleine Steuerungen zu programmieren, die sowohl digitale als auch analoge Verarbeitung von Signalen zulassen? 2.- Die Programmierung sollte nicht zu kompliziert sein! [/quote] Was verstehst du unter kompliziert ? Wenn du C oder Assembler kannst, ist das ganze kein Problem. Wenn du nur symbolische Programmiersprachen kannst, dann wird es etwas schwieriger. Zitat : 3.- Ich will keine 1000 Eu... | |||
| 68 - Ist diese Steuerung realisierbar ? -- Ist diese Steuerung realisierbar ? | |||
| Hallo
Machbar ist das auf jeden Fall. Jetzt stellt sich halt die Frage in welcher Sprache du die Dinger programmieren willst.Assembler, C, .... Ich habe selbst noch nichts mit Pics gemacht. Ich nehme die AVR von Atmel und dann Bascom (Basic Compiler). Damit kann man recht schnell sein Programm am laufen bekommen. Da sind auch Befehle für LCD und Tempsensor (1-Wire DS18S20). Dann ist es auch nicht mehr weit bis zum fertigen Programm. Marcus ... | |||
| 69 - Bau eines Roboters -- Bau eines Roboters | |||
| du kannst dir genausogut einen AVR µC holen, die platine zum programmieren (quasi programm auf den µC übertragen) besteht aus einem parallelkabel mit 2 widerständen. (der heisst sp12) das programm kannste in bascom schreiben (meines wissen nach basic). übersetzt das mit dem bascom compiler in eine .hex datei und mit der sp12 software hauste es drauf.. die sp12 gibts kostenlos für windows 9x/me , xp/2000 linux usw. bascom kriegste als demo version mit eingeschränkten befehlen kostenlos.
einen ich sag mal atmega8 der vollkommen ausreicht kriegste für 3€ ??? es gibt demos oder kostenlose compiler für c, basic(bascom), assembler usw.. bin überaus zufrieden mit den teilen.. ach und du brauchst ein quarz, 2 kondensatoren und ne spannungsquelle und schon läuft er..... | |||
| 70 - Große Arrays -- Große Arrays | |||
| Jemand hatte mit dem gnuC Compiler anscheinend das gleiche Problem (http://www.avr1.org/pipermail/avr-gcc-list/2002-October/002904.html).
Aber bei mir hilfts auch nicht, wenn ich es in mehrere Arrays teile. Zitat : Benedikt hat am 7 Aug 2004 16:35 geschrieben : Bei mir gehts, aber ist ein anderer Compiler.. Welchen Compiler benutzt du denn? Ist er gut? Vielleicht werd ich den dann benutzen. Gr M ... | |||
| 71 - Hilfe beim Einstieg in AVR - Controller - Technik gesucht -- Hilfe beim Einstieg in AVR - Controller - Technik gesucht | |||
| Hallo,
möchte eventuell mal was neues in der Elektronik probieren und zwar die Arbeit mit Microcontrollern. Mir wurden die AVR-Controller empfohlen. Da ich mit diesen dingern blutiger Anfänger bin, hier einige Fragen, zu denen ich auch nach dem Googlen keine Antwort gefunden habe: 1. Wie und womit kann ich die Dinger programmieren (is BASCOM so'n Compiler)? 2. Wie sind die preislich? 3. Was ist bei der Arbeit damit zu beachten (ich will die nicht verheizen!) 4. werden die mit BASIC oder mit ner anderen Programmiersprache programmiert? Vielen Dank für euren Rat!!! gez. BRANDBEKÄMPFER... | |||
| 72 - Lasertag -- Lasertag | |||
| Ein Mikrocontroller ist ein Prozessor. Der Unterschied zu PC-Prozessoren besteht darin, dass bei einem µController Speicher, Digital- und Analog- Ein- und Ausgänge etc. meist auf einem einzigen Chip integriert sind, so dass eine µController-Anwendung oft mit ein paar wenigen Bauteilen auskommt. Ein Nachteil ist das nur das Programm, dass im Programmspeicher liegt, abgearbeitet werden kann. (einige der Megaserie bietetn schon Bootloader, wo verschiedene Programme ausgeführt werden können)
Unter Firmware versteht man Computerbefehle oder -daten, die als nur lesbare Information in einem Festspeicher gespeichert sind. Also das aktuelle Betriebssystem des µC z.B. Da die Sache in C gemacht wird und ARRGCC ein freier Copiler ist, habe ich dir auch die Downloads HG's dazu rausgesucht: function reference: http://www.avrfreaks.net/AVRGCC/libcref.php AVR development tools: http://combio.de/avr/ Development Environment: http://www.enterac... | |||
| 73 - PIC -- PIC | |||
| Wenn Du verbindliche Unterlagen über PICs suchst, solltest Du beim Hersteller www.microchip.com suchen.
Außer dem komfortablem Entwicklungssoftware für lau gibt es für den 18F84 einen Demo C-Compiler . Du solltest Dir vielleicht auch die AVR Serie AT90S.... von Atmel ansehen. Auch dafür gibts kostenlose Entwicklungssoftware sowie einen Demo C-Compiler. Weitere mir bekannte Hersteller für Flash-Microcontoller sind z.B. Motorola, Philips, Analog Devices, Texas Instruments. Ob und was es bei denen umsonst gibt, weiß ich allerdings nicht. ... |
|
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! gerechnet auf die letzten 30 Tage haben wir 6 Beiträge im Durchschnitt pro Tag heute wurden bisher 3 Beiträge verfasst 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ---- |