-
Ich hab uSmartX mal getestet bei mir über 'n STK500 mit einem ATmega32. Das STK500 hab ich mit einem 8MHz Quarz bestückt und OSCSEL entsprechend umgesteckt. Eigentlich müsste der AVR jetzt ja mit 8MHz getaktet werden. Aber das Beispielprogramm timer.c des uSmartX Projekts läuft immer noch viel zu langsam. Wenn ich das richtig verstanden habe, soll es so wie es ist in einer Sekunde die 1. LED0 des entsprechenden Ports (habe PORTB genommen, statt PORTF in Ermangelung desselbigen im ATmega32) einmal an und wieder ausschalten, korrekt? Also im 500ms Takt blinken. Richtig? Tut's aber nicht. Blinkt eher im 2 Sekunden Takt...
Kann mir einer verraten, woran das liegt?
Danke
Gruß,
Hendrik
Hmm... wenn ich den Wert OSC0 auf 8 setze (vom Source her steht der auf 125), dann stimmt das nach meinem Zeitempfinden ziemlich genau...
Ich hab ein beschissenes Zeitempfinden... also der Wert stimmt irgendwo zwischen 6 und 7. 6 ist zu schnell, 7 zu langsam...
Wo liegt hier die Ursache dieses Problems?
-
Hmmm... Spontan fällt mir Folgendes ein:
FueseBits Richtig Gesetzt? --> Externer Quarz o.ä. --> DatenblattMega32! Aber VORSICHT beim ändern, siehe in irgendeinem Tutorial...
Prescaler des Timers Richtig gesetzt? Das kann bei jedem Prozessor andest sein --> Datenblatt Mega32!
Timer-Mode Richtig gesetzt? Nicht Normal-Mode sondern bei Auslösen des Interrupts wieder bei Null Starten (CTC???) -- Datenblatt!
Timer Vergleichswet entsprechend Prescaler gesetzt ???
-
So viel Plan hab ich von den ATs noch nicht... Was FuseBits sind, weiß ich schon, aber noch nicht, wie man die setzen muss, wenn man einen externen Quarz im STK500 dran hat... ich lerne noch.
-
Hio.
Ich hab das ganze nochmal aufgegriffen und auch zum Laufen gebracht :).
Jetzt hab ich aber ein Problem festgestellt: Ich kann ja den µC blockieren, wenn ich in einem der Threads ne Endlosschleife oder so rein bau! Ich hab folgenden Code:
Code:
// Receive
while (!(UCSRA & (1 << RXC)))
;
// Return data
return UDR;
Mach ich irgendwas falsch? Unter Java ist das nämlich nicht so. Liegt das vielleicht daran, dass uSmartX ein non-preemtive multitasking system ist?
Gruß
Lutz