Atmega 328P Software PWM

Gast #1392402
boolean currentState;

ISR(TIMER1_OVF_vect){
    currentState = !currentState;
    PORTD = currentState<<7;  //Toggelt PIN 7
}

void setup(void) {
  currentState = LOW;
//**********Timer1***********************

TCCR1A = 0<<COM1A1 | 0<<COM1A0 | 0<<COM1B1 | 0<<COM1B0 | 0<<WGM11 | 
0<<WGM10; //Setzt Timer1 auf NormalOperationMode
TCCR1B = 0<<ICNC1 | 0<<ICES1 | 0<<WGM13 | 0<<WGM12 | 0<<CS12 | 0<<CS11 | 
1<<CS10;  //Prescaler auf x1 sonst alles auf Normal
TCCR1C = 0;  //Keine Advanced-Einstellungen
TIMSK1 = 1<<TOIE1;  //Interrupt Enable für Timer 1
//***************************************
}

void loop(void) {
}

Das ganze ist mit der Arduino-IDE geschrieben.
Timer1 ist ein 16bit Counter. Atmega328P läuft mit 16MHZ. => Pro Sek. 
ca. 244 Overflows.
Mein Problem ist jetzt:
Wenn ich mein Messgerät (Voltcraft VC140) dranhänge, dann seh ich keine 
feste Spannung. Er zählt hoch und zwar etwa 10mV pro Sek. aber das recht 
kontinuierlich. Allerdings geht er auch tw. kurz wieder runter. Die 
grobe Richtung ist aber nach oben.

Woran liegt das? Was mach ich falsch?

gruß und danke
Gast
Es stehen alle Pins auf OUTPUT per default.
Sonst dürfte ich ja auch gar nichts sehen am Messgerät, oder?

Es ist außerdem so: Wenn ich den Prescaler geeignet wähle, toggelt PIN7 
einmal in 4 Sekunden. Das kann ich auch gut mit meinem Messgerät 
nachvollziehen.

Kann es sein, dass es am Messgerät liegt. D.h., dass die Freq. "zu 
niedrig" ist für das Messgerät.

Mit "HardwarePWM" zeigt es ja wie gesagt den richtigen Wert an...

Danke trotzdem für die Hilfe
Wieso schaust du nicht einfach ins Datenblatt?
Ich schätze mal, dass beim Atmega328P die Pins standardmäßig auch auf 
Input sind (High-Z).
Das was du misst wird die Spannung sein, die durch den getoggelten 
Pull-Up anliegt.
Ein Voltmeter ist kein geeignetes Messgerät für Signale. Hast du keinen 
Zugang zu einem Oszi? Selbst dort bleibt aber ein versehentlicher Input 
statt Output unbemerkt, da das Oszi einen hochohmigen Eingang hat.
Gast
sry wg. meiner ignoranz.
jetzt klappt's nämlich.

warum genau geht da bei pins auf INPUT die spannung langsam hoch?
das würd mich interessieren.


danke nochmal für die hilfe!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.