Loading...
  Show Posts
Pages: 1 [2] 3
16  Forum 2005-2010 (read only) / Troubleshooting / Re: 0021 ubuntu 10.10 64bit on: November 01, 2010, 04:16:26 pm
I have the same problem on Ubuntu 10.04 32bit, works fine with 018 from PPA but not with any other version downloaded from arduino.cc. I also tried to symlink avrdude and .conf.
(Arduino Duemilanove (atmega328))
17  Forum 2005-2010 (read only) / Deutsch / Re: LED-Anzeige on: January 16, 2011, 04:43:16 pm
Das ist doch genauso ein Nachbau, warum kauft Ihr nicht bei den "offziellen" Quellen (Liste hier: http://arduino.cc/en/Main/Buy), ist auch nicht viel teurer und man weiß was man kriegt.
18  Forum 2005-2010 (read only) / Deutsch / Re: Problem mit Timer (Interrupt) on: January 17, 2011, 03:04:26 am
Ich hab's gestern abend noch alleine lösen können. Irgendwo hatte ich mal gelesen, dass man in einer ISR so wenig wie möglich machen soll, also hab ich den ganzen Anzeige-Kram da raus genommen und zähle in der ISR nur noch Sekunden und Minuten, der Rest ist im Main-Loop. Jetzt läuft es.
19  Forum 2005-2010 (read only) / Deutsch / Problem mit Timer (Interrupt) on: January 16, 2011, 03:59:03 pm
Hallo,

ich habe ein Problem mit Timer Interrupts auf einem Duemilanove (Atmega 328). Folgendes Programm:
Code:
#include <Servo.h>
#include <LiquidCrystal.h>

unsigned int tcnt2;
int int_counter = 0;

int minute = 59;
int sekunde = 60;

Servo myservo;
LiquidCrystal lcd(12, 6, 5, 4, 3, 2);

int p1 = 0;
int p2 = 0;
int p3 = 0;
int p4 = 0;
boolean kiste = false;
 
void setup()
{
  /* First disable the timer overflow interrupt while we're configuring */  
  TIMSK2 &= ~(1<<TOIE2);  
  
  /* Configure timer2 in normal mode (pure counting, no PWM etc.) */  
  TCCR2A &= ~((1<<WGM21) | (1<<WGM20));  
  TCCR2B &= ~(1<<WGM22);  
  
  /* Select clock source: internal I/O clock */  
  ASSR &= ~(1<<AS2);  
  
  /* Disable Compare Match A interrupt enable (only want overflow) */  
  TIMSK2 &= ~(1<<OCIE2A);  
  
  /* Now configure the prescaler to CPU clock divided by 128 */  
  TCCR2B |= (1<<CS22)  | (1<<CS20); // Set bits  
  TCCR2B &= ~(1<<CS21);             // Clear bit  
  
  /* We need to calculate a proper value to load the timer counter.
   * The following loads the value 131 into the Timer 2 counter register
   * The math behind this is:
   * (CPU frequency) / (prescaler value) = 125000 Hz = 8us.
   * (desired period) / 8us = 125.
   * MAX(uint8) + 1 - 125 = 131;
   */  
  /* Save value globally for later reload in ISR */  
  tcnt2 = 131;    

  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  kisteZu();
  lcd.begin(16, 2);
  anzeige("Hallo!", 0);
  delay(2000);
  anzeige("Herzlichen", 1);
  delay(2000);
  anzeige("Glueckwunsch!", 1);
  delay(2000);
  lcd.clear();
  anzeige("Findet den Code", 0);
  anzeige("und oeffnet die", 1);
  delay(3000);
  lcd.clear();
  anzeige("Kiste. Ihr habt", 0);
  anzeige("aber nur eine", 1);
  delay(3000);
  lcd.clear();
  anzeige("Stunde Zeit.", 0);
  anzeige("Also beeilt Euch", 1);
  delay(3000);
  
  lcd.clear();
  /* Finally load end enable the timer */  
  TCNT2 = tcnt2;  
  TIMSK2 |= (1<<TOIE2);  
}

 
void loop()
{
  if (!kiste) {
    p1 = lesePoti(0);
    p2 = lesePoti(1);
    p3 = lesePoti(2);
    p4 = lesePoti(3);

    lcd.setCursor(0,0);
    lcd.print("Code: ");
    lcd.print(p1, DEC);
    lcd.print(":");
    lcd.print(p2, DEC);
    lcd.print(":");
    lcd.print(p3, DEC);
    lcd.print(":");
    lcd.print(p4, DEC);
    if (p1 == 1 && p2 ==2 && p3 == 3 && p4 == 4) {
      kisteAuf();
    }
    delay(100);
  } else {
    anzeige("Geschafft!", 0);

    delay(10000);
  }
}

void kisteAuf()
{
  // disable timer
  TIMSK2 &= ~(1<<TOIE2);
  lcd.clear();  
  kiste = true;
  lcd.setCursor(0,1);
  lcd.print("Kiste ist: auf");
  myservo.write(0);
  delay(2000);
}

void kisteZu()
{
  lcd.setCursor(0,1);
  lcd.print("Kiste ist: zu ");
  myservo.write(45);
}

int lesePoti(int nr)
{
  int val = analogRead(nr);
  delay(10);
  return map(val, 0, 1023, 0, 9);
}

void anzeige(char* s, byte zeile)
{
  lcd.setCursor(0,zeile);
  lcd.print(s);
}

ISR(TIMER2_OVF_vect) {  
   /* Reload the timer */  
   TCNT2 = tcnt2;  
   int_counter += 1;
   if (int_counter == 1000) {
     int_counter = 0;
     sekunde--;
     if (sekunde == 0) {
       minute--;
       sekunde = 59;
     }
     lcd.setCursor(0,1);
     lcd.print("Zeit:");
     lcd.setCursor(11,1);
     if (minute < 10) {
       lcd.print(0);
     }
     lcd.print(minute);
     lcd.print(":");
     if (sekunde < 10) {
       lcd.print(0);
     }
     lcd.print(sekunde);
   }
}
Ist der Timer aus läuft alles wunderbar. In der ersten Zeile auf dem LCD-Display wird der Wert von 4 Potis angezeigt, in der zweiten Zeile läuft eine Uhr rückwärts.
Ist der Interrupt aktiv läuft das Programm auch ordentlich an, aber nach ca. 10-60 Sekunden (unbestimmte Zeit) wird auf dem LCD nur noch Schrott angezeigt (komische Zeichen, blinkender Cursor usw.):

Offenbar gibt es einen Konflikt zwischen dem Timer und irgendeiner anderen Arduino-Funktion. Aber wo? Und wie kann ich das Problem lösen?
Danke für jede Hilfe, das ganze muss in 4 Tagen laufen (Geburtstagsgeschenk).
20  Forum 2005-2010 (read only) / Deutsch / Re: Arduino ohne externen Quarz Probleme on: December 08, 2010, 07:10:46 am
Ist vielleicht die Baudrate zu hoch für interne Taktung? Wie kann ich die verringern?
21  Forum 2005-2010 (read only) / Deutsch / Arduino ohne externen Quarz Probleme on: December 07, 2010, 03:40:04 pm
Hallo,

wie schon hier http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1291624299/all beschrieben habe ich Probleme Sketches auf einen Arduino mit interner Taktung zu bekommen. Jetzt habe ich mal die boards.txt verglichen und dabei einige Merkwürdigkeiten festgestellt.
Die Unterschiede vom Duemilanove zu ATmega328 on a breadboard (8 MHz internal clock):
upload.protocol=stk500 vs. arduino
bootloader.path=arduino:atmega vs. atmega
build.core=arduino:arduino vs. arduino

In dem Moment wo der Bootloader auf dem Atmel drauf ist sollte es doch keinen Unterschied machen ob ich interne oder externe Taktung habe, oder? Die Fuses sind doch dann gesetzt und werden nicht bei jedem Sketch neu gesetzt, oder? Also müsste man doch beide Arduinos gleich laden können?
Warum bekomme ich da keine Kommunikation mit dem Atmel hin?

22  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich nicht programmieren on: December 07, 2010, 07:04:49 am
Was passiert eigentlich wenn man einen auf "interner Takt" gefuseten Atmel mit einem Quarz beschaltet? oder anders gefragt, könnte ich meinen Atmel auf mein Duemilanove-Board stecken und versuchen ihn dort mit 'nem Sketch zu laden?
23  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 07:53:53 am
Ich hab den Bootloader für internen Oszillator gebrannt. Die Verdrahtung ist auch wie in dem Link oben angegeben (Arduino RX - Atmel RX und Arduino TX - Atmel TX) zusätzlich Reset (hatte ich am Anfang nicht dran, ging aber auch nicht).

Kann man denn aus der Tatsache, dass die LED an Pin 13 (Atmel Pin 19) einmal blinkt bei Reset folgern dass der Bootloader läuft?
24  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 06:54:11 am
Wie gesagt, ich hab die Version ohne Quartz. Also wähle ich das Board aus der Breadboard.zip aus (internal clock). Aber das Hochladen der Sketches funktioniert nicht, so als würde die serielle Kommunikation nicht laufen.
25  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 06:16:57 am
Nicht wirklich, wie gesagt, es gab keine Fehler aber wie kriege ich das raus? Dass die LED am (Arduino-)Pin 13 einmal blinkt bei Reset wäre ein Indiz dass der Booloader da ist?
26  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 05:30:11 am
Ach so, ich wollte aber mal eine ganz minimale Version probieren. Sollte ja lt. Tutorial auch gehen. Nur kann ich eben keine Sketche hochladen  >smiley-sad
27  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 05:15:59 am
Ja, die breadboard.zip ist installiert, sonst hätte ich glaube ich den Bootloader nicht brennen können. Wo sollen die Kondensatoren hin?
28  Forum 2005-2010 (read only) / Deutsch / Re: Minimaler Arduino lässt sich niht programmieren on: December 06, 2010, 04:26:46 am
Nein, die Fuses sollten nicht verändert sein, also lt. Auslieferungszustand (intern 8MHz). Schau Dir mal die Anleitung im Link an, da kann man den AVR angeblich über das Arduino-Board mit Sketches laden. Klappt nur nicht. Evtl. Timing Problem wegen interner Taktung?
29  Forum 2005-2010 (read only) / Deutsch / Minimaler Arduino lässt sich nicht programmieren on: December 06, 2010, 03:31:39 am
Hallo,

ich brauche Hilfe! Ich wollte mir eine minimale Arduino-Lösung bauen wie hier  http://arduino.cc/en/Tutorial/ArduinoToBreadboard beschreiben (interner Takt). Ich habe den Bootloader auf den ATmega328 geschrieben (zumindest kam keine Fehlermeldung und ich hoffe er ist drauf), aber beim Versuch Sketche hochzuladen kommt immer avrdude: stk500_recv(): programmer is not responding (Arduino IDE 0018, Ubuntu 10.04). Ich hab alles wie im o.g. Link verdrahtet (zusätzlich den Reset-PIN auf dem Breadboard-Chip mit dem Reset auf dem Arduino-Borad verbunden) aber es läuft nicht.
Ich habe mal eine LED an's Arduino-Äquivalent PIN 13 gehängt, die blinkt nach Reset und wenn ich mit dem Upload-Versuch beginne, dann blitzt ganz kurz die RX-LED auf dem Arduino Board zwei mal und dann kommt nach einigen Sekunden der Fehler.
Was kann ich da tun? Ist da noch ein Fehler in der Anleitung? Ich hab jetzt leider keinen Quarz um das ganze mal mit externer Taktung zu probieren.
30  Forum 2005-2010 (read only) / Troubleshooting / Re: Minimal breadboard: programmer is not responding on: December 08, 2010, 02:39:27 am
Yes, I did (at least I guess I did). I did it just the way it was described in the tutorial I linked in the thread start post.
Pages: 1 [2] 3