Loading...
  Show Posts
Pages: [1] 2 3 4
1  International / Deutsch / Re: Weitere und ernste Probleme mit Fahrtenregler on: December 21, 2012, 12:27:42 pm
Ich habe heute früh von Arduino auf C++ umgeschwenkt. Mit dem AVR Studio 5.1 und dem AVR USB Programmer hat es prima hingehauen. Ich habe zwei Interrupts programmiert, der eine zählt einen Counter hoch und spielt PWM, der andere überwacht PIN4 und gibt Signale bei HIGH und LOW. Mit diesem messe ich die Impulslänge des Fernsteuersignals. Dieses verwurschte ich zu einer Sollgeschwindigkeit. Aus der Sollgeschwindigkeit mache ich dann eine Istgeschwindigkeit, die dem Signal mit leichter Trägheit folgt.

Dieses Geschwindigkeitssignal übergebe ich dann meiner Software PWM. Klappt wunderbar!
2  International / Deutsch / Re: Aus Zeitmangel: Arduino und reichhaltiges Elektroniksortiment abzugeben on: December 21, 2012, 12:21:45 pm
Sollen wir jetzt bieten? Und der der den höchsten Preis abgibt kriegt es?

Willst Du das noch vor dem Weltuntergang durchziehen?

Sag mal!
3  International / Deutsch / Re: PulseIn im Fahrtenregler on: December 20, 2012, 12:56:19 pm
Danke für diese ausführliche Erklärung. Ich wusste schon, dass PulseIn den Programmablauf stört. Das es aber auch wartet, bevor etwas passiert, war mir neu. Damit ist das für mich völlig ungeeignet. Das bedeutet nämlich schon im Normalfall, dass die Schleife erst alle 20 ms weiterläuft. Wenn dann noch ein Puls nicht ordnungsgemäß erkannt wird, läuft die PWM mit 40 oder 60 ms alten Werten. Angenommen das Auto fährt 45 km/h, dann bewegt sich die Karre in 60 ms schon 750 mm weit. Zu weit für das Fähren in einer Halle.

Ich werde also auf den Einsatz von PulseIn verzichten und das Gänze mit Externen Interrupts regeln.
4  International / Deutsch / Re: PulseIn im Fahrtenregler on: December 20, 2012, 07:35:46 am
Wer kann helfen, was macht PulseIn?
5  International / Deutsch / Re: analogWrite auf Attiny on: December 20, 2012, 07:34:28 am
Zu Deinen Fragen, erni-berni:

Er blinkt völlig chaotisch, wobei kein Dimmen erkennbar ist, das heißt, die LED leuchtet immer mit voller Kraft!

Keine Fehlermeldungen!

Alle möglichen Pinbelegungen ausprobiert. Kein Erfolg!

Ja, andere Programme laufen. Alles getestet, selbst das Einlesen des Empfängers hat schon geklappt.

Ja, auch der Blinksketch läuft mit der erwarteten Frequenz, Fehler in der Blinkfrequenz kleiner 10 % . Hat mich übrigens bewogen, die eingelesene Pulslänge automatisch zu korrigieren. Wobei automatisch heißt, dass er immer nach der aktuell größten und kleinsten Impulsdauer sucht, und diese dann als 1 ms bzw. als 2 ms interpretiert.

Ich werde Deinen Sketch mal ausprobieren.

Danke für Deine Bemühungen!

6  International / Deutsch / PulseIn im Fahrtenregler on: December 20, 2012, 02:47:04 am
Für mein Fahrtenreglerprojekt nutze ich zu Erzeugung des PWM-Signal eine interruptgesteuerte PWM. Diese funktioniert recht gut. Das Problem ist, dass in dem Augenblick, wenn ich im Code die pulseIn Methode verwende, um die Signale aus dem Fernsteuerempfänger zu lesen, die Software-PWM nicht mehr funktioniert! Woran liegt das? Was macht pulseIn im Hintergrund mit meinen Interrupteinstellungen? (Läuft als CTC mit 1 als Vorteiler und 100 als TopWert, OCR0A sozusagen.)
7  International / Deutsch / analogWrite auf Attiny on: December 20, 2012, 02:40:23 am
Für meinen Fahrtenregler verwende ich einen Attiny45, einfach weil, der kleiner ist als der Atmega328 und theoretisch ausreichend Ressourcen zur Verfügung stellt. Ich bekomme aber kein analogWrite realisiert. Hat Eurerseits jemand Erfahrung damit? Ganz konkret geht es um die Frage, welche Pinnummer muss ich in der Arduino-Software verwenden, um PB0 und PB1 (das sind die beiden PWM-fähigen Pins am Attiny) anzusprechen?
8  International / Deutsch / Re: Weitere und ernste Probleme mit Fahrtenregler on: December 20, 2012, 02:32:36 am
Herzlichen Dank für diesen Tipp. Das ist absolut richtig.

Wenn Ihr den Code anschaut, dann seht Ihr, dass selbst der fehlerhafte Code kein dauerhaftes Leuchten verursachen sollte! Im zweiten If Statement steht eindeutig: Warte 2000 Millisekunden! Und zwar, nachdem ich die Laterne durch Abschalten der Energieversorgung durch PORTB = 0b00000000 ausgemacht habe! Dieser Programmteil wird immer dann aufgerufen, wenn (!(PINB & 0b00010000)) WAHR ist, also an PB4 kein Signal anliegt. Da ich PB4 über einen Pulldown auf Gnd ziehe, sollte bei jedem Durchlauf die Beleuchtungseinrichtung 2 sec leuchten und dann 2 sec eben nicht leuchten, oder?
9  International / Deutsch / Weitere und ernste Probleme mit Fahrtenregler on: December 19, 2012, 05:31:28 pm
Nochmals zur Einführung: Ich möchte gern ein 15 Jahre altes Modellauto auf digitale Fernsteuerung umbauen. Die Funke ist gekauft, die H-Brücke ist gebaut und getestet, alles ist ins Auto eingebaut. Als Fahrtenregler soll ein Attiny45 dienen, den ich entweder über AVR Studio 5.1 oder über einen Arduino Uno programmieren möchte. Da es bei mir nicht anders geht (weil ich definitiv zu dumm bin) muss ich mit Arduino 0.22 arbeiten.
Nun zum Problem: Bei mir verharken sich regelmäßig Arduino Befehle und AVR GCC Software. Zum Beispiel habe ich eine softwaremäßige PWM programmieren müssen, weil ich den Befehl writeAnalog auf dem Attiny nicht zum Laufen kriege. Ich habe alle Pins (bis zur Nummer 25) probehalber in den Befehl analogWrite (PIN, Teil_von_1024) reingeschrieben, es blinkte jeweils nur sinnlos vor sich hin. Also Software für PWM genutzt. Den Timer0 habe ich so eingestellt, dass er eine effektive Frequenz von 40 Hz realisierte, hat auch prima hingehauen, bis ich mittels pulseIn versucht habe den Empfänger der Fernsteuerung auszulesen. Just dann gab es keine Software-PWM mehr, weil es plötzlich Interrupts nicht mehr gibt. (Das der Befehl pulseIn für die Dauer der Messung, also in meinem Fall für max. 2 ms lahmlegt, war mir schon klar, dass es aber gar keine Interrupts mehr gibt?)
Gut habe ich mir gesagt, also auch noch dass in die Software rein. Da es nicht so genau drauf ankommt, habe ich mir gedacht, misst einfach am Anfang jeder Schleife. Wenn du ein paar microsekunden verpasst, dann ist das nicht so schlimm, es wir ja oft genug gemessen.

Daraus ergab sich folgender Code:

Code:
void loop() {

  if ((PINB & 0b00010000) && (run=0)) {

    Start = millis();
    run = 1;
  }
 
  if ((!(PINB & 0b00010000)) && (run = 1)) {
    Impulsdauer = millis() - Start;
    run = 0;

    PORTB = 0b00001111;
    delay(2000);
    PORTB =0b000000000;
    delay(2000);
  }
}

Ich sags nochmal deutlich, dass ist eine Probe!

Was mich an der ganzen Sache fasziniert ist die Tatsache, dass die LED, die an PB0, PB1, PB2 oder PB3 angeschlossen werden kann, dauerhaft leuchtet! Obwohl sie nur 2 sec. lang leuchten sollte. Warum tut sie das?

Normalerweise habe ich das alles mit der bekannten und so beliebten Syntax mit Bitshift und allem Drumherum geschrieben, aber für micht ist das so besser lesbar!

Danke für Eure Antworten!
10  International / Deutsch / Verständnisfrage zum Takt on: December 12, 2012, 02:44:59 pm
Ich habe folgendes kleines Problem beim Programmieren des Attiny45. Ich habe den gekauft und habe aus dem Internet entnommen, dass der standdardmäßig mit 8MHz internem Oszillator getaktet wird. Ich habe mir mit AVR Studio 5.1.208 die Fuses angeschaut, und es sieht wie folgt aus:


Code:
SELFPRGEN = [ ]
RSTDISBL = [ ]
DWEN = [ ]
SPIEN = [X]
WDTON = [ ]
EESAVE = [ ]
BODLEVEL = DISABLED
CKDIV8 = [X]
CKOUT = [ ]
SUT_CKSEL = INTRCOSC_8MHZ_6CK_14CK_64MS

EXTENDED = 0xFF (valid)
HIGH = 0xDF (valid)
LOW = 0x62 (valid)

Daraus geht meines Erachtens hervor, dass das Ding tatsächlich mit 8MHz läuft.
Jetzt habe ich folgenden Programmteil ausprobiert und festgestellt, dass die richtigen Zeiten nur rauskommen, wenn ich anstelle von 8MHz 1MHz angebe. Frage, Läuft der Chip mit 8 oder mit einem MHz?

Code:
    #define F_CPU 1000000                    // clock 1.0 MHz, internal oscillator

    #include <avr/io.h>
    #include <util/delay_basic.h>
    #include <avr/interrupt.h>

    #define LED PB4

void delay_ms(uint16_t ms){
  while (ms > 0) {
    _delay_loop_2(F_CPU/4000);
    ms--;
  }
}
   
    ISR (PCINT0_vect)               // Interrupt on PCINT0 vector
    {
    PORTB ^= (1 << LED);               // Toggle LED
    delay_ms (500);
    PORTB ^= (1 << LED);               // Toggle LED

    }




int main(void)
{

    GIMSK = _BV (PCIE); // Pin Change Interrupt Enable
    PCMSK = _BV (PCINT3); // Enable external interrupts PCINT3, PB3
    // MCUCR = 0x00;    // PCINT0 is triggered on rising edge
    sei(); // int - Global enable interrupts
    DDRB |= (1 << LED); // Set direction register output

        for (;;) {                  // loop (endless)
          asm("NOP");
        }

    return 0;
}

In dem ganzen Codeschniplsel geht es nur um die Zeile #define F_CPU und delay_ms(500). Wenn ich 8.000.000 angebe, dann dauert das nicht eine halbe Sekunde, sondern ganze vier Sekunden.
11  International / Deutsch / Re: Attiny 45 programmieren on: December 07, 2012, 12:31:33 pm
Ich bin nochmals zurück auf Los und habe in einem weit entfernten Verzeichnis Arduino 0.22 installiert. Dann habe ich, wie gefordert, ein neues Verzeichnis namens Hardware angelegt. Dort hinein habe ich die Files aus attiny45_85 gespielt, und siehe da, es funktioniert, sprich, es blinkt.

Ob ich es noch mit Arduino 1.0.X versuche, weiß ich noch nicht.

Herzlichen Dank für Euer Bemühen.

ArduStemmi
12  International / Deutsch / Re: Attiny 45 programmieren on: December 07, 2012, 11:30:25 am
Ich habe es nun auch noch mit arduino 0.22 versucht. Dazu fand ich cores etc. auf dieser Seite:
http://www.instructables.com/id/Program-an-ATtiny-with-Arduino/step5/ATtiny-core-files/.

Wieder ohne jeden Erfolg.
13  International / Deutsch / Re: Attiny 45 programmieren on: December 07, 2012, 10:57:22 am
Ich habe die Arduini IDE neu installiert, die angegebe Datei in den ...\Arduino\hardware\ Pfad gestellt, kein Erfolg. Die Fehlermeldung lautet:


In file included from d:\my documents\Arduino\arduino-1.0.2\hardware\arduino\cores\arduino/Arduino.h:193,
                 from Blink.ino:10:
d:\my documents\Arduino\arduino-1.0.2\hardware\arduino\cores\arduino/HardwareSerial.h:125:2: error: #error TXC0 not definable in HardwareSerial.h

Wer hat weitere gute Ideen!

14  International / Deutsch / Re: Attiny 45 programmieren on: December 07, 2012, 09:35:17 am
Ja den Arduino habe ich mit der Arduino 1.0.2 IDE mit dem Programmer bespielt.

Werde es gleich noch einmal versuchen!

15  International / Deutsch / Re: Attiny 45 programmieren on: December 07, 2012, 09:16:00 am
Im Wesentlichen habe ich es so gemacht, wie es hier
http://www.sachsendreier.com/asw/clernen/arduinoasisp/arduinoasisp.html
zu sehen ist.

Einen TinyCore habe ich auch runtergeladen und in die Ordnerstruktur eingebunden unter hardware/arduino/core.

Pages: [1] 2 3 4