Anzeige:

Eagle Schaltplan hilfe

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

Von RuSsFiGhTeR am 21.06.2008 02:01

Alles klar habe soweit die Schaltung verändert den Atmega8 will ich lieber so lasssen wie er grade ist ist doch in ordnung so ??
UNd ich habe noch ne Frage reicht der 16Mhz Quarz aus ?
und ist der DCFF77 Empfänger richtig beschaltet ? Ich möchte mit dem von Pollin.de holen

Von gerold am 21.06.2008 10:38

RuSsFiGhTeR hat folgendes geschrieben:
UNd ich habe noch ne Frage reicht der 16Mhz Quarz aus ? und ist der DCFF77 Empfänger richtig beschaltet ?

Hallo RuSsFiGhTeR!

Jetzt da du nach dem Quarz fragst (was bei deinem Schaltplan eher ein Quarz-Oscillator ist -- denn ein Quarz gehört an zwei Pins des ATmega8 angeschlossen), fällt mir auf, dass du ja einen Wecker bauen möchtest.

Um die Zeit zwischen den DCF77-Uhrenabgleichs zu überprücken, brauchst du einen Uhrenquarz. Lies dir unbedingt den ganzen Thread http://www.loetstelle.net/forum/viewtopic.php?t=1801 durch.

Also ich denke, dass der Entwurf dafür noch nicht ideal ist. Und ob der DCF77-Empfänger richtig angeschlossen ist, weiß ich auch nicht. Damit habe ich mich noch nicht beschäftigt.

Wichtiger Lesestoff, wenn du einen Wecker machen möchtest:
- http://avrhelp.mcselec.com/index.html?datetime.htm
- http://avrhelp.mcselec.com/index.html?eurotimedate.htm
- http://avrhelp.mcselec.com/index.html?time_.htm
- http://avrhelp.mcselec.com/index.html?date_.htm
- http://avrhelp.mcselec.com/index.html?config_clock.htm
- http://avrhelp.mcselec.com/index.html?date.htm

DCF77-Lesestoff:
- http://avrhelp.mcselec.com/index.html?configdcf77.htm
- http://avrhelp.mcselec.com/index.html?dcf77timezone.htm

mfg
Gerold
Smile

Von kalledom am 21.06.2008 10:45

Ein Tantal 10µF wäre parallel zum C1 sehr von Vorteil.
10...100nF KerKos von den Tastern nach GND wären noch ratsam, sonst mußt Du das Entprellen mühsam per Software erledigen.

Deine Schaltung möchte ich jetzt nicht auf den Kopf stellen, aber denk mal drüber nach, ob es nicht sinnvoller ist, den DCF-Ausgang an den INT0- oder INT1-Eingang (PD2 / PD3) anzuschließen. Dann mußt Du nicht ständig den Signal-Zustand abfragen, es könnte dann bei Änderung ein Interupt ausgelöst werden.
Die 4 LCD-Datenleitungen kannst Du an Port D lassen, die LCD-Steuerleitungen würde ich an Port C anschließen.

Von gerold am 21.06.2008 11:19

Hallo kalledom!

kalledom hat folgendes geschrieben:
KerKos von den Tastern nach GND wären noch ratsam, sonst mußt Du das Entprellen mühsam per Software erledigen.

Das ist nicht mühsam. Bascom bietet dafür den Highlevel-Befehl DEBOUNCE an.

@RuSsFiGhTeR: Verzichte doch auf die Pullup-Widerstände und schalte die internen Pullups ein. Zu einem Beitrag der das erklärt, habe ich ein paar Beiträge vorher bereits verlinkt.

kalledom hat folgendes geschrieben:
denk mal drüber nach, ob es nicht sinnvoller ist, den DCF-Ausgang an den INT0- oder INT1-Eingang (PD2 / PD3) anzuschließen.

Dafür gibt es eine fertige Bascom-Library. Es ist kein Interrupt-Pin nötig bzw. die Library würde die Interrupts nicht ausnutzen. Somit können auch die Steuerleitungen an Port D bleiben.

mfg
Gerold
Smile

Von Elektron am 21.06.2008 11:49

Mal abgesehen davon wäre das Entprellen über einen Monoflop möglich, oder, was noch viel einfacher ist für den Fall dass du in C programmierst, einfach eine Puffervariable (oder eben DEBOUNCE in BASCOM). Also dass das programmiertechnisch viel Aufwand ist, ist schlichtweg Quark.

Von kalledom am 21.06.2008 11:52

Hallo gerold,

gerold hat folgendes geschrieben:
Das ist nicht mühsam. Bascom bietet dafür den Highlevel-Befehl DEBOUNCE an.
.....
Dafür gibt es eine fertige Bascom-Library. Es ist kein Interrupt-Pin nötig bzw. die Library würde die Interrupts nicht ausnutzen.
Wenn Bascom verwendet wird, hast Du natürlich Recht, dann muß man das nicht selber programmieren. Bei C oder Assembler sieht die Welt anders aus. Es lesen ja auch andere mit, die evtl. nicht mit Bascom arbeiten. Für die sind solche Überlegungen ganz gut Smile

Von kalledom am 21.06.2008 11:54

Elektron hat folgendes geschrieben:
Also dass das programmiertechnisch viel Aufwand ist, ist schlichtweg Quark.
Jemand der so was behauptet, hat von Programmierung nicht viel Ahnung.

Von Elektron am 21.06.2008 20:20

Da weiß wohl einer bescheid Rolling Eyes Hier der Code:

Code:


void doAction(void)
{
 // Tue etwas auf Knopfdruck..
}

bool bKeyPressed = false;
int iKeyCountdown = 0;

for(;;)
{
 
 if(iKeyCountdown)
 {
   iKeyCountdown--;
 }
 else
 {
  if(PORTA & 0x01)
  {
   if(!bKeyPressed)
   {
    doAction();
    iKeyCountdown = 20;
    bKeyPressed = true;
   }
  }
  else
   bKeyPressed = false;
 }
}


Der Wert "20" ist hier willkürlich gewählt und blockt jede Statusänderung für 20 Schleifendurchläufe nach einem Tastendruck, der ein High am Eingang bewirkt. Muss entsprechend angepasst werden, bis die Tasten entprellt sind.

edit:
Mit gcc ließe sich der Code, den ich in C verfasst habe, auch in Assembler übersetzen, womit das Thema dann wohl auch gegessen wäre =)

Von kalledom am 21.06.2008 22:53

"Umständlich" hatte ich geschrieben; es ist zusätzlicher Programmieraufwand und kostet Rechnerleistung.
Das Listing ist für eine Taste, drei sind vorhanden.
Dann soll nach einer Zeit automatisch und schnell gezählt werden, wobei diese Routine auch bei Kondensator-Entprellung erforderlich wird.
Bei mir werden (Entprell-)Zähler standardmäßig in einem 1 ms-Interrupt behandelt und verwaltet. Damit können Entprellzeiten auf Millisekunden ganau konfiguriert und unterschiedliche Zeiten eines Tastendrucks genau ermittelt werden (kurz ... lang ... Dauer). PIC Assembler-Beispiel

Eine Frage habe ich da noch:

Elektron hat folgendes geschrieben:
Mal abgesehen davon wäre das Entprellen über einen Monoflop möglich, .....
Wie realisiert Du das in der Praxis ? Welche Zeit wählst Du für das Monoflop ?
Ich dachte immer, das ginge nur mit einem R/S-FlipFlop.

Von Elektron am 22.06.2008 00:29

Zitat:

Das Listing ist für eine Taste, drei sind vorhanden.


Es gibt so etwas, das nennt sich for-Schleife. Sollte man eigentlich kennen als QuickBasic-Vollprofi Wink

Zitat:

Wie realisiert Du das in der Praxis ? Welche Zeit wählst Du für das Monoflop ?
Ich dachte immer, das ginge nur mit einem R/S-FlipFlop.


Es geht auch mit einem Monoflop, wobei dann die Entprellung beim Rücksetzen nicht sonderlich gut ist, sofern man die Zeit nicht richtig trifft. Es war aber nur eingeworfen, tut keine Not das tote Huhn zu jagen, ich bin ganz klar dafür dass SW-Entprellung das einfachste ist.

Anzeige: