Hallo, ich habe einige Fragen bezüglich des Codes.
1. Wieso will mit das Atmelstudio dieses Ding nicht bauen?
2. Wie sage ich, dass die LED nicht nur genau am Zeitpunkt minute == 2
leuchten soll, sondern auch danach? Danke!
Oldie schrieb:> 1. Wieso will mit das Atmelstudio dieses Ding nicht bauen?
soll das ein Rätsel sein? Atmel Studio hat dir doch gesagt, warum es
„Das Ding“ nicht bauen will. Wie wäres es, wenn du uns das auch
verrätst?
> 2. Wie sage ich, dass die LED nicht nur genau am Zeitpunkt minute == 2> leuchten soll, sondern auch danach? Danke!
Warum gehst du davon aus, dass es nicht schon so ist?
vlg
Timm
Timm Reinisch schrieb:> Wie wäres es, wenn du uns das auch> verrätst?
Screenshot nachgereicht.
Timm Reinisch schrieb:> Warum gehst du davon aus, dass es nicht schon so ist?
Ist es denn so?
Ich weiß es eben nicht, aber wenn man stur dem Code folgt, so wird bei
minute == 2 der PORTD aktiviert. Es kann ja sein, dass bei minute == 3
der PORTD nicht mehr aktiviert ist, da der Zustand minute == 2 nicht
mehr existent ist
g457 schrieb:> ..arggs, die iss ja drin.. mmcu adäquat setzen und die richtigen(tm)> defines nutzen</ingrid>
Sorry, könntest du das für einen dummen Idioten wie mich etwas genauer
erklären und mir genauer sagen, was uich da noch wo hinschreiben muss?
:)
Hast du in den Optionen auch den Richtigen Controller ausgewählt?
Stimmen die Register für deinen Controller? Es gibt bei verschiedenen
Controllern auch teilweise unterschiedliche Registernamen
Frage 1:
Du hast dem AVR Studio nicht mitgeteilt um welcken Controller es sich
handelt (z.B. ATMega8) oder hast den falschen gewählt.
Frage 2:
LED ist in der while solange Minute==2 immer an, danach aber auch.
Solange es nichts gibt was das zurücksetzt zumindest.
Okay ich Idiot habe bei TCCR1B anstatt der 1 immer eine 0 geschrieben
-.-
Neues Problem: Die LED2 leuchtet nicht, selbst wenn ich millisekunden =
1 mache... Jemand ne Lösung?
>Okay ich Idiot habe bei TCCR1B anstatt der 1 immer eine 0 geschrieben>-.->Neues Problem: Die LED2 leuchtet nicht, selbst wenn ich millisekunden =>1 mache... Jemand ne Lösung?
Hm, benutzt du jetzt den Timer 1 oder 0 ?
Hast du die Bezeichnungen für den richtigen Typen eingebunden?
Chris L. schrieb:> Ist der in den Projektoptionen auch ausgewählt. Nicht nur in den> Debugger und Programmeroptionen, auch in den Projektoptionen?
Jop... ich bin am verzweifeln..
Marek Walther schrieb:> TCCR0 |= (1<<CS01); // Prescaler 8>> Sorry, sollte doch Timer 0 sein oder?
Ja, das wird nun erkannt... du hast einfach das B weggelassen. Soll ich
das bei den anderen undeklarierten auch machen?
Weil deine Definitionen nicht zum mega8 passen. Lass mich raten, du hast
den code irgendwo kopiert und und willst ihn jetzt auf dem mega8
verwenden. Der kennt diese Register gar nicht, die heissen da anderst!
Die heissen da TCNT0, TCCR0 und TIMSK. Tu uns allen einen gefallen und
schau mal ins Datenblatt!
Oldie schrieb:> Marek Walther schrieb:>> TCCR0 |= (1<<CS01); // Prescaler 8>>>> Sorry, sollte doch Timer 0 sein oder?>> Ja, das wird nun erkannt... du hast einfach das B weggelassen. Soll ich> das bei den anderen undeklarierten auch machen?
wie gehst du denn vor? Ich frage mich, woher du bei einem ATMega8 ein
TCCR0B hattest? Das gibt es gar nicht. Wie bist du denn darauf gekommen?
Datenblatt schauen um die Optionen zu bauen!
vlg
Timm
Timm Reinisch schrieb:> wie gehst du denn vor? Ich frage mich, woher du bei einem ATMega8 ein> TCCR0B hattest?
Gute Frage.
Kann mir jemand helfen? Welche Register muss ich da nehmen? Danke!
Hmm kurze Frage: Ich möchte ja nur, wie ihr es bereits festgestellt
habt, eine LED nach 2 Stunden/Minuten... leuchten lassen. Wie würdet ihr
das schreiben? Geht's auch simpler? Vielleicht mit timer0? Würde mich
freuen, wenn jemand nen beispiel kurz schreiben könnte!
Danke
Wenn man weiß was man tut, dann ja.
Wenn man das nicht weiß, dann nein.
Aber wo ist denn das Problem? Nimmst du halt den Timer 1 dafür her.
Das ist doch kein Beinbruch.
Aber mit der Attitüde "Ich kopier mir das alles zusammen ohne es zu
verstehen" wird das nun mal nichts.
FAQ: Timer
und dazu das Datenblatt deines Prozessors (ATMega8).
Aus der FAQ (beim CTC Modus) findest du das prinzipielle Vorgehen. Und
das wendest du jetzt eben auf DEINEN µC und das zu DIESEM µC gehörende
Datenblatt und den Timer 1 an. Timer 1 deswegen, weil das auf dem Mega8
der einzige Timer ist, der den CTC Modus unterstüzt. Der Timer 0 tut das
nun mal nicht. Auf einem anderen µC ist das eben anders. Der Timer 0 vom
Mega 16 hat einen CTC Modus. Der vom Mega8 hat ihn nicht.
Wo ist denn da das Problem? Ist doch vom Prinzip her genau dasselbe nur
mit anderen Register und/oder Bitnamen wie beim Timer 0. Du musst in
erster Linie das Prinzip der Vorgehensweise aus der FAQ übernehmen und
nicht so sehr die konkreten Register/Bitnamen. Die sind beim Mega8 bzw.
dem Timer 1 dann eben andere. Aber das Prinzip "Fang bei der
Modustabelle an, hol dir dort die Bitnamen raus, scroll zurück und sieh
nach in welchem Register das jeweilige Bits sitzt", das ist da wie dort
genau das gleiche.
Oder kommst du beim Autofahren durcheinander, wenn beim einen Auto der
Rückwärtsgang in der H-Schaltung rechts unten und beim anderen
links/oben ist? Du siehst auf das 'Datenblatt', welches in diesem Fall
auf den Gangknüppel aufgedruckt ist, und orientierst dich daran, wie das
bei diesem konkreten Automodell geht. Blindes 'Übernehmen' der
Knüppelstellung hingegen führt dazu, dass du bei dem einen Auto anstatt
in den 6. Gang dann eben bei Tempo 180 auf der Autobahn den 'R wie
Ralley'-Gang einlegst und dir das Getriebe um die Ohren fliegt.
Hubert G. schrieb:> TCCR1A = (1<<COM1A0); // CTC Modus> TCCR1B |= (1<<CS11); // Prescaler 8> Hier ist noch ein Fehler.> Die Led2 schaltest du nie mehr aus.
Wo ist denn da der Fehler?
Das hat doch nichts mit dem ausschalten der LED zu tun, oder?
Oldie schrieb:> Hubert G. schrieb:>> TCCR1A = (1<<COM1A0); // CTC Modus>> TCCR1B |= (1<<CS11); // Prescaler 8>> Hier ist noch ein Fehler.>> Die Led2 schaltest du nie mehr aus.>> Wo ist denn da der Fehler?> Das hat doch nichts mit dem ausschalten der LED zu tun, oder?
Der Kommentar zum TCCR1A stimmt nicht.
Es passiert mir immer wieder das ich in so einen thread reinlese.
Dabei stelle ich für mich fest das ich als antwortender schon längst die
EngelsGeduld verloren hätte.
Da gibt man dem TO alles was er braucht und er liest und/oder versteht
nicht.
Dariwn sagt : Lasst Ihn sterben. :((((((((((
engels schrieb:> Dariwn sagt : Lasst Ihn sterben. :((((((((((
Man kann nicht alle sterben lassen. Manchmal ist einem danach etwas fürs
Leben lassen zu tun.
Oldie schrieb:> Hubert G. schrieb:>> TCCR1A = (1<<COM1A0); // CTC Modus>> TCCR1B |= (1<<CS11); // Prescaler 8>> Hier ist noch ein Fehler.>> Die Led2 schaltest du nie mehr aus.>> Wo ist denn da der Fehler?> Das hat doch nichts mit dem ausschalten der LED zu tun, oder?
Nein, es hat nichts mit der Led zu tun, das ist etwas zusätzliches.
In der TCCRA Zeile ist der Kommentar falsch.
In der TCCRB Zeile fehlt dafür etwas.
Der Fehler in meiner vorhergehenden Post ist auch noch aktuell.
Das ist aber ein Zeichen das du nur mit Copy und Paste arbeitest und im
Datenblatt soviel wie nichts gelesen hast.
Jobst M. schrieb:> Es gibt 7.2 Mrd. Menschen ... ein paar gehen ...
Also mit anderen Worten willst du meinen Tod.
Ziemlich drastisch... Mein Problem ist, dass ich nicht weiß, welches Bit
im Register ich was zuordnen soll.
Es war sicher nur der Tod als Programmierer gemeint.
1
ISR(TIMER0_COMPA_vect)
Welchen Timer verwendest du?
1
TCCR1A=(1<<COM1A0);// CTC Modus
Hier steht im Datenblatt nichts von CTC Modus
In meinem Datenblatt Tabelle 39, steht das man für CTC das Bit "WGM12"
für den Timer1 setzen muss. Das Bit befindet sich im Register "TCCR1B".
Bei dir vermisse ich das.
1
TCCR1B|=(1<<CS11);// Prescaler 8
Du setzt hier die Led2
1
if(sekunde==5)
2
{
3
PORTD|=LED2;
aber sie geht nie wieder aus, es sei denn du willst das so.
Christian B. schrieb:> Was funktioniert denn nicht? Gibt es Fehlermeldungen vom Compiler?
OH MEIN F****** GOTT, ES FUNKTIONIERT!!!!
Ich hab es nicht mal compiled, weil ich bereits davon ausging zu
scheitern!
Oh mein gott, dieses Glücksgefühl, ich bin der HERRSCHER DER WELT!
SO FÜHLT ES SICH AN, WENN MAN SICH MIT EINEM KRIEGER ANLEGT!!!
Oldie schrieb:> Christian B. schrieb:>> Was funktioniert denn nicht? Gibt es Fehlermeldungen vom Compiler?>> OH MEIN F****** GOTT, ES FUNKTIONIERT!!!!> Ich hab es nicht mal compiled, weil ich bereits davon ausging zu> scheitern!> Oh mein gott, dieses Glücksgefühl, ich bin der HERRSCHER DER WELT!> SO FÜHLT ES SICH AN, WENN MAN SICH MIT EINEM KRIEGER ANLEGT!!!
Und das alles ganz ohne Eigenleistung - Du kannst wirklich stolz auf
dich sein...
herrscher schrieb:> Oldie schrieb:>> Christian B. schrieb:>>> Was funktioniert denn nicht? Gibt es Fehlermeldungen vom Compiler?>>>> OH MEIN F****** GOTT, ES FUNKTIONIERT!!!!>> Ich hab es nicht mal compiled, weil ich bereits davon ausging zu>> scheitern!>> Oh mein gott, dieses Glücksgefühl, ich bin der HERRSCHER DER WELT!>> SO FÜHLT ES SICH AN, WENN MAN SICH MIT EINEM KRIEGER ANLEGT!!!>> Und das alles ganz ohne Eigenleistung - Du kannst wirklich stolz auf> dich sein...
Es gibt Kollegen, die so zum Manager werden.
Oldie schrieb:> OH MEIN F****** GOTT, ES FUNKTIONIERT!!!!
Jetzt musst du es nur noch schaffen das die Led2 auch wieder mal
ausgeht.
Oder das die Led1 nur bei geraden Minuten leuchtet.
Überlege mal, da gibt es eine Menge Möglichkeiten was auszuprobieren.
herrscher schrieb:> Und das alles ganz ohne Eigenleistung - Du kannst wirklich stolz auf> dich sein...
Wollen wir mal hoffen, dass der Code
1
// Timer 1 konfigurieren
2
TCCR1B=(1<<WGM12);// CTC Modus
3
TCCR1B|=(1<<CS11);// Prescaler 8
aus dem Studium der Modus-Tabelle bzw. Registerbeschreibung aus dem
Datenblatt resultiert und nicht aus diesen Hinweisen
1
TCCR1A = (1<<COM1A0); // CTC Modus
2
Hier steht im Datenblatt nichts von CTC Modus
3
In meinem Datenblatt Tabelle 39, steht das man für CTC das Bit "WGM12" für
4
den Timer1 setzen muss. Das Bit befindet sich im Register "TCCR1B". Bei
5
dir vermisse ich das.
6
7
TCCR1B |= (1<<CS11); // Prescaler 8
Es gibt ja auch Leute, die das Datenblatt meiden, wie der Teufel das
Weihwasser, mit dem Argument "Ich kann kein Englisch". Irgendwie habe
ich das Gefühl, dass wir es hier mit genau so einem Fall zu tun haben.
Dabei bräuchte er im Grunde gar nicht viel Englisches lesen (weil eh
schon alles vorgekaut wurde), sondern nur 'Bildchen schauen' (bzw.
Tabellen schauen) und die Bezeichnungen von dort im Programm
zusammenführen.
Oldie schrieb:> Christian B. schrieb:>> Was funktioniert denn nicht? Gibt es Fehlermeldungen vom Compiler?>> OH MEIN F****** GOTT, ES FUNKTIONIERT!!!!> Ich hab es nicht mal compiled, weil ich bereits davon ausging zu> scheitern!> Oh mein gott, dieses Glücksgefühl, ich bin der HERRSCHER DER WELT!> SO FÜHLT ES SICH AN, WENN MAN SICH MIT EINEM KRIEGER ANLEGT!!!
Also ich würde dir jetzt nicht empfehlen dich mit einem Krieger
anzulegen. Der lässt dir nämlich kein 999 Versuche Zeit, dein
Skill-Level genügend aufzubauen.
Ansonsten könnte folgende Aussage schnell Realität werden:
> engels (Gast):> Dariwn sagt : Lasst Ihn sterben. :((((((((((
Trainiere weiter und lese des verdammte Datenblatt. Am besten druckst du
dir das aus und heftest es ab, dann gab es da einmal noch so bunte
Klebezettelchen zum organisieren.
So, jetzt auf zur Runde II.
-> Tastaturabfrage interruptgesteuert zur Einstellung des Zeitintervalls
und zur Abschaltung der LED.
Viel Glück Tiger.