-
        

+ Antworten
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: Ein paar Fragen zum Timer !!!

  1. #21
    RN-Premium User Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.363
    Blog-Einträge
    97
    Anzeige

    Zitat Zitat von Nicole01 Beitrag anzeigen
    Ich habe die 1000000:8 und dan 125000:1400=89
    Bei den 89 habe ich 1 abgezogen ( so wie Ihr mir das gesagt habt )
    Somit kamm ich auf 88.
    Das paßt auch aber Du hast die Einheiten nicht mitgeschrieben. Oben stehen 1400kHz obwohl Du 1400Hz meinst Das ist das, was ich mit total falsch meinte. Die 88 sind für die ungefähr 1400Hz OK!

    Die 53 stimmen aber nicht!

    Immer ein wenig probiert und sofort am Oszilloskop das Ergebniss angeschaut.

    Nur leider gibt mein Attiny45 aus irgend einem Grund keinen Wert mehr aus ?
    Habe es auch schon mit einem ganz neuen Attiny versucht.
    Kann über den Port LED blinken lassen oder auch einen Taster steuern.
    Nur das PWM Signal kommt nicht mehr raus.
    Oszilloskop verstellt? Tasköpfe guten Kontakt? Keine andere Masseverbindung als über Meßkabel zB über Programmer-PC-Schutzkontakt zum Oszi?

    Im Programm kann ich auch erstmal keinen Fehler entdecken. Ich bin aber kein C Programmierer. Pluszeichen bei den Registerzuweisungen sind jedoch anscheinend unüblich, obwohl es wohl funktioniert. Es ist üblicher dort ein Veroderungszeichen zu setzen, also so:
    Code:
        TCCR0A = (1<< COM0B1) | (1<< WGM01) | (1<< WGM00);
        TCCR0B = (1<<WGM02) | (1<< CS01);
        while (1);
    Ein unendliche while Schleife, in dem nichts passiert, kann man so meine ich, auch einfach mit Semikolon abschließen - aber absolut ohne Gewähr. Das ASM nop irritiert mich.

    Wenn man den OCR0A Wert in dem Modus dem OCR0B Wert von oben annähert ist Obacht geboten, weil es ja irgendwann keinen Comparematch für die PWM geben kann, da der TCNT den OCR0B-Wert nicht mehr erreichen kann.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #22
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    14
    Hallo Searcher,

    mal wieder vielen Dank für deine Hilfe.

    Am Oszi lag es nicht.
    Habe es mit einem Attiny 24 versucht.
    Da geht es sofort.

    Nochmals zwei neue Attiny 85 getestet ( kein PWM Signal ) komisch komisch.

    Benötige ich zwingend die Minimal Beschaltung für den Attiny ?
    Oder sollte es auch ohne funktionieren ?

  3. #23
    RN-Premium User Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.363
    Blog-Einträge
    97
    Zitat Zitat von Nicole01 Beitrag anzeigen
    Benötige ich zwingend die Minimal Beschaltung für den Attiny ?
    Hallo,
    Was verstehst Du da genau drunter? Für mich würde das ein 10kΩ Widerstand von RESET nach Vcc und ein 100nF Kerko direkt an die GND Und Vcc Anchlüsse des Tiny bedeuten. Damit kannst Du jetzt Unsicherheiten ausschließen.

    Ich habe gerade vor ein paar Tagen "gezwungenermaßen" das AVR-Studio installiert -programmiere sonst mit BASCOM- und auch ein ATTiny25 auf dem Steckbrett sitzen. Da habe ich jetzt Dein letztes Programm für den Tiny25 (habe keinen Tiny85 zur Hand, der ja außer einem größeren Speicher gleich ist und das gleiche Datenblatt hat) compiliert und es läuft trotz + Zeichen und ASM nop wunderbar. Ich benutze nur ein Steckernetzteil und auch keine Minimalbeschaltung. Also blank den Tiny ins Steckbrett und Strom dran. Es mag aber trotzdem bei Dir wegen zB anderer Stromquelle, Zuleitungen, Störungen, ... nötig sein. Du kannst das Oszi mal auf die Versorgung hängen und den Einfluß eines 100nF Abblockkondensators beobachten. Mir lief es eiskalt den Rücken runter und wenn irgendwas nicht geht, stecke ich so ein Ding als erstes dazu, wenn es nicht vorhanden ist.

    Ist das ein Steckbrettaufbau? Da ist natürlich auch Schmutz in den Kontakten oder die Kontakte selbst eine Fehlerquelle. Vor dem Compilieren den richtigen µC ausgewählt? Ein Clean vor dem Build durchgeführt? (also Löschen früherer erzeugte Compiler Dateien im Projekt. Ich glaube so ist es sicher, hab ich aber bei meinem AVR Studio 4.19 noch nicht alles ausgetestet.)

    Am Programm liegt das Problem nicht. Bei mir gab es statt 1kHz eine Frequenz von 1,054kHz. (Gemessen direkt am OC0B (PB1) ohne weitere Beschaltung des Pins) Liegt an dem internen Oszillator, den ich über den aktivierten CLKO (PB4) gemessen habe. Liegt bei 1,055MHz (kleine Meßfehler durch Oszi eingeschlossen)

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #24
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    32
    Beiträge
    2.029
    Das ASM nop irritiert mich
    @Searcher das ist Deterministischer Programmierstil und immer zu Empfehlen! So hat man ein definiertes Verhalten, denn ein asm("nop"); kann nicht optimiert werden, wohingegen bei einer leeren Schleife nicht garantiert werden kann dass er es niemals wegoptimiert, weil es dafür keine Vorschriften gibt.

    Warum der Tiny jetzt keinen Ton mehr von sich gibt ist äußerst seltsam ... aber nur zur Sicherheit gefragt, du hast den Programmieradapter abgezogen bevor du gemessen hast oder? PB1 ist auch der MISO Pin und soweit ich weis wird der fürs programmieren verwendet.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #25
    RN-Premium User Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.363
    Blog-Einträge
    97
    Zitat Zitat von Ceos Beitrag anzeigen
    @Searcher das ist Deterministischer Programmierstil und immer zu Empfehlen! So hat man ein definiertes Verhalten, denn ein asm("nop"); kann nicht optimiert werden, wohingegen bei einer leeren Schleife nicht garantiert werden kann dass er es niemals wegoptimiert, weil es dafür keine Vorschriften gibt.
    Danke für den guten Tipp Ceos
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #26
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    14
    Habe jetzt mal alle Kabel von meinem Steckbrett getauscht.

    Und siehe da, jetzt kommt auch mein PWM Signal wieder an
    Das hat mich Zeit gekostet sag ich euch

    Nochmals eine kurze Frage:

    OCR0A = Ist für die Frequenz zuständig
    OCR0B = für den Zeitabstand

    Habe ich das soweit richtig verstanden ?
    So kann ich es auf dem Oszi zumindestens sehen wenn ich die Daten ändere.

    Ist es auch möglich, das ich einen Taster anschließe und bei jedem Tastendruck eine andere Frequenz angezeigt wird ?

    Wenn ja, benötige ich dafür immer einen neuen Timer ?
    Oder reicht es wenn man die OCR0A , OCROB Werte anpasst ?

    Vielen Dank nochmals an alle für eure Hilfe.

  7. #27
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.854
    Oder reicht es wenn man die OCR0A , OCROB Werte anpasst ?
    Es reicht, wenn man die beiden!!! Werte anpasst.
    Der gültige Wertebereich von OCR0B ändert sich ja auch mit dem Ändern von OCR0A.

  8. #28
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    32
    Beiträge
    2.029
    Kurzeinführung Taster: Da du einen Atmel hast und wir den ganzen Schaltungskladderadatsch weglassen können brauchst du faktisch nur einen kleinen Kondensator und einen Taster.

    Die Atmels haben alle sognenannte interne Pull Up Widerstände, in der Größenordnung 10-50kOhm soweit ich das in ERinnerung habe.

    Du musst dafür den Pin für den Taster im DDR Register auf Eingang konfigurieren und im OUT Register den Pin auf High setzen. Dann schließt du den Kondensator an den Pin und nach Ground an (der Puffert ein wenig Energie wenn der Schalter prellt) und natürlich deinen Taster, ebenfalls nach Ground.

    Wenn du den Taster also drückst, wird der Pin auf Ground gezogen und zeigt im IN Register eine 0, lässt du den Taster los, lädt sich der Kondensator über den Pull-Up Widerstand weider auf und zeigt dann im IN Register eine 1.

    Du musst also in deiner nop-Schleife dann nur das IN-Register abfragen und je nachdem ob dein IN Register für den Pin eine 1 oder 0 anzeigt das OCR0B REgister für das Tasterverhältnis ändern oder das OCR0A Register für die Frequenz

    Den Code habe ich zwecks Lerneffekt dieses mal weg gelassen :P

    PS: Wkrug hat natürlich recht, wenn du OCR0A veränderst, musst du auch OCR0B entsprechend Ändern damit sich das Tastverhältnis nicht verschiebt
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #29
    Neuer Benutzer Öfters hier
    Registriert seit
    08.02.2017
    Beiträge
    14
    Neuer Versuch,

    Code:
    int main(void)
    {
    	DDRB = (1<<PB1);               // Ausgang PWM
    	DDRB &= ~(1<<PB0);           // Eingang Taster
    	PORTB |= (1<<PB0);           //  Pull - Up aktivieren
    	
    	
    	OCR0A = 124;
    	OCR0B = 63;
    		
    	TCCR0A = (1<< COM0B1) + (1<< WGM01) + (1<< WGM00);
    	TCCR0B = (1<<WGM02) + (1<< CS01);
    		
    	
    	while (1)
    	{
    		if (!(PINB & (1<<PB0)));
    	}
    	PORTB |= (1<<PB1);
    	}
    	    if (PINB & (1<<PB0));
    	{
    		PORTB |= ~(1<<PB1);
    		
    	}
    }
        
    }
    Es funktioniert so bis jetzt noch nicht.
    Habe es auf meinem Steckbrett aufgebaut.

    Könnt Ihr mir bitte einen Tip geben wo der Fehler sitzt ?

  10. #30
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.854
    Code:
    while (1)
    	{
    		if (!(PINB & (1<<PB0)));
    	}
    	PORTB |= (1<<PB1);
    	}
    	    if (PINB & (1<<PB0));
    	{
    		PORTB |= ~(1<<PB1);
    		
    	}
    Da stimmt schon mal die Syntax nicht
    while (1)
    {
    if (!(PINB & (1<<PB0)))
    {
    // Taster ist zu PinB.0 =0
    }

    PORTB |= (1<<PB1); // Schaltet PORTB 1 auf 1, macht aber keinen Sinn, wenn das ein PWM Ausgang ist
    PORTB &= ~(1<<PB1); // // Schaltet PORTB 1 auf 0, macht aber keinen Sinn, wenn das ein PWM Ausgang ist
    }
    Wenn der Taster gedrückt ist, musst Du doch die OCR Register ändern, siehe weiter oben.

+ Antworten
Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Ein paar Fragen ;)
    Von Checker 1.0 im Forum Robby RP6
    Antworten: 11
    Letzter Beitrag: 18.08.2011, 22:37
  2. Ein paar fragen ...
    Von Gamestake im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 21.04.2011, 10:12
  3. Ein paar Fragen
    Von Speed im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 03.11.2008, 08:19
  4. Ein paar Fragen zu µC
    Von Lars. im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 09.06.2006, 15:38
  5. Paar Fragen -g-
    Von Adacart im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 06.01.2005, 18:57

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •