PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Einfacher 1 sec- Timer am Asuro läuft nicht ?



Vilem
16.04.2012, 18:26
Hallo,
der beigefügte Code soll ein einfacher 1sec-Timer (an einem 8 MHz-Asuro) sein, bei dem jede sec eine LED blinkt, aber er funktioniert noch nicht.
Wer sieht, was falsch am Code ist oder fehlt ??? Vermute, dass der timer nicht läuft ?
Danke für Hilfe, Gruss Vilem
/************************************************** *************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
************************************************** *************************/
/*Fcpu = 8 MHz, LED-TIMER 1/sec */
#include "asuro.h"
#include <avr/io.h>
int main(void)
{
Init();
DDRD |= (1 << 0x02); // PD2 als Ausgang
StatusLED (OFF);
Msleep (1000);
PORTD = (1 << 0x02); // PD2 gesetzt (StatusLED rot)
DDRC |= (0x04); // Port PC2(=ADC2) als Ausgang = Blink-LED-Anschluss

TCCR1B |= (1 << CS12); // set up timer at Fcpu/256
for (;;)
{
if (TCNT1 >= 15624) //
{PORTC ^= (1 << 0x02);// Toggle die LED
TCNT1 = 0; //Counter zurücksetzen,
}
}
return (0);
}

Mattze96
16.04.2012, 19:12
hallo vilem,

hast du die neuste version der asuro-libary installiert?? ältere unterstützen nämlich nicht den befehl Msleep()



mfg Mattze

markusj
16.04.2012, 23:14
Glaubst du es ist eine gute Idee, Hardwareressourcen umzukonfigurieren die eigentlich von der Asurolib verwendet werden? Timer1 wird für die Motorsteuerung benötigt! Wenn du eine Bibliothek verwendest, die von der Hardware abstrahiert, und dann aber gleichzeitig noch auf der Hardware arbeiten möchtest, kommst du nicht umhin, dir anzusehen was die Bibliothek tut und nutzt.

mfG
Markus

Vilem
17.04.2012, 14:31
Sorry, sorry, Markusj, als Newbie kann ich die asurolib noch nicht so richtig lesen (geschweige denn alles verstehen) und wußte nicht, dass die Motorsteuerung timer1 benutzt. Ich wollte den Asuro lediglich als board benutzen und mal die timer-Funktionen ausprobieren. Das hab' ich jetzt gemacht, in dem ich alles asuro-spezifische im code gelöscht habe und siehe die 1-sec-BlinkLED funktioniert. Den funktionierenden code hänge ich nochmals an, der vielleicht auch andere Neulinge interessiert. Vilem

/*Fcpu = 8 MHz, TIMER = 1/sec, BlinkLED = 1/sec*/
#include <avr/io.h>
int main(void)
{
DDRD |= (0x04); // PD2 als Ausgang (daran hängt die rote StatusLED)
DDRB |= (0x01); //PB0 als Ausgang (daran hängt die grüne StatusLED)
PORTB &= ~ (0x01); // PB0 nicht gesetzt (grüne StatusLED aus)
PORTD |= (1 << 2); // PD2 gesetzt (StatusLED rot an)

DDRC |= (1 << 2); // Port PC2(=ADC2) als Ausgang
//Hardware:BlinkLED-Anode an PC2,Kathode über 560 Ohm an GND
TCCR1B |= (1 << CS12); // set up timer at Fcpu/256
for (;;)
{
if (TCNT1 >= 15624) // check counter
{PORTC ^= (1 << 0x02);// toggle die BlinkLED
TCNT1 = 0; //counter zurücksetzen,
}
}
return (0);
}