-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Unterschied micro-ide / bascom avr

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    29.03.2007
    Beiträge
    64

    Unterschied micro-ide / bascom avr

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    vorweg: Ich bin absoluter Anfänger.

    Ich programmiere meine Programme mit Bascom AVR, jetzt bin ich über den Basic Compiler von Micro-IDE gestolpert.
    Komischerweise ist die *.hex Datei, bei gleichem Quelltext, beim Mikro-IDE kleiner als bei Bascom avr.

    Arbeitet/Rechnet die Software von Micro-IDE effiezienter und ist demnach auch eher zu empfehlen?

    Welche Unterschiede gibt es noch?


    Gruß
    Daniel

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Ich programmiere meine Programme mit Bascom AVR, jetzt bin ich über den Basic Compiler von Micro-IDE gestolpert.
    Komischerweise ist die *.hex Datei, bei gleichem Quelltext, beim Mikro-IDE kleiner als bei Bascom avr.
    Ohne direkten Vergleich ist da schwer was zu sagen.

    Gib mal dein Beispiel an und Zahlen wie groß die einzelnen Compilate waren.



    Arbeitet/Rechnet die Software von Micro-IDE effiezienter und ist demnach auch eher zu empfehlen?
    Ist möglich.
    Kann aber auch sein das Micro wesentlich weniger zu bieten hat und deswegen schlankeren Code liefert.

    Kann aber auch sein das dein Bascom-Programm nicht gerade Effizienzt ist.
    Wie gesagt,ohne konkrete Daten was du gemacht hast kann man da garnichts sagen.


    Wenn die Codegröße für dich wichtig ist und du allgemein einen sehr effizienten Code möchtest dann solltest du gleich mit Assembler anfangen.
    Da hast du volle Kontrolle und mit etwas übung den effizientesten Code aber auch die meiste Einarbeitungszeit.

    Als Alternativen gibt es auch noch FastAVR.
    Der bietet einen ähnlichen Funktionsumfang und etwas schlankeren Code.
    Gruß
    Ratber

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    29.03.2007
    Beiträge
    64
    Hi,

    hier der Programmtext:
    Code:
    $regfile = "ATtiny2313.dat"
    
    'Tell the compiler which crystal frequency was used
    $crystal = 4000000                                          '4.000000 MHz
    
    '############# LED´s
    Config Portd.5 = Output
    Config Portd.6 = Output
    
    '#############PWM Ausgänge
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    
    
    '#############Eingänge 
    
    Config Pind.2 = Input                                       'Pin D2 als Eingang konfigurieren
    Taster1 Alias Pind.2                                        'Taster1
    Portd.2 = 1                                                 'Interner Pull-Up Widerstand EIN
    
    
    '################### Variablen 
    
    Dim Ein As Bit                                              'Variable "EIN" als Bit deklarieren
    Dim A As Integer                                            'Variable "A" als Integer deklarieren
    Dim B As Integer                                            'Variable "B" als Integer deklarieren
    
    '#############Timer1 für PWM
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
    
    Enable Timer1                                               'PIN 15   0CR1a   PortB.3 >> PWM Ausgang!!!!!!!
    
    
    '#############
    '###   Hauptroutine   
    '#############
    Compare1a = 255                                             'lampe dunkel
    Main1:
    Do
    If Taster1 = 0 Then
    Waitms 2500
    If Taster1 = 0 Then
    Goto Schalten
    End If
    End If
    If Ein = 1 Then                                             'Wenn "EIN" true
    Goto Main2                                                  'gehe zu "Main2"
    End If
    Loop
    
    '###########################
    '###   Nebenroutine   Auswahl Dimmstufe              ###########################
    
    Main2:
    Do
    If Taster1 = 1 Then                                         'wenn Taster wieder false
    Select Case A
    Case 0 : Goto Stufe0                                        'zu Stufe 0...2 springen
    Case 1 : Goto Stufe1
    Case 2 : Goto Stufe2
    Case 3 : A = 0                                              'Variable "A" wieder auf 0
    Goto Stufe0
    End Select
    End If
    Loop
    
    
    '#########
    '### Softstart 
    '#########
    
    Soft:
    Do
    Compare1a = 255 - B
    Incr B
    Loop Until B = 155
    Goto Main2
    
    '############
    '###   Einschalten   
    '############
    
    Schalten:
    Toggle Ein                                                    ' "EIN" auf true oder false
    Compare1a = 255
    A = 0                                                      
    B = 0
    Portd.5 = 0
    Portd.6 = 0
    If Ein = 1 Then                                             ' "EIN" = true >> Soft
    Goto Soft
    End If
    If Ein = 0 Then                                             ' "EIN" = false >> main1
    Goto Main1
    End If
    
    
    
    '###########
    '###   Stufe 0...2   
    '###########
    
    Stufe0:
    Do
    Portd.5 = 1                                                  'LED´s schalten
    Portd.6 = 0
    Compare1a = 100                                        'Dimmstufe
    If Taster1 = 0 Then                                      'Wenn Taster betätigt
    Waitms 50                                                   'Taster entprellen
    If Taster1 = 0 Then
    Incr A                                                         'A incrementieren
    Goto Main1                                                  'wieder in Hauptroutine
    End If
    End If
    Loop
    
    
    Stufe1:
    Do
    Portd.5 = 0
    Portd.6 = 1
    Compare1a = 50
    If Taster1 = 0 Then
    Waitms 50
    If Taster1 = 0 Then
    Incr A
    Goto Main1
    End If
    End If
    Loop
    
    Stufe2:
    Do
    Portd.5 = 1
    Portd.6 = 1
    Compare1a = 0
    If Taster1 = 0 Then
    Waitms 50
    If Taster1 = 0 Then
    Incr A
    Goto Main1
    End If
    End If
    Loop
    Das Programm ist noch nicht entgültig getestet.
    Es soll eine Steuerung für eine Taschenlampe werden.
    Einschalten durch 3S drücken des Tasters, Dimmstufenwechsel durch Tasten und Softstart. Zusätzlich soll der Status der Dimmstufe durch zwei LED´s angezeigt werden Portd.5 & Portd.6.

    Hexfile erstellt durch Bascom-AVR:1,93kB
    Hexfile erstellt durch Micro-IDE:1,54kB

    Klar sucht man einen Kompromiss aus knappen Code und einfacher Programmierung. Doch bin ich mit Bascom-AVR schon am Limit des ATtiny 2313.

    Wie kriege ich durch Änderung meines Programms den Quelltext noch schlanker?

    Gruß
    Daniel

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Wie kriege ich durch Änderung meines Programms den Quelltext noch schlanker?
    Eine Testcompilierung gibt einen Fehler mit Timer1 aus.
    Bascom hat da so seine Probleme bei einigen Controllern mit der direkten Unterstützung diverser Hardware.
    Kann sein das der Timer1 des Tiny2313 mit dazugehöhrt.
    Mangels Tiny2313 kann ich das jetzt aber weder bestätigen noch ausschließen.
    Im Zweifelsfalle mußt du die Register eben "Händisch" setzen.
    Dafür hab ich jetzt keine Zeit also hab ich den Quelltext einfach mal für den Mega8 compiliert.
    Da komme ich auf 756 Bytes.
    Wie kommst du da auf 1.93k ?



    Ansonsten habe ich jetzt nicht genauer hingesehen aber es läst sich meist was am Code drehen.
    Eine Operation läst sich ja meist mit mehreren Methoden und Befehlen erledigen aber die Befehle verbrauchen unterschiedlichen Platz im System.
    Da kann man ansetzen.
    Gruß
    Ratber

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    29.03.2007
    Beiträge
    64
    Hi Ratber,

    meine Compilierung gibt keinen Fehler raus. Womit Compilierst du denn?
    Wie ich die Register händisch setze weiß ich leider nicht. Bin eben absoluter Anfänger.
    Um die Größe des Hexfiles zu bestimmen habe ich einfach unter Windows > Eigenschaften geguckt wie groß der File ist. Ist das falsch?

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    meine Compilierung gibt keinen Fehler raus. Womit Compilierst du denn?
    Bascom 1.11.8.5
    Scheint aber nen Bug zu sein denn die 1.11.8.1 und 8.3 geben den Fehler nicht aus.
    Muß ich mal die Def durchsuchen ob da einer nen Fehler eingebastelt hat.


    Wie ich die Register händisch setze weiß ich leider nicht. Bin eben absoluter Anfänger.
    Ein Grun mehr das Datenblatt des Controllers zu studieren.
    Bascom ist nett aber ohne hintergrundwissen über die einzelnen Hardwarefunktionen fällt man viel zu oft auf die Nase.
    Die Arbeit wird einem da nicht abgenommen.

    Um die Größe des Hexfiles zu bestimmen habe ich einfach unter Windows > Eigenschaften geguckt wie groß der File ist. Ist das falsch?
    Ja,das Hexfile beinhaltet ja nicht nur die Nutzdaten sondern auch noch die Projektbeschriebung usw.

    Wenn du Compiliert hast dann schau unter "Show Result" (ctrl-W) nach.
    Da bekomst du alle nötigen Informationen.
    Gruß
    Ratber

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    29.03.2007
    Beiträge
    64
    Hi,

    Ja,das Hexfile beinhaltet ja nicht nur die Nutzdaten sondern auch noch die Projektbeschriebung usw.

    Wenn du Compiliert hast dann schau unter "Show Result" (ctrl-W) nach.
    Da bekomst du alle nötigen Informationen.
    Das wusste ich garnicht. Hab vorhin das Buch von Rowalt.de bestellt.
    Vielleicht komm ich dann nicht mehr mit so dummen Fragen

    Also ich betätige Ctr + w und dann gucke ich unter:ROMImage z.B. 2BE (hex).
    Dann den windows Rechner auf, auf hex gecklickt, 2BE eingegeben und dann auf Dezimal?
    Also 702B die in den Flash gladen werden???

    Werden diese 702B dann auch nur in den Flash geladen wenn ich den Hex-File mit einem anderen Programm (z.B. Pony) in den Controller lade?


    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Das wusste ich garnicht. Hab vorhin das Buch von Rowalt.de bestellt.
    Vielleicht komm ich dann nicht mehr mit so dummen Fragen Silenced
    Naja,bei den vorhandenen Büchern zu Bascom (Ich schnüffel manchmal in den Verlagen meiner Stadt) habe ich noch nichts wirklich brauchbares gefunden.
    Eigenständiges Arbeiten und Suchen plus Fragen in nem Forum halte ich für ergibiger.


    Also ich betätige Ctr + w und dann gucke ich unter:ROMImage z.B. 2BE (hex)......usw.

    Ja,das Fenster gibt eine Menge Informationen aus.
    Unter anderem die Tatsächliche Codegröße in Hex und Dec usw.
    Gruß
    Ratber

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.01.2005
    Alter
    45
    Beiträge
    294
    Zitat Zitat von Ratber
    Das wusste ich garnicht. Hab vorhin das Buch von Rowalt.de bestellt.
    Vielleicht komm ich dann nicht mehr mit so dummen Fragen Silenced
    Naja,bei den vorhandenen Büchern zu Bascom (Ich schnüffel manchmal in den Verlagen meiner Stadt) habe ich noch nichts wirklich brauchbares gefunden.
    Eigenständiges Arbeiten und Suchen plus Fragen in nem Forum halte ich für ergibiger.
    Da muß ich wiedersprechen. Das Buch von Rowalt kann ich für Anfänger empfehlen.
    Die anderen kann man sich allerdings sparen.
    Einzig die Deutsche Hilfeübersetzung (Bascom AVR Sprachbefehle) habe ich zusätzlich hier liegen. Ich schaue lieber in Papier als auf den Monitor.
    Das Gegenteil von "gut" ist "gut gemeint"!

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Da muß ich wiedersprechen. Das Buch von Rowalt kann ich für Anfänger empfehlen.
    Ich bin es gewohnt mir die nötigen Infos selber zu suchen und der Rest ist Nachdenken,Versuch/Irrtum usw.

    Vermutlich haben mir die Bücher in die ich reingesehen habe nichts mehr bringen können.
    Gruß
    Ratber

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •