| Autor |
|
|
|
BID = 573639
E-P-S Neu hier

Beiträge: 32 Wohnort: Neuruppin
|
|
Hallo zusammen. Eigentlich geht es darum das die Kommunikation zwischen meinem AVR und dem PC nicht funktioniert. Es kommt immer nur 192dez. bzw. &hC0 an. Gefolgt von 1-3 mal &h00.
Weil mich das schon den ganzen Tag herausfordert, und ich nicht dahinter komme wo der Fehler liegt, hab ich mal einen kleinen Test gemacht und bin auf folgendes Problem gestossen:
Ich habe am ATMega8 einen Quarz von 7,372800 Mhz. Am Port D.6 & D.7 ist jeweils eine LED.
folgendes BASCOM Programm läuft:
| Code : |
$regfile = "m8def.dat"
$crystal = 7372800
Dim Tim0_count As Byte
Led_red Alias Portd.7
Led_yel Alias Portd.6
Config Portd = Output
Toggle Led_red
Config Timer0 = Timer , Prescale = 1024
On Timer0 Tim0_isr
Enable Timer0
Enable Interrupts
Do
Loop
Tim0_isr:
Incr Tim0_count
If Tim0_count = 28 Then
Toggle Led_red
Toggle Led_yel
Tim0_count = 0
End If
Return |
|
So, laut meiner Berechnung: ( 7372800 / 1024 ) / 256 = 28.125
...müsste der Interrupt ca. 28 mal p. Sekunde aufgerufen werden. Daher zähle ich in der Interruptroutine bis 28 hoch und Toggle dann die LEDs. Eigentlich müssten diese jetzt jede Sekunde hin und her schalten. Sie tun dies aber alle 8 Sekunden.
Frage: Wieso?
Wenn, wie vermutet, der AVR zu langsam läuft würde dies auch erklären warum meine Kommunikation mit dem PC nicht funktioniert.
Bin für jeden Rat dankbar.
Anm: Bevor auch hier gemeckert wird. Ich habe diese Frage auch in anderen Foren gestellt. Mehr Antworten = mehr Ideen. Danke für das Verständnis. |
|
BID = 573640
Jornbyte Moderator
      
Beiträge: 7336
|
|
Hast du was an den Fusebits verändert? Ist der Controller im Auslieferzustand?
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten. |
|
BID = 573643
E-P-S Neu hier

Beiträge: 32 Wohnort: Neuruppin
|
Controller kommt grad aus der Schachtel - nagelneu. An den Fuse Bits hab ich auch nichts verändert.
|
BID = 573644
Her Masters Voice Inventar
     
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5312 Wohnort: irgendwo südlich von Berlin
|
dann rennt er mit seinem internen Takt und weiss nix vom Quarz. Schade eigentlich
_________________
Tschüüüüüüüs
Her Masters Voice
aka
Frank
***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
***********************************
[ Diese Nachricht wurde geändert von: Her Masters Voice am 21 Dez 2008 0:09 ]
|
BID = 573646
E-P-S Neu hier

Beiträge: 32 Wohnort: Neuruppin
|
Das glaube ich nicht, so sind die Fuse Bits gesetzt:
Bild eingefügt
CKSEL3, CKSEL2 und CKSEL1 sind gesetzt und das wäre bei 7.nnn MHz ja richtig. Und wie gesagt - ich hab die nicht verändert.
Nachtrag: Abgesehen davon wären 8MHz nicht so weit von 7.nnn MHz entfernt das er so lahm sein dürfte.
[ Diese Nachricht wurde geändert von: E-P-S am 21 Dez 2008 0:18 ]
|
BID = 573648
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Im Auslieferungszustand ist der Systemtakt des ATmega8 1MHz. Schau ins Datenblatt, ist oft hilfreich
Edit:
_________________
[ Diese Nachricht wurde geändert von: DonComi am 21 Dez 2008 0:26 ]
|
BID = 573649
E-P-S Neu hier

Beiträge: 32 Wohnort: Neuruppin
|
Ok, das würde die 8 Sekunden erklären, aber die Bits stehen doch richtig - oder?
|
BID = 573650
E-P-S Neu hier

Beiträge: 32 Wohnort: Neuruppin
|
Ok, hab's heraus gefunden. Die Geschichte mit dem Haken = 0 und kein Haken = 1 ist doch recht verwirrend.
Ich bedanke mich ganz heftig bei euch allen.
|
BID = 573651
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Nein, logischerweise nicht.
Das ist auch alles etwas konfus, da sie invertiert dargestellt werden.
Schau dir das Datenblatt exakt an und überlege dir alle Schritte genau (durchdenke die Logik, wie du die Bits bei Ponyprog setzten musst!) Es kann im schlimmsten Fall passieren, dass du dich aussperrst (Lockbits), im weniger schlimmen Fall musst du einen externen Takt anlegen.
_________________
|
BID = 573652
E-P-S Neu hier

Beiträge: 32 Wohnort: Neuruppin
|
Danke für den Tipp. Ich hab jetzt lediglich die CKSEL Bits invertiert und siehe da es geht. Die anderen rühre ich nicht an. Da ich den AVR jedoch schon mehrmals "bespielt" habe, gehe ich davon aus das diese richtig stehen
Danke nochmals.
|
BID = 576971
Lupin III. Schriftsteller
     Beiträge: 616 Wohnort: Salzburg
|
Ja, die alte Verwirrung. Eine Fuse programmieren ist bei AVR die Fuse auf Null setzen. PonyProg zeigt den "Programmierzustand" und nicht den Binärwert. Hilfreich ist das allerdings nicht unbedingt, da man im Datenblatt dann genau das invertierte findet. Man muss auch aufpassen, wenn man auf eine anderes Programm umsteigt. AVR Studio z. B. stellt die Werte so dar, wie man es erwartet.
|
BID = 576977
ElektroNicki Inventar
     
Beiträge: 6424 Wohnort: Ugobangowangohousen
|
Da gibbet doch den Palmavr Fuse Calculator!
Hat mir schon sehr geholfen!
_________________
|
BID = 576982
clembra Inventar
     
Beiträge: 5402 Wohnort: Weeze / Niederrhein
|
Bei neuen Chips ist es doch recht einfach: Daten auslesen, vergleichen was laut Datenblatt die Standardbelegung ist und entsprechend abändern.
_________________
Reboot oder be root, das ist hier die Frage.
|