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ß
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
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
intmain()
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
intmain()
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.