mikrocontroller.net

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


Autor: Adrian H. (tyzmon)
Datum:

Bewertung
0 lesenswert
nicht 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:
$regfile = "m8def.dat"
$crystal = 8000000

Dim Number As Byte
Dim Seg1 As Byte                                            '10er Anzeige
Dim Seg2 As Byte                                            '1er Anzeige
Dim Seg3 As Byte                                            'LED Anzeige, bei erstem test obsolet
Dim Einer As Byte                                           'Evtl anderer Typ, muss nur 0-9 beinhalten
Dim Zehner As Byte                                          'Evtl anderer Typ
Dim I As Byte
Dim Lednumber As Byte                                       'lednumber 0-6

Config Timer0 = Timer , Prescale = 64
Enable Timer0

On Timer0 Isr_timer0

Enable Interrupts                                           'Interrupts global aktivieren

Config Portb = Output
Config Portc = Output
Config Portd = Input
Portd = &B11111111                                          ' Pull-up Widerstatände aktivieren

Number = 0
I = 0
Lednumber = 0                                               'Standard W4 keine LED

Do
Debounce Pind.2 , 0 , Isr_int0 , Sub
Debounce Pind.3 , 0 , Isr_int1 , Sub
Zehner = Number \ 10                                        '\ beudetet ganzzahldivision
Zehner = Zehner Mod 10                                      'Dumm dass man nur ein Befehl pro Zeile tun darf: Zehner = number\10mod10
Einer = Number Mod 10
Seg1 = Lookup(zehner , Segdata)                             'Ansteuerung ist ja für Seg1 und Seg2 gleich, da beide gleich beschaltet sind
Seg2 = Lookup(einer , Segdata)
Seg3 = Lookup(lednumber , Leddata)
Loop
End

Isr_int0:
Incr Number
Return

Isr_int1:
If Lednumber <= 5 Then
   Incr Lednumber
   Else
   Lednumber = 0
End If


Isr_timer0:
If I = 0 Then
   Portc = &B00000001
   Portb = Seg1
   Incr I
   Elseif I = 1 Then
      Portc = &B00000010
      Portb = Seg2
      Incr I
      Elseif I = 2 Then
         Portc = &B00000100
         Portb = Seg3
         I = 0
End If
Return

Segdata:
Data &B00111110 , &B00011000 , &B00101101 , &B00011101 , &B00011011 , &B00010111 , &B00110111 , &B00011100 , &B00111111 , &B00011111       'ByteCode für Segmentanzeigen eintragen:Reihenfolge :0-9
Leddata:
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

Autor: Besserwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Softwaremaeszig besteht kein Unterschied.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: 3369 (Gast)
Datum:

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

Autor: Adrian H. (tyzmon)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.