Hallo,
ich kann bei dem IC den Pin nur auf High aber nie wieder auf LOW setzen.
#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int main(void) {
init();
DDRD = (1<<PD7);
TCCR1B |= _BV(CS10); // Set up timer
while(1)
{
if (TCNT1 >= 49999){
PORTD ^= PD7;
TCNT1 = 0; // Reset timer value
}
}
return 0; // never reached
}
Der Atmega läuft mit 8Mhz und ist fest mit einem Board verlötet.
Gruß
chris schrieb: > Chris schrieb: >> PORTD ^= PD7; > > --> > PORTD ^= (1<<PD7); Sry hab ich natürlich so getestet. Aber tut sich trotzdem nichts!
Chris schrieb: > chris schrieb: >> Chris schrieb: >>> PORTD ^= PD7; >> >> --> >> PORTD ^= (1<<PD7); > > Sry hab ich natürlich so getestet. Aber tut sich trotzdem nichts! Standard laufen die Atmegas alle auf internal clock ? Ich habe so eine Ahnung das es daran liegt! Wo setzt man die am besten/sinnvollsten wenn man ein Makefile zum erzeugen und brennen benutzt ?
wo setzt du denn den interrupt? -> TIMSK1 !!! und gibst ihn frei? -> SEI() !!! gruß toni
Toni55 schrieb: > wo setzt du denn den interrupt? -> TIMSK1 !!! > und gibst ihn frei? -> SEI() !!! Er startet einen Timer und fragt das Zählregister ab. Da braucht er keine Interrupts, auch wenn hier der CTC-Modus prädestiniert wäre, der macht der ganzen Kram in Hardware ohne auch nur 1% CPU Belastung ;) > Standard laufen die Atmegas alle auf internal clock ? Ich habe so eine > Ahnung das es daran liegt! Eher weniger, wichtig ist das er überhaupt läuft. Also an dem geposteten Code kann ich nichts falsches sehen. Was geschieht in
1 | init(); |
Wenn ich mich nicht komplett verrechnet habe sollte die Led ca. 160 mal pro Sekunde toggeln. Das menschliche Auge ist allerdings ein wenig träge, weshalb das ein-ausschalten der Led's vermutlich nicht gesehen werden kann und als dauerhaftes leuchten wahrgenommen wird. Kannst ja mal versuchen den Prescaler zu erhöhen, CS11 für Prescale 8 statt wie momentan CS10 für Prescale 1.
Ingo L. schrieb: > ... Da braucht er keine Interrupts ... < er includiert aber "#include <avr/interrupt.h>" daher dachte ich :-(
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.