so, da ich mich gerade auch mehr mit dem programmieren unterschiedlicher avr mikrocontroller beschäftige und demnächst mit dem stk500 programmieren bin ich gerade auf der suche für standardlibraries für die gängigen avr µCs. gibt es so etwas hier irgendwo im forum oder sonst wo? ihr werdet ja wohl wahrscheinlich nicht immer komplette libs selber schreiben. die suchmaschine hat mir leider bisher nicht weitergeholfen. mfg
andi schrieb: > standardlibraries für die gängigen avr > µCs. Definiere standardlibraries. Für den anfänglichen Gebrauch braucht man keine Library. Die werden erst sinnvoll, wenn man externe Geräte am AVR wie z.B. ein Display betreibt oder I2C-DEvices anspricht. :-)
ich meinte die standardsachen, wie portdefinition, taktfrequenz, usw., wie sie normalerweise in der header lib definiert werden. das gibt es doch bestimmt bereits irgendwo als fertige datei, oder? gruß
Beim AVR-GCC sind die Headerdateien für alle AVRs dabei. Als 'include' - Dateien. Ich denke, das sind die, die du meinst.
ich dachte eigentlich eher an C programmierung. des assemblers bin ich leider nicht mächtig^^^. mfg
du bindest halt "avr/io.h" ein und dann hast du alle Portdefinitionen, kannst also z.B. so was im Programm schreiben ... PORTB = (1<<PB7); ...
ja genau das meine ich. und wo find ich das avr/io.h hier genau? hab gerade schon gesucht aber nichts hier gefunden. mfg
danke für eure hilfe, hatte auf meinem laptop winavr ja bereits installiert, da ich ja bereits mit dem RP6 von Conrad längere zeit beschäftigt habe. jetzt habe ich mal die header datei aus dem winavr ordner für den atmega32 mit der header datei für den atmega32 des RP6, welche ich bisher ja immer verwendet habe verglichen. und da muss ich sagen, dass die header datei aus dem winavr ordner bereits vollständig ist für ein erstes testprogramm? zum beispiel finde ich nirgends etwas, wo die taktfrequenz eingestellt wird. zusätzlich würde mich interessieren, ob ich noch eine C- datei als lib erzeugen muss, bevor ich mit dem progammieren eines C- programms starte oder ob die headerlib in verbindung mit einem C- programm bereits ausreicht? zur begründung: da ich ja bisher nur den RP6 programmiert habe, wo bereits alles "programmierfertig" ist, möchte ich jetzt komplett selber einsteigen. daher benötige ich ein paar zusatzinformationen. mfg
Bitte wirf auch einen Blick in das AVR-GCC Tutorial: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
andi schrieb: > zusätzlich würde mich interessieren, ob ich noch eine C- datei als lib > erzeugen muss, bevor ich mit dem progammieren eines C- programms starte > oder ob die headerlib in verbindung mit einem C- programm bereits > ausreicht? Es ist mir völlig unklar, was Du meinst. Eine „Headerlib“ muss z.B. sowas wie eine „Apfelorange“ sein, denn in C gibt es Header und Libraries, aber das sind verschiedene paar Schuhe, deren Kombination in einem Wort keinen Sinn ergibt. Vielleicht beschreibst Du einfach, was du wie machen willst, und worin dort Deine Probleme liegen, statt nach „headerlibs“ zu suchen.
Die Taktfrequenz kannst du im Makefile 'einstellen' (definieren). Zum Erstellen des Makefiles gibt es das Hilfsprogramm 'MFile'. Du musst keine weiteren Libs erstellen, einfach losprogrammieren. ;) Welche fertigen Libs du für was einbinden musst findest du in der mit dem WinAVR installierten 'avr-libc Manual'. Dort findest du alles was du brauchst, speziell in Sachen Syntax und Zahlenformate.
Thilo M. schrieb: > Die Taktfrequenz kannst du im Makefile 'einstellen' (definieren). > Zum Erstellen des Makefiles gibt es das Hilfsprogramm 'MFile'. Wobei man aber auch sagen muss, dass die 'Einstellung' der Taktfrequenz für den Compiler informellen Character hat. Der AVR (MegaXX) arbeitet mit der Taktfrequenz, die ihm Quarz bzw. interner Taktgenerator bzw. Fusebits vorgeben. In dem Sinne ist das keine 'Einstellung', dass man im Makefile auswählt, welche Taktfrequenz man haben will, sondern genau anders rum: Da der Compiler die Taktfrequenz nicht wissen kann, muss man sie ihm mitteilen.
so, da nun die prüfungen vorbei sind kann ich mich nun endlich richtig an mein projekt machen. ihr habt mir ja schon den ein oder anderen tipp dazu gegeben, vor allem im bezug auch die "headerlib" ^^. ich glaube wir können uns jetzt darauf einigen es headerdatei zu nennen. ich habe mir auch mittlerweile im winavr ordner diverse headerdateien angeschaut. nun zu meinem projekt: ich möchte aus einem alten tennisball einen elektronischen hundeball bauen. dieser soll mit einem led-lauflicht (leds stecken in durchgebohrten löchern), einem beschleunigungssensor und evtl noch mit einem piezo summer ausgestattet werden. mein ziel ist es, mit dem beschleunigungssensor die momentane beschleunigung zu messen und proportional dazu mit pwm die hellichkeit der leds zu verändern. kann mir jemand hierzu einen möglichst billigen beschleunigungssensor empfehlen? die anforderungen an ihn sind in meinem fall ja nicht all zu hoch. ich hab auch schon ein wenig gesucht und bin dabei auf diesen hier gestoßen: http://www.watterott.com/de/Breakout-Board-MMA7260QT hier das datenblatt: http://www.sparkfun.com/datasheets/Accelerometers/MMA7260Q-Rev1.pdf da in einem tennisball nur sehr begrenzter platz vorhanden ist, ist es außerdem nicht ganz einfach eine geeignete spannungsquelle zu finden. moment tendiere ich dazu, 2 mignonzellen in reihe zu schalten und so mit der betriebsspannung 3V zu arbeiten. da diese allerdings schon fast zu groß sind, wäre ich sehr dankbar, wenn mir hier im forum jemand eine geeignetere alternative vorschlagen könnte. vielleicht wären ja auch knopfzellen eine alternative... als controller hab ich jetzt mal den attiny24V ins auge gefasst. dieser kann laut datenblatt mit einer betriebsspannung von 1,8- 5,5V betrieben werden und verfügt über 12 I/O- ports, von welchen ich 6 I/O für den beschleunigungssensor verwenden werde. nun zurück zum eigentlichen thema (thema des threads): da es mein erstes projekt ist, wo ich einen "nicht vorprogrammieren µC" verwende, hab ich jetzt noch einige grundsätzliche fragen zur programmierung: - die headerdatei für meinen controller, in meinem fall wohl die iotn24 und iotnx4, befinden sich ja bereits im winavr ordner. kann ich diese unverändert verwenden? - wenn ich mit dem programmieren meines C- programms beginne, habe ich bisher (RP6) immer zu aller erst mit include.... etwas eingebunden. muss ich das jetzt auch machen? bzw. was muss ich jetzt hinter include... schreiben? - kann bzw. muss ich die taktfrequenz des µCs (hier 10MHZ) zu beginn meines programms definieren? so weit ich sehen konnte, wird das in der headerdatei nicht gemacht. - welches makefile aus dem mfile ordner von winavr muss ich nehmen? vielen dank schon mal im voraus für die beantwortung meiner fragen mfg andi
update: jetzt hab ich mich mal nochmal im GCC tutorial schlau gemacht. kann es sein, dass ich mit dem programm so #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #ifndef F_CPU #define F_CPU 10000000 #endif starten muss? gruß andi
andi schrieb: > da es mein erstes projekt ist, wo ich einen "nicht vorprogrammieren µC" > verwende, hab ich jetzt noch einige grundsätzliche fragen zur > programmierung: > > - die headerdatei für meinen controller, in meinem fall wohl die iotn24 > und iotnx4, befinden sich ja bereits im winavr ordner. kann ich diese > unverändert verwenden? Die greifst du gar nicht an. Du a) gibst bei der Erstellung des Projekts im AVR-Studio an, welchen Prozessor du benutzt und inkludierst immer #include <avr/io.h> Das dann im io.h die für deinen Prozessor passende tatsächliche ioXXX.h inkludiert wird, ist alles schon erledigt. Darum musst du dich nicht kümmern. b) stellst bei der Projektgenerierung den richtigen Prozessor ein > - wenn ich mit dem programmieren meines C- programms beginne, habe ich > bisher (RP6) immer zu aller erst mit include.... etwas eingebunden. > muss ich das jetzt auch machen? bzw. was muss ich jetzt hinter > include... schreiben? #include <avr/io.h> damit hast du erst mal alle Basisdfinitionen für deinen Prozessor inkludiert. > - kann bzw. muss ich die taktfrequenz des µCs (hier 10MHZ) zu beginn > meines programms definieren? so weit ich sehen konnte, wird das in der > headerdatei nicht gemacht. Entweder so, oder aber du gehst im AVR-Studio in den 'Project' / 'Configuration Options' Dialog und stellst dort die Taktfrequenz ein. Das ist die bevorzugte Variante > - welches makefile aus dem mfile ordner von winavr muss ich nehmen? WEnn du AVR-Studio benutzt, musst du dich um gar kein Makefile kümmern. AVR-Studio erstellt eines für dich.
andi schrieb: > update: jetzt hab ich mich mal nochmal im GCC tutorial schlau gemacht. > kann es sein, dass ich mit dem programm so > > #include <avr/io.h> > #include <util/delay.h> > #include <avr/interrupt.h> > > #ifndef F_CPU > #define F_CPU 10000000 > #endif > > > starten muss? Definiere 'muss' Verwendest du etwas aus 'delay.h'? Wenn je, dann musst du es inkludieren. Verwendest du nichts davon, dann nicht. Verwendest du zur Zeit Interrupts? Wenn ja, dann brauchst du interrupt.h. Wenn nein, dann nicht. Das einzige Header File, welches man mehr oder weniger inkludieren 'muss', ist io.h. Theoretisch braucht man auch das nicht, wenn das Programm so aussieht
1 | int main() |
2 | {
|
3 | while( 1 ) |
4 | ;
|
5 | }
|
Da aber ein auf einem AVR laufendes Programm ohne Portzugriffe nicht auskommen wird, ist io.h mehr oder weniger Pflicht für das einfachst mögliche, auf einem AVR sinnvolle, Minimalprogramm
1 | #include <avr/io.h> |
2 | |
3 | #define LED_PORT PORTB
|
4 | #define LED_DDR DDRB
|
5 | #define LED_PIN PB1
|
6 | |
7 | int main() |
8 | {
|
9 | LED_DDR = ( 1 << LED_PIN ); |
10 | LED_PORT = ( 1 << LED_PIN ); |
11 | |
12 | while( 1 ) |
13 | ;
|
14 | }
|
wobei man LED_PORT und die restlichen #define noch anpassen muss, wo denn genau am AVR externe Hardware hängt, mit der sich der AVR bemerkbar machen kann.
vielen dank karl heinz für deine hilfe. ich glaube jetzt habe ich die wichtigsten grundlagen für einen programmeinstieg verstanden. mfg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.