Eventuell musst du auch "int main(void)" schreiben.
MfG Hannes
Druckbare Version
Eventuell musst du auch "int main(void)" schreiben.
MfG Hannes
Das muss ich mal probieren, aber zuerst versuche ich noch genau zu verstehen, wie die Codes arbeiten....Zitat:
Das liegt wahrscheinlich daran, dass dein Programm die Frequenz, mit der der µC läuft nicht kennt, binde mal util\delay.h ein (#include <util\delay.h> in die erste Zeile schreiben). In der nächsten Zeile definierst du dann F_CPU mit dem Takt deines µCs (bei 4MHz schreibst du z.B. #define F_CPU 4000000UL).
Jetzt kannst du statt WaitMs() die Funktion _delay_ms(x) benutzen (x steht für dei Anzahl ms, die gewartet werden soll). Das müsste eigentlich funktionieren.
Z.B. if(!(PINB&(1<<PB3)))
Also hier liest er PB aus. Dann hat er 00000000. Dann rechnet er mit &, das sollte 00001000 ergeben. ! hieße dann, 11110111 ????
Nehemen wir an PORTB ist 0xff (0b11111111) also wir haben 8 Eingänge (alle Pins dieses Ports werden mit einem Pullup auf High (+ Pol) gezogen, PINB ist deshalb auch 0xff). Die an den Pins angeschlossenen Tasten ziehen die jeweilige Pin auf Masse, das zugehörige Bit in PINB wird dadurch 0. (In diesem Beispiel ist eine Taste an Pin 3 angeschlossen, also ist, wenn sie gedrückt ist, PINB 0b11110111 = 0xf7)Zitat:
Also hier liest er PB aus. Dann hat er 00000000. Dann rechnet er mit &, das sollte 00001000 ergeben. ! hieße dann, 11110111
Mit if(!(PINB&(1<<PB3))) fragen wir jetzt nur PB3 in PINB ab und negieren das Ergebnis, da PB3 ja 0 ist, wenn die Taste gedrückt ist und die bedingte Anweisung ja nur ausgeführt wird, wenn der Ausdruck in den Klammern true ist.
if(!(PINB&(1<<PB3))) würde heißen: if(!(0b11110111 & (1 << 3))), also if(!(0b11110111 & 0b00001000)), 0b11110111 & 0b00001000 gibt 0 und !0 gibt 1, so kann man also feststellen, ob die Taste gedrückt ist.
Ich sehe schon, ich muss die Operationen lernen...
| & ~
Hättest du dazu einen verständlichen Link, wo alles langsam erklärt wird??
Die Woche ist gerade ziemlich Stressig im Schulalltag, danach möchte ich mich damit befassen, mit dem pic Ströme zu Messen (für Temperatursensor, etc...)
http://www.stud.uni-stuttgart.de/stu...avrc/index.htm
http://winavr.scienceprog.com/short-...pressions.html
Dachte du benutzt einen AVR µC?Zitat:
mit dem pic Ströme zu Messen
Ja, Attiny 13...Zitat:
Dachte du benutzt einen AVR µC?
Kann man mit dem keinen Temperatorsensor bauen?
Warum nicht? Es geht schon, ein größerer µC wäre aber in vielerlei Hinsicht (z.B. mehr Speicher, mehr Pins, mehr Funktionen,...) besser. Ich würde einen Mega8 nehmen.Zitat:
Kann man mit dem keinen Temperatorsensor bauen?
Da habe ich gerade keinen zur Hand, und solange es halbwegs geht, möchte ich einen Pic mit wenig Ausgängen nutzen...Zitat:
Ich würde einen Mega8 nehmen.
Das macht das ganze weniger kompliziert, oder?
Speicher dürfte bei meinen Mikro-Programmen kein Thema sein, denke ich mal (?)
Naja, input output, einfache operationen und spannung auslesen... mehr brauche ich für den Anfang noch nicht.... denke ich zumindest....Zitat:
mehr Funktionen
Meine Zeit ist momentan relativ begrenzt (Abi), daher möchte ich simpel und effektiv arbeiten O:)
Ich glaube du missverstehst das Wort Pic: Mit Pic sind die PIC-Microcontroller von Microchip gemeint. ATMEL AVR Microcontroller kann man einfach AVR nennen.Zitat:
möchte ich einen Pic mit wenig Ausgängen nutzen...
Nicht unbedint, nicht verwendete Pins benutzt du einfach nicht. Und wenn das Programm dann doch nicht auf den Speicher passt, dann musst du dir doch einen neuen kaufen und alles noch mal bauen.Zitat:
Das macht das ganze weniger kompliziert, oder?
Achso, eine andere Firma...
Naja... Damit ich mal das Prinzip verstehe:
Wie kann man die Spannung, die an einem PIN anliegt, auslesen?
Gibt es dafür einen Befehl bzw. Gruppe von Befehlen?