Forum: Mikrocontroller und Digitale Elektronik [AVR] Unterschied zwischen atmega8L-8PU und atmega8-16PU


von Adrian H. (tyzmon)


Lesenswert?

Hi,
Ich denke die Überschrift sagt bereits das meiste aus, aber konkret geht 
es mir um dieses Problem: Ich habe folgenden bascom-Quelltext 
geschrieben:
1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
4
Dim Number As Byte
5
Dim Seg1 As Byte                                            '10er Anzeige
6
Dim Seg2 As Byte                                            '1er Anzeige
7
Dim Seg3 As Byte                                            'LED Anzeige, bei erstem test obsolet
8
Dim Einer As Byte                                           'Evtl anderer Typ, muss nur 0-9 beinhalten
9
Dim Zehner As Byte                                          'Evtl anderer Typ
10
Dim I As Byte
11
Dim Lednumber As Byte                                       'lednumber 0-6
12
13
Config Timer0 = Timer , Prescale = 64
14
Enable Timer0
15
16
On Timer0 Isr_timer0
17
18
Enable Interrupts                                           'Interrupts global aktivieren
19
20
Config Portb = Output
21
Config Portc = Output
22
Config Portd = Input
23
Portd = &B11111111                                          ' Pull-up Widerstatände aktivieren
24
25
Number = 0
26
I = 0
27
Lednumber = 0                                               'Standard W4 keine LED
28
29
Do
30
Debounce Pind.2 , 0 , Isr_int0 , Sub
31
Debounce Pind.3 , 0 , Isr_int1 , Sub
32
Zehner = Number \ 10                                        '\ beudetet ganzzahldivision
33
Zehner = Zehner Mod 10                                      'Dumm dass man nur ein Befehl pro Zeile tun darf: Zehner = number\10mod10
34
Einer = Number Mod 10
35
Seg1 = Lookup(zehner , Segdata)                             'Ansteuerung ist ja für Seg1 und Seg2 gleich, da beide gleich beschaltet sind
36
Seg2 = Lookup(einer , Segdata)
37
Seg3 = Lookup(lednumber , Leddata)
38
Loop
39
End
40
41
Isr_int0:
42
Incr Number
43
Return
44
45
Isr_int1:
46
If Lednumber <= 5 Then
47
   Incr Lednumber
48
   Else
49
   Lednumber = 0
50
End If
51
52
53
Isr_timer0:
54
If I = 0 Then
55
   Portc = &B00000001
56
   Portb = Seg1
57
   Incr I
58
   Elseif I = 1 Then
59
      Portc = &B00000010
60
      Portb = Seg2
61
      Incr I
62
      Elseif I = 2 Then
63
         Portc = &B00000100
64
         Portb = Seg3
65
         I = 0
66
End If
67
Return
68
69
Segdata:
70
Data &B00111110 , &B00011000 , &B00101101 , &B00011101 , &B00011011 , &B00010111 , &B00110111 , &B00011100 , &B00111111 , &B00011111       'ByteCode für Segmentanzeigen eintragen:Reihenfolge :0-9
71
Leddata:
72
Data &B00000000 , &B00000001 , &B00000010 , &B00000100 , &B00001000 , &B00010000 , &B00100000

Hauptsinn dessen ist es, 2 7-Segment-Anzeigen und 7 LEDs zu multiplexen.
Mit dem atmega8L-8PU funktioniert das absolut flimmerfrei mit obiger 
config.

Nutze ich nun den günstigeren atmega8-16PU, so flimmert die Anzeige bei 
gleicher config.

Was kann ich dagegen tun und worin liegt der Unterschied zwischen den 
zwei AVRs?

//Bitte die eventuell seltsamen Kommentare im Quelltext ignorieren ;)

Danke für alle Antworten;)

LG
tyzmon

von Besserwisser (Gast)


Lesenswert?

Guck bitte mal in das Datenblatt! Nenne die Unterscheide hier! Lasse 
Dich dann von uns auffordern die Unterschiede gegen Deine Schaltung zu 
prüfen!
Schaue nicht unaufgefordert in das Datenblatt. Auf keinen Fall selbst 
denken. Unterscheide auf jeden Fall prüfen gegen Rechtschreibung der 
Kommentare im Quelltext.

Danke für die Beachtung aller Sicherheitsmassnahmen.

von hans (Gast)


Lesenswert?

Das L beim MEGA8L steht für "Light". Der ist für Beleuchtungen wie
LED etc. optimiert. Ohne L geht nur Digital und kein Licht!

Gruß Hans ;)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Softwaremaeszig besteht kein Unterschied.

von Mike (Gast)


Lesenswert?

In der Hardware auch nicht, aber das ist ja schon lange bekannt.
Sind absolut identisch, nur 2 unterschiedliche Testszenarien,
sonst eineiige Zwillinge.

Vielleicht hast Du ja vergessen die Fusebits für den Quarz zu setzen und 
jetzt läuft der Mega8 mit dem internen Oszillator und der ist nun mal 
langsam (imho nur 1MHz).

von 3369 (Gast)


Lesenswert?

Speziell bei einer 5V @ 8MHz Anwendung ist der Unterschied nicht 
relevant.

von Adrian H. (tyzmon)


Lesenswert?

Danke Mike, es lag wirklich daran, dass ich vergessen hatte den externen 
Quarz zu aktivieren. jetzt läuft er wie er soll.

@hans: Der Post war ironisch gemeint, oder? Ich hoffe doch ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.