Gefunden für avr gcc timera=0 - Zum Elektronik Forum |
1 - Frage an die C Programmierer -- Frage an die C Programmierer | |||
| |||
2 - Alternative zu Ponyprog? -- Alternative zu Ponyprog? | |||
Meine Einstellung dazu kennst du ja bestimmt: Atmel AVRISP MKII (40€) und dazu das AVR-Studio. Das wird vom Hersteller aktuell gehalten und funktioniert einfach. Wäre aber avr-gcc.
Offtopic :P.S. Du wolltest bestimmt Win98SE (und nicht ME, das war der Nachfolger) schreiben. Und ja, 160 Millibit ist wirklich extrem wenig RAM, da hatte mein P1 mit 14 MiB ja deutlich mehr und selbst 640 KiB, soviel braucht kein Mensch, ist noch um einen Faktor 32'000 größer. ;-) ... | |||
3 - Mikrocontroller mit geringem Stromverbrauch und sparsamer Stromversorgung -- Mikrocontroller mit geringem Stromverbrauch und sparsamer Stromversorgung | |||
Offtopic : Zitat : [...] Am besten in Assembler, um die Kniffe ausschöpfen zu können.Den Tipp hatte ich am Anfang in diesem Forum auch bekommen und ich war so dumm ihn zu befolgen. Als Anfänger rate ich definitiv von Assembler ab, da man sich nur unnötig Arbeit macht: - Ein Einzeiler in C braucht zig Zeilen in Assembler - Assembler dokumentieren? Vergiss es. - Nach ein paar Wochen nochmal draufschauen? Ich hab ein altes Programm in C neugeschrieben, da es so schneller war. - Zur Not gibt es GCC inline Assembler - Wenn man um Assembler nicht herumkommt, ist man entweder Profi oder nimmt den nächst größeren µC mit mehr Speicher/größerer Taktrate. Meine Meinung: Für Anfänger/Hobbyisten heutzutage keinen Grund für reinen Code in Assembler, außer man ist evtl. masochistisc... | |||
4 - Neue Aufgabe braucht neue Hilfe: Drehzahlanzeige digital -- Neue Aufgabe braucht neue Hilfe: Drehzahlanzeige digital | |||
Zitat : perl hat am 4 Feb 2016 22:14 geschrieben : [...] über 19 Jahre dauert, bis eine 1 in der ersten Stelle seiner 12-stelligen Anzeige auftaucht. Ich gebe zu, dass ich den Beitrag nur halb gelesen habe. Ich hätte aber gesagt, er will eine Bargraph-Anzeige für 0-999 U/min haben und die tausender auf der 7-Seg-Anzeige darstellen - warum die dafür 12 Stellen hat weiß ich auch nicht. Oder seine "alphanumerische Segment-Anzeige" ist in Wahrheit eine Vierzehnsegmentanzeige? Fragen über Fragen. Edit: Ok, ich will ja auch hilfreich sein: AVR-Tutorial AVR-GCC-Tutorial [ Diese Nachricht wurde geändert von: BlackLight am 5 Feb 2016 0:30 ]... | |||
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 - Arduino Manometer | Hilfe Bitte | -- Arduino Manometer | Hilfe Bitte | | |||
Zitat : perl hat am 3 Mai 2014 19:49 geschrieben : Zitat : 3x CD 4511Wozu denn das? Normalerweise erledigt man die Decodierung in Software und schliesst die Anzeige (evtl. über Leistungstreiber) an ein SIPO-Schieberegister an. Hat u.a. den Vorteil, daß man die Segmente einzeln ansteuern und auch Zeichen wie C A F E - darstellen kann.Jup. War ich froh, dass ich ein E (bzw eher 三) und auch eine "1." anzeigen konnte. Hab das letztens mit dem TLC5916 realisiert. Schön alles in einem Gehäuse, man braucht nur einen externen Widerstand zur Konstantstromwahl und den µC. Waren größere Anzeige... | |||
8 - Umstieg Windows auf Linux (Fragen) -- Umstieg Windows auf Linux (Fragen) | |||
Hallo!
Ich entwickle, auch professionell, unter Linux Software. Als IDE für alles nutze ich Netbeans und stellenweise Eclipse. Netbeans lässt sich gut für den avr-gcc nutzen, allerdings mache ich die Projektverwaltung mehr oder weniger selbst mit Makefiles. Debugging und Flashen geht leider nicht mit Netbeans, da ist Eclipse besser. Gegen die Kommandozeile spricht aber nichts, wenn man Make benutzt, da kommt man auch in Linux nicht drumrum. Netbeans hat aber eine integrierte Shell, die es einem sehr angenehm macht. Als Mausschubser wird man für Linux nichts Vergleichbares wie das AVR Studio finden, ist einfach so. Wenn du dazu weitere Fragen hast, nur zu ![]() | |||
9 - Mikrowellekontroller oder konventionell? -- Mikrowellekontroller oder konventionell? | |||
Zitat : Otiffany hat am 17 Jun 2013 23:39 geschrieben : [...] der Lernaufwand zum erlernen des Programmierens [...]Also wirklich programmieren ist es nicht. Man sucht sich im Netz die passenden Code-Blöcke und baut darum sein Programm auf. Hier aus meinem aktuellen Projekt mit dem ATMega8, Ausgänge und ADC verwendet man so: (Nutze C im AtmelStudio 6) Code : | |||
10 - Modellbahn Weichenantrieb mit PC schalten -- Modellbahn Weichenantrieb mit PC schalten | |||
Moin!
Zitat : Ahja, jetzt verstehe ich. Und wieviel 4094 kann ich dann betreiben? Theoretisch: beliebig viele, praktisch ist das von einigen Bedingungen abhängig. Diese Schieberegister benötigen, wie man aus der vom Kurzarmigen verlinkten "Schaltung" entnehmen kann, drei Signale: Daten, Takt und ein Latch-/Speichersignal. Dazu werden die Daten serialisiert, d.h., man schiebt ein Bit nach dem anderen in das Register. Sind alle Bits übertragen, dann werden die eingetakteten Bits in ein an das Schieberegister gekoppeltes Speicherregister (Latch) geschrieben und erscheinen wieder parallel am Ausgang. Dieses Latch ist im CD4094 schon drin, man müsste also eigentlich von einem Schieberegister mit Latch sprechen. So, es dauert einfach eine gewisse Zeit, bis 56 Bits ausgegeben wurden, vor allem, mit der verlinkten Schaltung dauert das, weil die RS232-Schnittstelle damit zweckentfremdet wird, normalerweise nutzt man sie ... | |||
11 - Programm für Fahrtsteller anpassen -- Programm für Fahrtsteller anpassen | |||
Also ich kann den Source direkt und fehlerfrei übersetzen. ![]() Im Allgemeinen ist von solchen Konstruktionen (mit Makros) abzuraten. Das ist nicht schön. Mein Compileraufruf: avr-gcc -mmcu=attiny2313 -Os -o debounce debounce.c ... | |||
12 - Atmega TWI 24c04 lesen / beschreiben -- Atmega TWI 24c04 lesen / beschreiben | |||
Aufbauend auf der einfachen TWI-API aus dem Thread hier.
#define WRITE 0 #define READ 1 uint8_t const EEPROM_ADDR = 0xac; uint8_t read_eeprom(uint16_t address) { uint8_t upperbyte = EEPROM_ADDR; upperbyte |= ( (uint8_t) (address >> 7) ) & 0xFE; i2c_start(); i2c_transmit(upperbyte + WRITE); i2c_transmit( (uint8_t) address ); i2c_start(); i2c_transmit(upperbyte + READ); register uint8_t data = i2c_receive(NACK); i2c_stop(); return data; } void write_eeprom(uint16_t addr, char byte) { i2c_start(); register uint8_t upperbyte = EEPROM_ADDR; upperbyte |= ( (uint8_t) (addr >> 7) ) & 0xFE; i2c_transmit(upperbyte + WRITE); i2c_transmit((uint8_t)(addr)); i2c_transmit(byte); i2c_stop(); } Das kann man sehr einfach in Assembler umschreiben, da braucht man nicht mal Ahnung von C zu haben. Vorsichtshalber da... | |||
13 - Finde den Fehler im Programm nicht (avr-gcc) -- Finde den Fehler im Programm nicht (avr-gcc) | |||
Und was soll das:
#import <avr/delay.h> #define F_CPU 1000000 Es muss #include heißen und das Definieren der Takt-/ Systemfrequenz muss sinnigerweise vor dem Inkludieren der davon abhängigen Header geschehen, schließlich leiten alle Delay-Makros die Warteschleifen von F_CPU ab! Also ändern in: #define F_CPU 1000000 #include <util/delay.h> Welchen Compileraufruf führst du durch, welche GCC-Versio nutzt du? ... | |||
14 - 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... | |||
15 - ATMEGA32-16PU Programm Auslesen möglich? -- ATMEGA32-16PU Programm Auslesen möglich? | |||
Sofern der Hersteller/Programmierer der Software den AVR nicht gegen Auslesen geschützt hat, ist das mit einem Programmer wie z.B. dem mySmartUSB-Light möglich (jeder andere Programmer kann das auch, aber der genannte ist sehr gut).
Ist der AVR dagegen gesichert, hast du keine Chance. Der Programmer gibt dir Binärdaten aus, die jagst du durch einen Disassembler wie z.B. avr-objdump der GCC-Toolchain für AVRs. Theoretisch kann man diesen Kode so manipulieren, dass die Zeit länger wird. Praktisch sollte man AVR-Assembler gut kennen und auch ein wenig Zeit mitbringen. Als erstes würde ich die ISR-Vektoren der vorhandenen Timer suchen, eventuell wird die Geschichte dort erledigt. ... | |||
16 - langlebiger Laptop? -- langlebiger Laptop? | |||
@Nicki: Meine Kiste (Z61p) ist halt Desktop-Ersatz. Spiele nehmen einen vernachlässigbar geringen Anteil ein, dafür kommt ein Teil Bildverarbeitung (Einzeln oder per Batch) dazu. Geworden ist es ein Z61p mit 2GB Ram, einer 500GB Festplatte mit 7200 Upm und 15" WUXGA (1920x1200 Pixel) Display.
Prozessor ist irgendein Core2Duo - reicht aus. Da war auch ein Jahr Gebrauchtgeräte-Garantie mit drauf die dieser Tage auslaufen dürfte. Kosten lagen bei 500 Euro zzgl. Docking-Station und Autonetzteil. Natürlich hätte ich dafür auch ein neues Acer, Medion oder sonstwas Notebook bekommen - aber will ich das? Der Kurs ist für Neuware einfach nicht zu machen ohne irgendwo zu sparen. Es gibt auch ältere Gebrauchte, aber für 100 Euro VK lohnt es sich einfach nicht ernsthaft sich da groß Arbeit mit zu machen die für den Verkauf aufzubereiten. Dazu muß der VK >= EK + Technikerkosten + Fixkosten Stück + Marge sein. Meine Prioritäten sind allerdings etwas unkonventionell: - Hochauflösendes Display, möglichst viel Platz in der vertikalen, matt. Das R40 hatte schon SXGA+ (1400x1050 Pixel) und ich wollte mich verbessern. HD ist da für mich eher Reizwort denn Segen. Ich will Platz beim Programmieren und für Bildbearbeitung. - Docking Station für meine IBM Model M... | |||
17 - Gerät via RS232 ansteuern -- Gerät via RS232 ansteuern | |||
Hallo,
ich habe hier eine Kamera, welche ich mittels µc (AVR-GCC) fernsteuern möchte. Die Steuerbefehle wie auch die Antworten vom Gerät sind mir bekannt. Allerdings gibt es da ein Problem. Die Kommunikation läuft über Hex-Zahlen ab. Ich habe Sende- und Empfangsroutinen, welche mit char arbeiten. Die Senderoutine durchläuft eine Schleife in der jeder Char byteweise gesendet wird. Diese Sub-Routuine erwartet als Eingabeformat uint8_t. Jetzt frage ich mich, kann man einen HEX-Wert irgendwie in uint8_t umwandeln damit ich es senden kann? Oder anders gefragt: Kann ich das 1B 53 06 00 00 11 02 00 00 00 13 00 hiermit void USART_putc(uint8_t byte) { while(bit_is_clear(UCSR0A,UDRE0)); //warten auf Datenregister empty UDR0=byte; } senden? Gruß ... | |||
18 - PWM-Signal erkennen und weiterleiten -- PWM-Signal erkennen und weiterleiten | |||
Hallo,
Ich habe vor ein PWM-Signal zu modifizieren. Es ist im 20ms Takt mit je 1-2 ms Impulslänge. Daten: Atmega644 16Mhz Quarz AVR-GCC Nun habe ich mir folgendes ausgedacht: Wenn ich den Impuls länger als auch kürzer machen möchte, muss ich bevor ich etwas mache, den ganzen Takt "einfangen". Dazu würde ich zum erfassen, externe Interupt(s) und zum weiterleiten, Timer verwenden wollen. Nun frage ich mich wie ich einen ganzen Takt erkennen soll. Wenn ich auf steigene Flanke triggere, dann bekomme ich den Anfang mit und wenn ich auf fallende Flanke gehe, nur das Ende. Kann man z.B. auf INT0 sowohl steigende, als auch fallende Flanke gleichzeitig erkennen? Oder gibt es da bessere Wege dies zu realisieren? Gruß ... | |||
19 - HiFi Verstärkerändnisproblem beim AVR GCC -- HiFi Verstärkerändnisproblem beim AVR GCC | |||
Hallo,
ist ja nicht so dass der Code geheim wäre =) ich poste ihn einfach hier. Hier der Output von AVR-Studio 4: Code : Build started 24.1.2011 at 18:25:39 -------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Size before: AVR Memory Usage ---------------- Device: atmega8535 Program:... | |||
20 - Bitmanipulationen bei AVR GCC -- Bitmanipulationen bei AVR GCC | |||
Ich sitze gerade an meinem ersten ATmega8535 und lese gerade im AVR GCC Tutorial von mikrocontroller.net.
Und schon kommt die erste Frage: Gibts denn keinen besseren (einfacheren) Weg einzelne Bits zu manipulieren als mit Bitmasken? Ich stell mir das so ähnlich wie bei den PICs vor, a la: PORTA.3 = 1; Danke für die Hilfe. Grüße Simon ... | |||
21 - Neuling interessiert an Microchips -- Neuling interessiert an Microchips | |||
Ich könnte da noch den AVR-GCC in den Raum werfen.
Der kosts nämlich nichts und ist dafür sehr gut. Mehr dazu auf www.mikrocontroller.net ... | |||
22 - AT90USB1287 - ISR viel zu langsam! -- AT90USB1287 - ISR viel zu langsam! | |||
Hallo Knutwurst;
Das kann so doch nichts werden. Wenn du CLK/60 hast, dann kannst du ja nichtmal 60 elementare Instruktionen in der ISR ausführen, weil dann der nächste IRQ kommt. In einer ISR sollte man allgemein keine großartigen Berechnungen durchführen. Wenn es doch sein muss und zusätzlich zeitkritisch ist, sollte das in Assembler kodiert werden. Dann entfällt auch der enorme Overhead, den der GCC als Prolog und Epilog in die ISR mit einbaut. Hardwaremäßig wird der PC auf den Stack geschmissen und die Adresse der ISR geladen -> vier Instruktionen. Dann kommen, vom GCC erzeugt, die Sicherung des Statusregisters und die Initialisierung einiger Register und sichern alter Inhalte auf dem Stack... Allein dieser Overhad benötigt bestimmt schon 80% der 60 Taktzyklen. Schau dir diebezüglich mal das Disassembling an: avr-objdump -d objdatei Wetten, dass dort zig pops kommen, bevor überhaupt dein Kode drankommt? Fazit: schlechtes Programmdesign oder schlicht zu langsamer Controller. Schreibe es in Assembler und linke es hinzu - du darfst dann natürlich keine C-Funktionen aus ASM ausführen! Kein Frame vorhanden. [ Diese Nachricht wurde geändert von: DonComi am 5 Jul 2010 14:24 ]... | |||
23 - Probleme TWI (I2C) Atmega 16 -- Probleme TWI (I2C) Atmega 16 | |||
Du nutzt doch WinAVR?
Da sieht man unten im Log doch, wie der Compiler (avr-gcc) aufgerufen wird. ... | |||
24 - Temperatursensor, weitere Schaltungen über RS232 -- Temperatursensor, weitere Schaltungen über RS232 | |||
Eigentlich habe ich mich schon für C entschieden. Eine Bibliothek für das LCD Display habe ich schon bei Mikrocontroller.net gefunden. (Klick hier) Damit sollte es doch gehen oder?
Das LCD Modul wäre das hier: Klicke hier ... | |||
25 - 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... | |||
26 - 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 ... | |||
27 - Atmega 8 einfaches TWI ( I²C) Programm -- Atmega 8 einfaches TWI ( I²C) Programm | |||
So, ich habe das was gefunden.
Die wirklich kleine Bibliothek wurde auf einem Mega48 eingesetzt, sollte also auf nem Mega8 ohne Änderung laufen. Schau in den Header, dort sind alle Deklarationen sowie sehr kurze Erklärungen. Für diese habe ich die Doxygen-Syntax benutzt. Einige Editoren heben das auch hervor. In twi.c ist die eigentliche Implementation. Ich hänge dir die Bibliothek vorkompiliert sowie als Quelltext an. Es ist ein Tar-Archiv, kann man auch unter Windows öffnen. Empfohlener Kompiler-Aufruf: avr-gcc -mmcu=atmega8 -DF_CPU=<Frequenz> -g -Wall -Os -c -o twi.o twi.c Du musst dann später bloß gegen den Objektcode, der main(void) enthält, linken, und du kannst die Bibliothek nutzen ![]() Den Header hab ich nochmals extra hochgeladen, um sich einen schnellen Überblick zu verschaffen. Außerdem rate ich dringend zur Datenblattlektüre, denn dann kannst du auch verstehen, was ich da mache. Kommentare habe ich mir großteils gesperrt. Ist ja nicht viel ![]() | |||
28 - 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... | |||
29 - 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... | |||
30 - AVR-Studio Fehlermeldung -- AVR-Studio Fehlermeldung | |||
Schau mal nach, ob die Programme der Toolchain, auf die AVR Studio zurückgreift, dort sind, wo das Studio sie erwartet bzw. ob sie überhaupt da sind.
Dazu zählen z.B. der Assembler AVRASM (oder so ![]() Stichworte: WinAVR GNU GCC AVR-GCC WinAvr Fehler ... | |||
31 - Winavr: Float -> LCD, brauche Beispiel -- Winavr: Float -> LCD, brauche Beispiel | |||
Hi,
ich verzweifele hier langsam. Problem: Winavr, Programmers Notepad 2, C-code, AVR (ATMEGA 48), per fprintf eine Gleitkommazahl auf LCD ausgeben. Die Abfrage der Compilerversion per avr-gcc –v an der Kommandezeile liefert gcc version 4.3.2 (WinAVR 20090313) Kommunikation mit dem LCD klappt, Code : fprintf(&lcd_str, "Pout= %dW\n",1346); liefert auf dem Display: Pout= 1346W Aber | |||
32 - 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 | |||
33 - 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 ... | |||
34 - 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.). | |||
35 - C-Programmierung: Float in Int umwandeln -- C-Programmierung: Float in Int umwandeln | |||
Offtopic :Einen falschen Knopf gedrückt und meine Antwort verschwindet samt Firefox und Inhalt der Zwischenablage im Nirvana. ![]() Hallo Don, Zitat : Zitat : Ich wollte eigentlich fragen: Ist es für einen Anfänger sinnvoll Parameter wie z.B. -pedantic -wall usw. zu benutzen oder sollte man einfach die Standardeinstellungen drin lassen? (Wenn ich mir die Menge Fehler und Warnungen angucken lass ich das mi... | |||
36 - Ideen für eine Entschärfungs-Simulation (für LARP) -- Ideen für eine Entschärfungs-Simulation (für LARP) | |||
Hallo Robert,
Beides, also sowohl diskret mit Verzögerungseinheiten als auch mit Mikrocontroller, wäre einfach machbar - der µC hat den entscheidenden Vorteil, dass man das Programm leicht verändern kann. Einige µCs haben Analogdigitalwandler, mit denen man in der Tat mehr als zwei diskrete Spannungen (^= 0 | 1) einlesen kann. Braucht man hier aber nicht, hier reichen gewöhnliche IO-Ports für Einsen und Nullen ![]() Wenn dir das Programmieren liegt und du bspw. Basic und/oder C/C++ kannst, kannst du damit ansetzen. IO-Ports werden behandelt wie volatile Variablen, du kannst also IO-Ports abfragen, als wären es ganz gewöhnliche Variablen. Die Programmlogik ist programmtechnisch noch einfacher umsetzbar als mit zig Zählern und Timern. Das ganze benötigt weniger Strom und Leiterplattenfläche und ist billiger. Selbstbauprogrammer gibt es für AVRs hier: http://www.lancos.com/e2p/avrisp-siprog.gif Das Programm "Ponyprog2000" ist frei und verfügbar für Windows und Linux: http... | |||
37 - 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 ![]() 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. | |||
38 - 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... | |||
39 - Probleme mit Mfile (WinAVR) -- Probleme mit Mfile (WinAVR) | |||
Bei WinAvr kann ich nicht so richtig mitreden, weil ich das ganze
unter avr-gcc mit Linux mache, aber die Makefiles sind prinzipiell glaube ich gleich. Am besten lädst Du mal ein komplettes (kleines) Projekt runter, dann weisst Du sicher, dass da keine Syntax-Fehler im Makefile mehr sind. So ein Makefile von einem fertigen Projekt hat man dann auch meistens schnell auf sein eigenes Projekt umgebogen. Evtl. gibt es auch noch ein Problem, dass der Make Befehl den Pfad zu deinem Projekt nicht kennt und deswgen das Makefile nicht findet. Gruß Stefan ... | |||
40 - Brandmeldeanlage realisieren -- Brandmeldeanlage realisieren | |||
Mahlzeit Ralph,
Du hast ja im Ansatz Recht: Assembler ist meist das Optimum. Aber ich tue mir das nicht mehr an. Angefangen habe ich bei den AVRs beispielsweise auch mit Assembler und kann es auch immer noch. Nur sehe ich nicht ein, warum ich als Programmierer mir mehr Gedanken über die Verwaltung des Heap und des Stacks machen sollte, als über die eigentliche Programmlogik. Deswegen bin ich dazu übergegangen, nur noch kleine µC direkt in Assembler zu programmieren, größere werden in C kodiert. Sollten dort zeitkritische oder speicherkritische Algorithmen gebraucht werden, dann kodiere ich weiterhin in Assembler, und binde den erzeugten Objektkode in meinem C/C++-Programm mit ein. Das ist überhaupt kein Problem. Und ich habe kürzlich scherzhaft mal den avr-g++, also den GCC mit C++-Backend für AVRs, bemüht, und wollte wissen, ob er effizienten Kode erzeugt - und siehe da: sehr wenig Overhead. Das kommt vor allem daher, dass Exceptions und dynamische Speicherverwaltung sowie die STL nicht implementiert wurden. D.H., ich habe ziemlich knackigen Kode, der auch verdammt schnell rennt. Dennoch kann ich objektorierntiert programmieren, sowie Operatoren und andere Dinge überladen, polymorphe Funktionen benutzen, Namensräume benutzen und so weiter. ... | |||
41 - 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... | |||
42 - 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... | |||
43 - [Atmega32] Externes Quarz über Fuses aktivieren -- [Atmega32] Externes Quarz über Fuses aktivieren | |||
Ich bin leider zu doof die Datenblätter zu verstehen und im Internet hab ich einfach nix passendes gefunden. Folgendes Problem: Ich hab einen Atmega32 mit einem externen Quarz (8 Mhz), das ich gern "aktivieren" möchte. Leider versteh ich nicht, was ich in AVR-Studio 4.13 (gcc) einstellen muss, damit dieser verwendet wird.
Wäre blöd, wenn ich mich aussperre, da der Atmega bereits fest verlötet ist. ... | |||
44 - 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... | |||
45 - 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... | |||
46 - 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... | |||
47 - 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... | |||
48 - Wo den C-Befehlssatz (gcc/WinAVR) für ATMega(8) finden? -- Wo den C-Befehlssatz (gcc/WinAVR) für ATMega(8) finden? | |||
Hallo.
Ich hab mal wieder meinen ATMega8(L) ausgegraben, diesmal zu WinAVR-20080411, AVR-Studio 4(SP2) und PonyProg gegriffen und eine Testplatine und einen LPT-ISP-Programmer gebastelt. Als ersten Schritt dann von http://www.roboternetz.de oder http://www.mikrocontroller.net ein 'Hello World'-Programm besorgt und erfolgreich getestet. Nachdem das Basteln an fertigen Programmen seinen Reiz verloren hat, stehe ich nun vor dem Problem, dass mir eine Auflistung der wichtigen Befehle für den Mega8 in C (gcc/WinAVR) zur Realisierung meiner Ideen fehlen. Auf die IOm8.h bin ich schon gestoßen, nur hilft deren Inhalt mir auch nicht weiter. Um mein aktuelles Problem zu nennen, ich suche den Codeschnipsel für den Unterprogrammaufruf für den Overflow-Interrupt von Timer0. (Müsste Richtung "ISR(TIMER0_OVF_vect) {}" lauten.) Momentan stehe ich halt wie ein Ochs vorm Berg und weiss nicht, ob der Fehler an der Initialisierung, falschem Code oder fehlendem Oszi liegt. | |||
49 - Beamer-Steuerung über RS232 -- Beamer-Steuerung über RS232 | |||
Ein kleiner Atmega8, ein MAX232, etwas Hühnerfutter und das hier lesen + aus den Beispielen das Programm zusammenkopieren:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Edit: PS: Willkommn im Forum ![]() [ Diese Nachricht wurde geändert von: LeoLöwe reloaded am 26 Mär 2008 11:20 ]... | |||
50 - Einstieg in µC??? -- Einstieg in µC??? | |||
Moin,
Das geht eigentlich schnell. Ich denke, so nach 2-3 Tagen wird das erste Programm, sehr einfach, laufen. Typisch sind LED-Blinker oder auch Taster-drücken-LED-anmachen-Programme. Das Ganze hängt aber auch damit zusammen, wie du programmieren willst: 1. sehr leicht, aber für absolute Programmieranfänger schon schwierig: Bascom Basic 2. wesentlich komplexer, aber extrem vorteilhafter, da sehr gut implementiert und getestet von einer großen Community: C (avr-gcc und binutils) 3. Wesentlich umständlicher, aber nicht unbedingt schwerer, wenn grundsätzliche digitale Schaltungsgrundlagen (Register, Latche, größere Speicher, Zähler, Bitmanipulation etc.) vorhanden sind: Assembler (-> Instruktionen, die dann nur noch durch den Assembler kodiert werden. Du musst quasi genau das machen, was du sonst rein diskret aufbauen würdest. Z.B. gibt es Instruktionen, die man auch quasi als Baustein der diversen Digitalschaltkreisfamilien erwerben kann) Ich würde entweder direkt Maschinensprache/Assembler oder Basic empfehlen. C kann man später lernen, da die Sprache ansich einen größeren Lernaufwand darstellt. Dafür ist der erzeugte Kode quasi so perfekt, dass man nur selten Assembler benötigt, was ... | |||
51 - µ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... | |||
52 - Kann man Ausgänge am ATtiny2313 als TriState oder OpenDrain definieren? -- Kann man Ausgänge am ATtiny2313 als TriState oder OpenDrain definieren? | |||
[OT]
Zitat : Die Basic- und C-Leute wundern sich nur über rätselhafte Resultate. Moin perl, Zumindest was Basic betrifft stimme ich dir voll und ganz zu, das ist meiner Meinung nach das reinste Gekrüppel... Was C betrifft jedoch nicht, denn der Maschienenkode ist schon sehr krass; das bekommt man kaum besser hin. Die Optimierung des avr-gcc' macht das schon sehr gut. Zumal man über den Präprozessor und das Einbinden externer Programme, z.b. nen Treiber für ein LCD, sein Programm sehr gut und überschaulich gestalten kann. Weiterhin lassen sich Mnemonics per Inline-Assembler einbauen oder ganze Maschienenkode-Teile einbinden. Also, so genialen Asm-Kode bekommt man kaum selbst hin - Es sei denn, man will das Programm nie portieren o.ä. Da bekomme ich dann auch wesentlich besseren Asm-Kode als avr-gcc es könnte. [/OT] ... | |||
53 - C: Variable wird unerklärlicherweise gelöscht.... -- C: Variable wird unerklärlicherweise gelöscht.... | |||
Hallihallo zusammen,
ich arbeite gerade an meinem ersten grösseren Projekt mit C. Es gilt ein Nokia 3310 LCD anzusteuern. Die Ansteuerung klappt wunderbar, nur hab ich ein Problem mit der Programmierung. Es geht um folgendes. Jede Sekunde wird vom Timer1 ein Output Compare A Interrupt ausgelöst. In der Interruptroutine wird eine Variable ("Sekunde") hochgezählt. Dieser neue Sekunden-Wert soll dann auf dem LCD erscheinen. Dazu muss das LCD zuerst gelöscht werden. Dazu werden zwei verschachtelte For-Schleifen durchlaufen. Nun kommts. Sobald die erste Schleife den Wert "6" annimmt, springt der Wert von "Sekunde" völlig zusammenhangslos auf 0 zurück. (Im AVR Studio Simulator eruiert und durch Realität bestätigt.). Mein Wert wird auf dem LCD also nicht hochgezählt, sondern bleibt immer 0... Hier die Codeschnipsel: Initialisierung der Variable: Code : | |||
54 - Mega32 -> SPI -> ADE7758 mit bascom -- Mega32 -> SPI -> ADE7758 mit bascom | |||
So, das Projekt mit dem ADE habe ich erstmal weiter weg gelegt.
Erstmal schaffe ich mir die Grundlagen von C drauf. Das scheint mir in Hinblick auf zukünftige Projekte duetlich sinnvoller. Allerdings neige ich momentan noch dazu diese Sprache zu hassen. Alles was in Bascom basic super simpel war, scheint in C erstmal unerreichbar. Soviel Handarbeit.... Naja.. ich werd es schaffen. Habe mir erstmal ein paar Bücher besorgt. Vielleicht kann mir ja jemand einen Tipp geben, ob ich für den Anfang noch etwas brauche. Hier die Liste mit dem Gerümpel das sich auf meinem Schreibtisch angesammelt hat: Atmel STK500+STK501 2x USB2RS232 Wandler (einmal zum programmieren, einmal fürs Terminal) 1x 4x16 LCD Display nebst Beschaltung für Betriebsspannung und Kontrast diverse mega 16, mega32 und mega128 diverser Kleinkram... das übliche Bastlergerümpel Bücher: Jürgen Wolf - C Programmierung mit einfachen Beispielen Jürgen Wolf - C von A bis Z Das umfassende Handbuch Jörg Wiegelmann - Softwarentwicklung in C für Mikroprozessoren und Mikrocontroller Eine lauffähige Installation vom AVR Studio 4 mit gcc naja... ich denke ich habe alles wasman so braucht. Aber vielleicht hat ja noch jemand ne ide... | |||
55 - Umstieg auf C ==> Literatur gesucht -- Umstieg auf C ==> Literatur gesucht | |||
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Und wenn es ein Buch über C sein soll: "Programmieren in C" von Kernighan & Ritchie ... | |||
56 - 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 ... | |||
57 - Unterforum \"µc für Anfänger\" ? -- Unterforum \µc für Anfänger\ ? | |||
Zitat : Her Masters Voice hat am 18 Jun 2007 07:40 geschrieben : Immerhin gäbe es ja auch noch sowas wie C für die AVRs. Und dieses "avr-gcc" ist sogar ziemlich gut! ![]() Ich bin gegen ein separates Anfänger-Forum. Die Anfänger können sich bei "den Grossen" auch einlesen und Fragen stellen. Die Hemmschwelle zum Posten von Anfängerfragen ist auch gut so, schliesslich soll sich der Betreffende vorher seine eigenen Gedanken machen. ![]() [ Diese Nachricht wurde geändert von: cholertinu am 18 Jun 2007 8:42 ]... | |||
58 - Stereoanlageilier Problem -- Stereoanlageilier Problem | |||
Guten Tag zusammen
Ich habe ein Problem beim kompilieren eines C Files in AVR Studio und auch in WinAVR. Ich habe ein ATmega48 und verwende das AVRISP mkII als In-System Programmer. Installiert ist WinAVR und AVR Studio 4.12.490 Service Pack 3 Da ich noch keine Erfahrung mit AVR's habe wollte ich zuerst ein Testprogramm laufen lassen. Also habe ich eine kleine Schaltung für den ATmega48 auf einem Steckbrett aufgebaut. Nun wollte ich ein Test Programm dass ich unter WinAVR gefunden habe kompilieren und dann herunterladen. Doch dann trat dieser Fehler auf: Build started 16.4.2007 at 14:41:48 avr-gcc.exe -mmcu=atmega48 gcc_test.o -o gcc_test.elf c:/programme/winavr/bin/../lib/gcc/avr/4.1.1/../../../../avr/lib/avr4/crtm48.o: In function `__vectors': ../../../../../avr-libc-1.4.5/crt1/gcrt1.S:51: undefined reference to `main' make: *** [gcc_test.elf] Error 1 Build failed with 1 errors and 0 warnings... Weis jemand von euch an was das liegen kann? Ich danke im voraus. Gruss Mathias ... | |||
59 - 433 mHz USB Funk LCD -- 433 mHz USB Funk LCD | |||
So ich hab nun mit AVR GCC (WinAVR)
Eine LCD Steuerung gebastelt also bis jetzt kann man nur vor definierten Text anzeigen lassen. Nun wollte ich fragen, ob du mir sagen kannst, ob ich dem AVR auch was senden kann (zunächst noch kabelgebunden) und wie? Und danach wie ich es per funk realisieren könnte. ... | |||
60 - 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 ... | |||
61 - Schaltung für in den PC -- Schaltung für in den PC | |||
Hallo,
also die C-Control kannst du nehmen, wirst dich aber nicht sehr drüber freuen. 1. ist die zu langsam, 2. hat auch dieser Chip zu wenig Ausgänge. Man könnte über schnelle Register die Ausgänge praktisch unendlich vervielfachen, nur um z.b. Tastendrücke zuverlässig zu erkenn müsste man einen schnellen Chip haben, geht also nicht. Sinnvoll wäre es, das ganze mit einem PIC oder AVR zu realisieren. Mit Delphi kann man die Dinger sehr gut ansprechen, sogar besser wie eine C-Control. Lesen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial ... | |||
62 - Neues Projekt -- Neues Projekt | |||
Jo,
den Chip dürfte er meinen... auch wenn mich das Bild etwas stutzen lässt. ![]() Die Relais würde ich über ULN-Treiber ansteuern... die sind extra für sowas gedacht. Da sind gleich die Freilaufdioden im Array integriert. Die passenden Relais kannst du dir dann einfach raussuchen. (12V bei 20A sollte aber machbar sein) Mit C (GCC) liegst du beim AVR schon nicht schlecht... Assembler sollte aber auch kein großes Problem werden. Fürs Timing kannst du entweder eine RTC nehmen oder den AVR ein DCF77 Signal dekodieren lassen. Für beides dürftes du schon fertige Beispiele im Netz finden. Ich persönlich würde dem AVR noch ein Komandozeileninterface verpassen, daß man mit jedem Rechner der Hyperterminal hat die Zeiten anschauen und ändern kann... diese werden dann im internen EEPROM des AVR gespeichert. Gruß, SIGINT ... | |||
63 - Programmieren mit WinAVR??? -- Programmieren mit WinAVR??? | |||
Moin!!!
Ich hab ein (oder 2 oder 3) Probleme mit WinAVR. Ich hab mir ein ISP-Dongle gekauft und auf Steckbrett eine Programmierschaltung aufgebaut. Mit Bascom hab ich auch schon ein paar programme auf meinen ATMega32 geladen, die auch funktioniert haben. Ich würde aber gerne in C Programmieren, da ich da schon ein paar Grundkenntnisse hab. Hab schon in das Tutorial von http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial reingelesen. Ich bekomme aber nichts auf den ATMega32 raufgeladen. Hab einen Makefile gemacht mit diesem MFILE Programm.(CPUType->ATMega32, Programmer->AVR ISP, Port->LPT1) Hab ihn gepeichert. Dann hab ich das Programm von microcontroller.net in dieses Programmers Notebook kopiert und zusammen mit dem MakeFile gespeichert. Jetzt weiß ich nicht wie ich das auf den uC kriegen soll. Was hab ich vergessen, was muß ich noch machen? Hoffe ihr könnt mir helfen. MfG Jan ... | |||
64 - AVR-GCC Assembler OUT/STS -- AVR-GCC Assembler OUT/STS | |||
Hi,
Hab hier ein Problem: Ich will den Timer1 meines Prozessors (ATmega48) anspringen lassen, nur passt dem GCC Assembler die Anweisung Code : out TCCR1A, temp nicht: Code : | |||
65 - Mit was habt ihr angefangen für die Welt der Microcontroller -- Mit was habt ihr angefangen für die Welt der Microcontroller | |||
So habe ich angefangen (und würde es nocheinmal tun):
Ich musste für ein Projekt einen Infrarotferbedienungs-Protokollkonverter bauen. Ich habe mich etwas auf dem Netz ungeschaut und mich dann für die AVRs entschieden, der erste war ein ATTiny2313. Für die Programmierung habe ich mit C (AVR-GCC/ WINAVR : http://winavr.sourceforge.net/ ) angefangen und den Einstieg schnell gefunden. Die einzigen Dokumente die ich wirklich gebraucht habe waren das Datenblatt des Controllers und das AVR-GCC-Tutorial: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Da ich über die Selbstbau-Programmiergeräte so viel verwirrendes gelesen hatte von unreproduzierbaren Problemen bis zu inkompatibilitäten mit gewissen Controllern kaufte ich mir einen Original AVRISP von Atmel. Diesen hab ich dann mal abgeschossen und als Ersatz den neuen AVRISP MKII gekauft. Der tut immer noch brav seinen Dienst, hat USB und ist extrem schnell. Mit dem ISP musst du nur Zugang zu GND, VCC, MISI,MISO, SCK und RST haben und kannst den... | |||
66 - Unterbrechbare Interrupts in AVR-GCC -- Unterbrechbare Interrupts in AVR-GCC | |||
Hallo Zusammen
Ich habe ein kleines Problem mit Interrupts in AVR-GCC. Bei der Verbesserung meiner Brushlessmotoransteuerung fand ich Timingprobleme. Ich habe verschiedene interruptroutinen, die einen sind sehr kritisch was den Ausführungszeitpunkt betrifft. Ein anderer rechenintensiver nicht so, nur die Ausführungsfrequenz ist wichtig, wann genau ist egal. Ich habe mir nun vorgestellt den nicht kritischen Prozess in eine unterbrechbare Interruptroutine zu setzen damit die anderen ihre Arbeit dann tun können wenn sie sollen. Gemäss AVR-GCC-Tutorial gibt es das, ich bin allerdings nicht ganz schlau geworden daraus, da dort hauptsächlich die Warnung steht man soll es nur tun wenn man genau weiss was man tut... hat jemand schonmal so etwas verwendet? Danke für euere Tipps! [ Diese Nachricht wurde geändert von: photonic am 17 Okt 2006 23:08 ]... | |||
67 - Assembler oder Bascom -- Assembler oder Bascom | |||
Nimm auch noch C in deine Überlegungen mit auf, gibts gratis als AVR-GCC mit der Entwicklungsumgebung WinAVR.
Ich würde C nicht mehr hergeben, man kann damit schnell recht komplexen Code schreiben und auch Dinge tun die mit Assembler sehr schwierig werden. Einführung gibts hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial [ Diese Nachricht wurde geändert von: photonic am 15 Okt 2006 16:00 ]... | |||
68 - 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. ... | |||
69 - 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) | |||
70 - Asuro-Roboter als Einstieg für 80C51-Derivate -- Asuro-Roboter als Einstieg für 80C51-Derivate | |||
Da passt doch etwas nicht.
> ASURO is equipped with an Atmel AVR RISC-processor > and two independently controlled motors, an optical > linetracer, six collision-detector switches, two > odometer-sensors, three indicator LEDs and an IR-Interface > for programming and remote controlling by a PC. http://www.arexx.com/arexx.php?cmd=goto&cparam=p_asuro.dat Die 8051-Familie weißt eine ganz andere Architektur als die AVR-Familie auf. Bei dem 8051 handelt es sich um einen CISC (Complex Instruction Set Computing) http://de.wikipedia.org/wiki/CISC Der µC (Mikrocontroller) ist aber auch schon mehr als 20 Jahre alt. 1980 http://de.wikipedia.org/wiki/8051 Die Entwicklungssoftware für die AVR-Familie von Atmel kann man sich kostenlos im Internet herunterladen: | |||
71 - 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... | |||
72 - Mikrowellecontroller bequem mit C programmieren? -- Mikrowellecontroller bequem mit C programmieren? | |||
was gut, einfach und bequem ist, ist halt persönlicher Gusto... Für mich finde ich gut: - AVR Microcontroller - AVRISP MkII Programmer original von Atmel gekauft (schnell und funktioniert mit allem) - WINAVR mit AVR-GCC ... | |||
73 - DMX-Dimmer: DMX auslesen und Phasenanschnitt zu gleich? -- DMX-Dimmer: DMX auslesen und Phasenanschnitt zu gleich? | |||
Ein Tutorial für deinen Anwendungsfall habe ich natürlich nicht, aber allgemeine Programmiertutorials finden sich im Netz viele. Ich weiss hat nicht welchen Controller und welche Programmiersprache du verwenden möchtest, ich arbeite mit AVR, programmiert in C (mit WinAVR Link ). Dazu findest du hier ein gutes Tutorial: Link [ Diese Nachricht wurde geändert von: photonic am 12 Jun 2006 17:09 ]... | |||
74 - 80c32 Programmieren aber wie??? -- 80c32 Programmieren aber wie??? | |||
Hier der direkte Link zum Tutorial: Link Link Eine Übersicht über Artikel: Link MfG Holger ... | |||
75 - 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 ... | |||
76 - AVRs proggen mit GCC -- AVRs proggen mit GCC | |||
Hallo Kollegen,
ich wollte mal fragen, wer von euch mit GCC progt... würde mich über neue Kontakte zwecks Erfahrungsaustausch und gegenseitiger Hilfe freuen. Ich bin übrigends Anfänger, was µCs betrifft... hoffe aber, dass ich mit den in den ersten Semestern erlernten C/C++ Kennissen recht schnell Fuß fassen werde... Ich habe den >>>AVR ISP with STK200/300 pinout nachgebaut und verwende WinAVR sowie PonyProg. Zu erreichen bin ich via email: cr_eutin@yahoo.de oder icq# 36140814 Wünsche ein schönes Wochenende!!! Grüße, Carsten @ admin: bitte posting nicht verschieben... ich denke, die meinsten µC Experten schauen primär in diese Rubrik ![]() | |||
77 - universalfernbedienung - hacken oder umbauen ?? -- universalfernbedienung - hacken oder umbauen ?? | |||
Hi,
ich habe eine universalfernbedienung (8in1), deren Funktionen mir aber nicht ausreichend sind; ich würde da gerne etwas verändern. nun schreibt bitte nicht kauf dir ne programmierbar fernbedienung, die kann ich mir nicht leisten. ich habe etwas erfahrung in avr-asm und winavr-gcc, aber evtl. ist es ja einfacher etwas direkt an der FB zu ändern. den eeprom habe ich (vermutlich) schon ausgemacht, drauf steht A21SC C343. Der Controller auf der FB ist leider mit diesem schwarzen plastikzeugs vergossen - hat jmd 'ne idee, wie ich den abbekomme ? ansonsten würde ich einfach die FB-Platine knapp überhalb des controllers absägen und versuchen etwas eigenes 'dranzutüfteln, hat da jmd. vielleicht schon erfahrungen gesammelt, bzw. weiss, wie die einzelnen tasten direkt angesteuert werden (oder wie man diese platinenseitigen gummi-kontakte selbst bauen kann) ?? [ Diese Nachricht wurde geändert von: lemmz am 15 Jul 2004 1:18 ]... | |||
78 - Mikrowellecontroller coden -- Mikrowellecontroller coden | |||
Also das Thema hab ich nun DURCH!!!
Wenn du dir CodeVision leisten kannst, ist das nicht schlecht. Haste mal deine Codevision LCD routinen gesehn? Also ich nehme da lieber avr-gcc. Der ist kostenlos, macht angeblich kleineren Code. Man bekommt ALLES mit quellcode, und kann sehen was der macht. Ist am Anfang nicht so schön wie CodeVision, aber hinterher dafür um so leistungsstärker! Das ist aber geschmackssache. Liebe Grüsse Jan... | |||
79 - Warum immer Atmel? -- Warum immer Atmel? | |||
Leider gibt es so viele AVR Typen! Auf der einen Seite ist es Vorteilhaft das man den besten Typ für die eigene Anwendung findet. Auf der anderen Seite erschwert es den Erfahrungsaustausch. Nur wenige kennen alle Details ihres verwendeten Controllers! Leider macht sich daher auch keiner die Arbeit mal ein Datenblatt zu übersetzen und für Einsteiger verständlich zu machen. Es gibt halt so viele!
Ich suche im übrigen noch ein paar GCC-Beispiele für ein Einstiegstutorial. ... | |||
80 - Suche ein paar AVR Beispiele -- Suche ein paar AVR Beispiele | |||
Suche für ein kleines Tutorial ein paar AVR Beispiele welche alle Möglichkeiten der AVR Mega 8 und Mega 16 Serie aufzeigen. Gerne in ASM und GCC.
Gruß Frank Neuer Webring http://www.roboternetz.de/phpBB2/webring.php ... |
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 13 Beiträge im Durchschnitt pro Tag heute wurden bisher 2 Beiträge verfasst 23 Besucher in den letzten 60 Sekunden alle 2.61 Sekunden ein neuer Besucher ---- logout ----su ---- logout ---- |