AVR Evalutionboard Ver. 2.01 von Pollin

Hallo,

Also ich hab auch seit kurzem ein Pollin Board und habe mich heute sofort mal mit meinem Meßgerät bewaffnet.
Bei mir ist definitiev Masse auf Pin 7.
Danach habe ich auch direkt mal auf meinen Original Schaltplan geschaut.
Auch da ist die Masse auf Pin 7 richtig eingezeichnet.
Dabei ist mir allerdings aufgefallen: Ich habe die Version 2.0.1 und in deinem PDF ist die 2.0 abgebildet.
PollinAVR_24Cxx_EEPROM_v201.png
Stimmt :) Damit ist Pollin also wieder entlastet. ;)
Leider ist der Schaltplan in der Anleitung dafür ziemlich grottig geworden.
Man kann nicht mehr wirklich viel erkennen. Schade ...

Dennoch habe ich mich geärgert weil der Bausatz einen Bug hat.
Der Summer ist auf Seite 7 als AC Summer angegeben. Ich habe auch einen AC Summer dabei gehabt.
Du meinst wohl folgendes ...
Experimentierkomponenten: 3x Taster, 2x LEDs, 1x AC-Summer (ca. 3000 KHz)
:confused:
Also entweder meinen die AC für mit Wechselspannung zu betreiben
(glaub ich nicht) ...
oder es ist ein Summer mit eingebauter Elektronik (wegen 3kHz). Dann müßte
er aber einen Ton abgeben ...
Oder die meinen einen Piezo-Piepser, der eine Resonanzfrequenz von 3kHz hat
und den man selber mit Wechselspannung betreiben muß (das wirds wohl sein).

Aber als ich ihn ansteuern wollte, gab es nur ein kurzes klak bein ein und dann beim ausschalten.
Da fiel mir zu spät auf das es doch eigendlich ein Gleichstromsummer sein müßte, oder?
Also so wie es aussieht ist es nur nen Piezo-Piepser ohne eingebaute Elektronik.
Darum auch das Klack. Die Piezoscheibe biegt sich je nach angelegter Polung
der Spannung zur einen oder anderen Seite durch. Wenn du also den Ausgang
schnell von 0 auf 1 und zurück wechseln läßt (01010101010101...) dann
müßtest du auch einen Ton hören. Im Gegensatz zu einem mit eingebauter
Elektronik kann man hier die Tonhöhe durch sein Programm selber bestimmen.
(und er ist günstiger => Produktionskosten :p ;) )

Sonst bin ich für den Preis zufieden.
Ach ja, es wird angegeben die serielle Verbindung mit 9600 Baut einzustellen.
Die geht bei mir nur mit max: 1200 Baut. Andere Geräte lassen sich am PC mit dem selben Kabel in voller Geschwindigkeit betreiben. Es liegt also am Board.
Meinst Du jetzt die ISP-Schnittstelle oder die RS232 ?

Bei der ISP weiß ich nicht warum man da überhaupt ne Baudrate einstellen
muß weil die Pins sowieso direkt angesprochen werden. Pin 2 und 3 der
RS232 wären TxD und RxD. Da liegt beim ISP-Anschluß aber nur Reset drauf.
Also ist die Baudrate da theoretisch absolut uninteressant. Muß ich aber
selber mal testen ;) Ich hab noch nie über nen Ser-Progger gearbeitet.
Nur mit ParProgger (STK200-Typ) und sonst mit AVRISPmk2 (USB).

Und die Baudrate der RS232 ... Ich hab meine schon mal auf 2MBit gehabt.
Das sollte bei dem Pollin-Board auch gehen. Aber auf der PC-Seite geht das
nur noch mit nem USB-RS232-Dongle weil die eingebauten PC-Schnittstellen
maximal 115kBaud verkraften :D

Gruß
Dino
 
Ich meinte natürlich die RS 232.
Wenn ich eine Taste drücke soll er versuchsweise einen Text zum PC schicken.
Das geht bei meinen Board nur bis max: 1200 Baud, sollte aber mit dem Beispiel von Pollin bis 9600 Baud gehen.
Habe vor eine SMS Alarmanlage zu Programmieren.
 
Hi,

Ich meinte natürlich die RS 232.
Wenn ich eine Taste drücke soll er versuchsweise einen Text zum PC schicken.
Das geht bei meinen Board nur bis max: 1200 Baud, sollte aber mit dem Beispiel von Pollin bis 9600 Baud gehen.
Habe vor eine SMS Alarmanlage zu Programmieren.
also ...
Was nen Prozessor ? Mega8, Mega32, ...
Interner Takt oder Quarz eingestellt ?
Programmiersprache ? Bascom, C, Assembler ?

Die Hardware sollte problemlos laufen. Ich benutze auf dem PC als Terminal
PuTTY 0.6.0 . Und die hohen Datenraten haben auch ohne Handshaking
(Software- / Hardware-Handshaking) problemlos funktioniert ohne das Daten
verloren gegangen sind. Hyperterminal ist eigentlich (nach meiner Meinung)
die totale Notfall-Krücke wenn man überhaupt nix anderes mehr hat :D
Oder nimm TeraTerm wenn dir das besser gefällt.

Bei 16MHz Quarztakt ...

Ich nehme jetzt man 38400Baud (38k4 8Bit, keine Parität, 1 Stopbit)
Bei U2X=0 ... UBBRH=0 , UBBRL=25 (Fehler 0,2%)
Bei U2X=1 ... UBBRH=0 , UBBRL=51 (Fehler 0,2%)

bei 115kBaud ...
Bei U2X=0 ... UBBRH=0 , UBBRL=8 (Fehler -3,5%)
Bei U2X=1 ... UBBRH=0 , UBBRL=16 (Fehler 2,1%)

sollte bei 115kBaud gehen aber mehr als 3,5% sehe ich als kritisch an.
Könnte also Bitverlust geben wenn man zuviel hintereinander sendet
weil die Datenraten auseinanderlaufen.

1MBit ist bei 16MHz Quarz das höchste der Gefühle.
2MBit würde er nur noch mit U2X=1 schaffen und UBBRH und UBBRL = 0
Aber gehen tut das noch ;) Nur dann ist absolut Ende der Fahnenstange.
Bei den 20MHz Atmels schafft man noch etwas mehr und mit Übertakten
auf 25MHz noch ein klein wenig mehr ... Dann ist das absolute Maximum
bei 25MHz Quarz ... 3,125MBit/s an der seriellen Schnittstelle :D


Gruß
Dino
 
Es ist ein Atmega32-16 und ein Pollin Board.
Der Externe Quarz ist ein 16 MHz.
Ich habe das noch nicht so ganz raus ob das mit dem Internen oder Externen läuft. Auch Fuses sind mir noch ein Rätsel. Die RS232 will auf jedenfall nur bis 1200 Baud mitspielen.
Versuche mich in Bascom, aber ist nicht wirklich so meine Welt.
Habe mitte der 80´ viel mit Schneider CPC und Basic probiert.
Aber Bascom ist da doch einiges schwieriger.
Arbeite Beruflich viel mit S5 und S7. Also Umdenken.
Suche auch vergeblich nach Deutschen Datenblättern zum Atmega32 und Atmega8.
 
Hallo,

Es ist ein Atmega32-16 und ein Pollin Board.
Der Externe Quarz ist ein 16 MHz.
Ich habe das noch nicht so ganz raus ob das mit dem Internen oder Externen läuft. Auch Fuses sind mir noch ein Rätsel. Die RS232 will auf jedenfall nur bis 1200 Baud mitspielen.
na mal sehen wo da der Wurm drin ist ...

Versuche mich in Bascom, aber ist nicht wirklich so meine Welt.
Habe mitte der 80´ viel mit Schneider CPC und Basic probiert.
Aber Bascom ist da doch einiges schwieriger.
Bei den alten Basic-Dialekten war evtl noch nen IN,OUT,PEEK,POKE drin aber
das war es dann zum größten Teil auch an hardwarenahen Sachen. Da ist
das mit den Timern, Interrupts, ... schon was anderes. Irgendwie muß man
das in der Programmiersprache abbilden.

Arbeite Beruflich viel mit S5 und S7. Also Umdenken.
Suche auch vergeblich nach Deutschen Datenblättern zum Atmega32 und Atmega8.
Bei den deutschen Datenblättern muß ich dich wohl enttäuschen. Da wird
man höchstens ein paar Erklärungen in der elektor oder in Büchern über
Mikrocontroller finden. Aber das war es dann auch. Da ist dann wohl das
alte Schulenglisch gefragt ;) Positiver Nebeneffekt ... Englisch wird wieder
aufgefrischt :)

Ach ja ... stellt doch mal dein Versuchs-Programm hier als Anhang oder als
Code mit rein. Dann kann man mal rüberschauen ...

Gruß
Dino
 
Ist im Moment noch nicht möglich, da der Haupt Pc die Grafikkarte def. hat und ich noch auf Ersatz warte.
Der andere hat Win 7 drauf und ist nur zum Surfen, ( ist nicht meiner ) deswegen kann ich jetzt nicht viel machen. Umbauen hätte auch nicht gepasst, da meiner PCIE hat und der Leihrechner nur AGP, muß also warten bis die neue kommt.
Der Code ist das Original was man bei Pollin als Beispiel Downloaden kann.
Ich denke das der doch OK sein müsste.
Probiert hatte ich es mit Hyper Terminal und werde sobald meiner wieder fit ist mal was anderes versuchen.
Ich würde mich auch bereit erklären die SMS Alarmanlage als Open Source Projekt zu Entwikeln, da die fertigen nur einen Hex Code bereit stellen wo ja keine Änderungen mehr möglich sind und ich mir ein Paar Extras Überlegt hatte.
Viel Ahnung habe ich von Bascom noch nicht und fange gerade erst an, wer also Lust hat mitzumachen kann sich melden.
 
Hallo,

Der Code ist das Original was man bei Pollin als Beispiel Downloaden kann.
Ich denke das der doch OK sein müsste.
Probiert hatte ich es mit Hyper Terminal und werde sobald meiner wieder fit ist mal was anderes versuchen.
dann versuch ich mich mal mit meinen kleinen Kenntnissen durch das Bascom-Zeugs
zu kämpfen ...

Also Definiert ist das Programm für einen Mega16 mit 8MHz Quarz ...
Code:
$regfile = "m16def.dat"                                     'definieren des verwendeten Chips
$crystal = 8000000                                          'definieren des verwendeten externen Quarz (8MHz)
Es ist aber bei der 40pol-Fassung für den Mega16/32/8353 ein 16MHz-Quarz
dran. Also schon mal ein Fehler (nur 4800 Baud statt der versprochenen 9k6)

2. Im Programm ist nix von der Initialisierung der RS232 zu sehen. :confused:

3. Wenn ich bei Options >> Compiler >> Communications nnachsehe dann
macht sich folgendes Fenster auf ...
Bascom_RS232.png
und da steht 1k2 8n1 drin (also 1200 Baud , 8 Datenbit, keine Parität, 1 Stopbit).
Wird das als Defaultwert angenommen ? Weil in der Testtool.bas steht bis auf den ASCII-Kram nix weiteres drin ... :confused: Muß ich das jetzt verstehen ?

Und an anderer Stelle steht wieder was mit nem 4MHz Quarz und 9k6 ...
Testtool_Quarz.png

Sach mal einer von den Bascom-Cracks was dazu ... ;)

Also nach meiner Meinung hat da einer Mist gebaut :D

Gruß
Dino
 
Hi Chopp,

ich habe mir grad das testtool.bas angesehen. Schreib mal in die Zeile unter $crystal:

$baud=9600

oder $baud=19200, etc. (im Terminal natürlich den gleichen Wert eingeben, kann man schon mal vergessen). Dann sollte es funktionieren.:)

Mit der Programmanweisung überschreibst Du die Bascom- Einstellung. Im Programm kannst Du überhaupt alles überschreiben, sogar die Fuses. Aber Vorsicht, erst wenn Du fit bist. Sonst brauchst Du eine Nadel und nen Taḱtgeber. Frag mal Dino.:p


Grüsse,

Michael
 
Im Programm kannst Du überhaupt alles überschreiben, sogar die Fuses. Aber Vorsicht, erst wenn Du fit bist. Sonst brauchst Du eine Nadel und nen Taḱtgeber. Frag mal Dino.:p
Die falschen Fuses gesetzt und du hast einen scheintoten Atmel vor dir ;)
Mit ganz viel Pech kommt man nur noch mit dem STK500 im Parallel-Programmier-
Modus dran (mit höherer Spannung usw..) also aufpassen !
Aus dem Grund hab ich mir damals auch nen STK500 als Eval-Board geholt ;)

Gruß
Dino
 
Hi Chopp,

jo, Dino hat recht. Und deswegen soll und braucht man die Fuses am Anfang gar nicht anrühren! Die voreingestellten 1MHz reichen aus, um die ersten kleinen Schaltungen laufen zu lassen.

Ich möchte Dir empfehlen, Dir eine dummy.bas oder kopf.bas- Datei anzulegen mit den Programmzeilen, die Du immer wieder brauchst. Z. Bsp.:
  • Copyright (optional)
  • Definitionsdatei
  • Taktfrequenz
  • Übertragungsrate
dann:
  • Datenrichtung
  • Port- Status 1 oder 0 (interne Pull-Ups an oder aus)
  • Aliase, aber nicht zwingend. LED1 ist im Code besser zuzuordnen als Portx.y
dann:
  • Variablen- Dimensionierung, nach Werten getrennt, nicht Byte und Word in einer Zeile. Macht normalerweise nichts, doch haben einige hier schon Probleme damit gehabt.
Du brauchst dann nur noch für ein neues Programm entsprechend abändern und hast immer alles "drin".

Dann gibt es noch zwei hilfreiche Bücher für den Anfang:
  • Das AVR-Lehrbuch von Roland Walter
  • Die deutsche Übersetzung der Bascom- Hilfe von Marius Meissner. Sind auch ein paar Schaltpläne zur Erklärung drin.
So schwer ist Bascom nicht. Im Forum findest Du viele Anregungen - und Hilfe. Dann viel Spass weiterhin.


Grüsse,

Michael
 
Hallo,

Ich möchte Dir empfehlen, Dir eine dummy.bas oder kopf.bas- Datei anzulegen mit den Programmzeilen, die Du immer wieder brauchst. Z. Bsp.:
  • Copyright (optional)
  • Definitionsdatei
  • Taktfrequenz
  • Übertragungsrate
dann:
  • Datenrichtung
  • Port- Status 1 oder 0 (interne Pull-Ups an oder aus)
  • Aliase, aber nicht zwingend. LED1 ist im Code besser zuzuordnen als Portx.y
dann:
  • Variablen- Dimensionierung, nach Werten getrennt, nicht Byte und Word in einer Zeile. Macht normalerweise nichts, doch haben einige hier schon Probleme damit gehabt.
Du brauchst dann nur noch für ein neues Programm entsprechend abändern und hast immer alles "drin".
das sollte man sowieso für jede Programmiersprache machen. (Mach ich auch).
1. Man muß das Rad dann nicht jedes mal neu erfinden.
2. So etwas nennt man "Template" oder auch einfach Vorlage :D

Ich mach aber noch zusätzlich folgendes ...

[*] ASCII-Zeichnung von der Pinbelegung des verwendeten Atmels
[*] Fuse-Einstellungen im Klartext
[*] Gedanken und größere Beschreibungen und Timings mit in Quelltext

sieht dann folgendermaßen aus ...


CodeBox ASM

; ----- FUSES -----
;
; * SUT1 und SUT0 (Zustand=11): Start-up Time 65ms nach Reset,
; Einstellung für Quarzoszillator und langsam ansteigende
; Betriebsspannung (Tabelle 5 des Datenblattes)
; * CKSEL3-CKSEL0 (Zustand=1111): Quarzoszillator im Bereich 3-8MHz
; (Tabelle 4 des Datenblattes)
; * CKOPT (Zustand=1): schneller Quarzoszillator (Tabelle 4 des Datenblattes)
; * BODEN (Zustand=0): Brown-out einschalten
; * BODLEVEL (Zustand=1): Brown-out Schwelle auf 2,7V setzen
;
; Unter Beachtung der invertierten Logik der Fuse-Bits sollte man
; also die Fuses so setzen wie im folgenden Bild:
;
; ( )7 ( )6 [ ]BootLock12 [ ]BootLock11 [ ]BootLock02 [ ]BootLock01 [ ]Lock2 [ ]Lock1
;
; ( )7 ( )6 ( )5 ( )4 [ ]BOOTSZ1 [ ]BOOTSZ0 [ ]BOOTRST
;
; ( )RSTDISBL [ ]DWEN (X)SPIEN [ ]WDTON [ ]EESAVE [ ]BODLEVEL2 [ ]BODLEVEL1 [ ]BODLEVEL0
;
; [ ]CKDIV8 [ ]CKOUT [ ]SUT1 [ ]SUT0 [ ]CKSEL3 [ ]CKSEL2 [ ]CKSEL1 [ ]CKSEL0
; ______________________
; | |
; | [X] Bit=0 [ ] Bit=1 | ( ) -> Nicht anwaehlbar [ ] -> Anwaehlbar
; | progr. unprogr. |
; |______________________|
;
;
;
; ----- PINS -----
;
; ATMEL AVR ATmega168
; 16kByte Flash (8kx16)
; 512Byte EEPROM
; 32 Register + 1kByte RAM
;
; ATmega168
; +--------------------------------------------------+
; (ISP) RESET --| 1 PC6(Reset/PCINT14) (ADC5/SCL/PCINT13)PC5 28|
; | 2 PD0(RXD/PCINT16) (ADC4/SDA/PCINT12)PC4 27|
; | 3 PD1(TXD/PCINT17) (ADC3/PCINT11)PC3 26|
; | 4 PD2(INT0/PCINT18) (ADC2/PCIN10)PC2 25|
; | 5 PD3(INT1/OC2B/PCINT19) (ADC1/PCINT9)PC1 24|
; | 6 PD4(XCK/T0/PCINT20) (ADC0/PCINT8)PC0 23|
; +Vcc --| 7 VCC GND 22|-- GND
; GND --| 8 GND AREF 21|--(*)
; XTAL --| 9 PB6(XTAL1/TOSC1/PCINT6) AVCC 20|-- +Vcc (gesiebt)
; XTAL --|10 PB7(XTAL2/TOSC2/PCINT7) (SCK/PCINT5)PB5 19|-- SCK (ISP)
; |11 PD5(T1/OC0B/PCINT21) (MISO/PCINT4)PB4 18|-- MISO (ISP)
; |12 PD6(AIN0/OC0A/PCINT22) (MOSI/OC2A/PCINT3)PB3 17|-- MOSI (ISP)
; |13 PD7(AIN1/PCINT23) (SS/OC1B/PCINT2)PB2 16|
; |14 PB0(ICP1/CLKO/PCINT0) (OC1A/PCINT1)PB1 15|
; +--------------------------------------------------+
; (*) 100nF nach GND
;
;
;
; ----- MEMORY -----
;
; ATmega168
; _____ _____
; FLASH: 0x0000 | | Application RAM: 0x000-0x01F |_____| R00-R31
; | | Section 0x020-0x05F |_____| IO 0x00-0x3F
; 8kx16 | | 0x060-0x0FF |_____| ExtIO 0x60-0xFF
; |_____| 0x100- | | Internal SRAM
; 0x1FFF |_____| BootSection -0x4FF |_____| 0x0100-0x04FF
;
;




CodeBox ASM

; #################################
; ########## ACHTUNG !! ###########
; #################################
; r18 wird als globale Variable
; fuer die Cursorposition verwendet
; #################################
; #################################


;
; ----- MAIN-PROGRAM -----
;
RESET:
ldi r16,low(ramend)
ldi r17,high(ramend)
out spl,r16 ; Stackpointer auf
out sph,r17 ; RAM-Ende setzen

rcall portinit ; Ports initialisieren

rcall lcdinit ; LCD initialisieren

rcall varinit ; Variablen (SRAM-Zellen) auf definierten Stand setzen
ldi ZH,HIGH(2*copy1) ;ZH/ZL auf Copyright-Meldung 1 setzen
ldi ZL,LOW(2*copy1) ;
; ldi ZH,0x3A ; ZH/ZL auf Copyright-Meldung 1 setzen
; ldi ZL,0x80 ;





CodeBox ASM

; ===== SREG 0x3F (0x5F) =====
; AVR Status Register
;
; * Bit 7 : I : Global Interrupt Enable (SEI,CLI,RETI)
; * Bit 6 : T : Bit Copy Storage
; * Bit 5 : H : Half Carry Flag
; * Bit 4 : S : Sign Bit
; * Bit 3 : V : Two Complements Overflow Flag
; * Bit 2 : N : Negative Flag
; * Bit 1 : Z : Zero Flag
; * Bit 0 : C : Carry Flag
;
;


; ===== MCUCR 0x35 (0x55) =====
; MCU Control Register
;
; * Bit 7 : -
; * Bit 6 : -
; * Bit 5 : -
; * Bit 4 : PUD : PullUp Disable (1=glogal disable)
; * Bit 3 : -
; * Bit 2 : -
; * Bit 1 : IVSEL : Interrupt Vector Select
; * Bit 0 : IVCE : Interrupt Vector Change Enable
;
; 0b00000000
;




CodeBox ASM

; ##################################################################
; ##################################################################
; #### System-Subroutinen ##########################################
; ##################################################################
; ##################################################################

; ==================================================================
; ===== Ports initialisieren =======================================
; ==================================================================
;
; PB0 ICP1 --<- Input Capture Pin 1 (Timer/Counter 1 - Zeit/Frequenz-Messung)
; PB1 OC1A -->- Compare 1 A (PWM Ausgang 1)
; PB2 OC1B -->- Compare 1 B (PWM Ausgang 2)
; PB3 Keys --<- PCINT0 Tastenabfrage (Sammelpunkt der 4 Tasten)
; ______________________
; PB4 RS ---->-| |
; PB5 E ----->-| Powertip PC1602-E |
; | |
; PC0 D4 ---->-| HD44780 kompatibel |
; PC1 D5 ---->-| |
; PC2 D6 ---->-| 16x2 Chr LCD |
; PC3 D7 ---->-|______________________|
;
; PC4 SDA ---<- PCINT1 | TWI/I2C-Bus und
; PC5 SCL ---<- PCINT1 | Analyzer
;
; ________
; PD0 RxD ---<-| MAX232 |--<-- RS232 zum PC
; PD1 TxD --->-|________|-->-- 115kBit/s
; PD2 INT0
; PD3 INT1
; PD4 1Wire -<- PCINT2 1-Wire-Bus und Analyzer
; PD5 T1 ----<- Timer 1 Zaehlereingang
; PD6 AIN0
; PD7 AIN1

portinit:
push r18 ; r18 auf Stack retten (fuer wiederherstellung)

; I=7= I=6= O=5= O=4= I=3= I=2= I=1= I=0= => 00110000 => DDRB
; ---- ---- E RS Keys OC1B OC1A ICP1 => 00001001 => PORTB (init)
; x x | | | | | |
;
ldi r18,0b00110000 ; PortB: PB1,2,4,5 auf Ausgang
out ddrb,r18 ; setzen
ldi r18,0b00001001 ; 00001001 Pull-Up-Rs einschalten
out portb,r18 ; setzen

; I=7= I=6= I=5= I=4= O=3= O=2= O=1= O=0= => 00110110 => DDRC
; ---- ---- SCL SDA D7 D6 D5 D4 => 00000000 => PORTC (init)
; x x | | | | | |
;
ldi r18,0b00001111 ; PortC: PC0-3 auf Ausgang
out ddrc,r18 ; setzen
ldi r18,0b00000000 ; 00000000 Pull-Up-Rs einschalten
out portc,r18 ; setzen

; I=7= I=6= I=5= I=4= I=3= I=2= I=1= I=0= => 00000000 => DDRD
; AIN1 AIN0 T1 1Wir INT1 INT0 TxD RxD => 00101100 => PORTD (init)
; o o | | o o | |
;
ldi r18,0b00000000 ; PortD: PD0-7 auf Eingang
out ddrd,r18 ; setzen
ldi r18,0b00101100 ; 00101100 Pull-Up-Rs einschalten
out portd,r18 ; setzen

pop r18 ; r18 wiederherstellen
ret ; Subroutine Ende





CodeBox ASM

; ==================================================================
; ===== Tasten abfragen ============================================
; ==================================================================
keyrd:
push r16 ; r16 auf Stack retten (fuer wiederherstellung)
; PB3 Keys --------- PCINT0 Tastenabfrage (Sammelpunkt der 4 Tasten)
; |
; PC0 D4 ---->o--\--+ ru (C2) (C3)
; |
; PC1 D5 ---->o--\--+ lu (C1) (C0)
; |
; PC2 D6 ---->o--\--+ lo =7= =6= =5= =4= =3= =2= =1= =0= <- r16 (Ergebnis)
; | 0 0 0 0 PC3 PC2 PC1 PC0 <- Taste-Bit
; PC3 D7 ---->o--\-- ro
;
; Speicherstelle "keys" L3 L2 L1 L0 A3 A2 A1 A0 <- A=aktuell L=last
; -------------- --------------
; | |
; | | fuer Wechsel-Erkennung
; --<<-- letzten Stand sichern




CodeBox ASM

; ##################################################################
; ##################################################################
; #### Dallas 1-Wire-Subroutinen ###################################
; ##################################################################
; ##################################################################

; PD4 ---------------- 1Wire
;
;
; __ ___________ _________
; Init/Reset |________________/ |____________/ :
; : : : : :
; | |- 15-60us -|- 60-240us -| |
; |- >=480us ------|--------- >=480us ------------|
; |- Master Tx ----|----------- Master Rx --------|
;
;
; ___ _______ <1us _______________________
; Master Tx |___________________________/ |_____/ : : :
; : : : : : : : :
; |- 15us -|- 15us -|- 30us -| |- 15us -|- 15us -|- 30us -|
; |----- 60-120us -----------|- >1us -|----- 60-120us -----------|
; | Slave-Sample^ | | Slave-Sample^ |
; |- Master Write 0-Slot ----| |- Master Write 1-Slot ----|
;
;
; ___ >1us _______ >1us ______________________
; Master Rx |____ ________/////////////// |____ // : : :
; : : : : : : : : : :
; |- 15us ---|--- 45us ------|- >1us -|- 15us ---|--- 45us ------|
; | : ^Master-Sample | | : ^Master-Sample |
; ##### vom Master generiert ##### vom Master generiert
;


Das sind jetzt nur mal ein paar Fragmente aus nem Programm von mir.
Wie du siehst ist ein Großteil meiner Programme nur Kommentar und Info.
Gewöhn es dir an, Teile aus Dattenblättern die du an bestimmten Stellen
brauchst (zB für nen LCD oder Sensor, oder ...) mit in den Quelltext zu
schreiben. Man muß dann nicht extra suchen und man hat die Ideen die
einen zu einer Lösung geführt haben immer sofort griffbereit.

Wenn du ein Programm ändern willst, an dem du 2 Monate nicht mehr dran
warst und es sind keine Kommentare drin ... => Schmeiß es weg und mach
es nochmal. Die Einarbeitungszeit übersteigt meißt die Zeit die man fürs neu
machen braucht.

Ach ja ... und gewöhn die Einrückungen für den Schleifeninhalt, Inhalte von
Case-Anweisungen, If Then Else , Subroutinen, ... usw an. Es erhöht die
Lesbarkeit ganz enorm.

Gruß
Dino
 
Sach mal einer von den Bascom-Cracks was dazu ... ;)

Hi Dino!

Ich bin zwar von den oben gefragten Personenkreis noch weit entfernt, aber möchte dich auch nicht im Regen stehen lassen. ;)

Nun hör mal auf alle Knöpsche bei BASCOM anzuklicken.... datt gibbet nur Murx! :D

Grandpa hat schon Recht... Innerhalb eines Programmes kann man alle Anweisungen die unter "Options" gemacht werden wieder überschreiben!

So steht es auch in der Hilfe von BASCOM:
The baud rate is selectable from the Compiler Settings. It is stored in a configuration file. The $BAUD directive overrides the setting from the Compiler Settings.


Ich weiß gar nicht, wer diese "Options" überhaupt noch einstellt? :hmmmm:
OK, bei der Verbindung zum Programmer muss man einmal eine Angabe machen.... das war es dann aber auch.

Zu Beginn hat mich dieses Menü auch Nerven gekostet, aber inzwischen beachte ich es gar nicht mehr. ;)

Zur Baudrate der seriellen Verbindung muss nur die Baudrate im Programm angegeben werden.
Wenn dies nicht der Fall ist, dann wird mit dem "Defaultwert" von 1200baud gearbeitet.

Wie Grandpa also schon schrieb....
Immer die Angabe "$baud = 9600" im Header des Programms einfügen.

Beispiel aus der BASCOM-Hilfe:
Code:
$regfile = "m48def.dat"

$crystal = 4000000

$baud = 19200

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0


Print "Hello"


'Now change the baud rate in a program
Baud = 9600

Print "Did you change the terminal emulator baud rate too?"

End


Bitte die beiden Befehle "$baud" und "Baud" nicht verwechseln!
Wie im obigen Beispiel zu sehen ist, kann man mit "Baud" sogar im vollen Galopp die Pferde wechseln..... also von 19200baud auf 9600baud !
Man MUSS das aber nicht!

Gruß,
Cassio
 
Hi Chopp,

Wenn du ein Programm ändern willst, an dem du 2 Monate nicht mehr dran
warst und es sind keine Kommentare drin ... => Schmeiß es weg und mach
es nochmal. Die Einarbeitungszeit übersteigt meißt die Zeit die man fürs neu
machen braucht.
Ok, diesem Aufwand betreibe ich nicht, aber macht doch irgendwie Sinn...

Ach ja ... und gewöhn die Einrückungen für den Schleifeninhalt, Inhalte von
Case-Anweisungen, If Then Else , Subroutinen, ... usw an. Es erhöht die
Lesbarkeit ganz enorm.
Sorry, hatte ich vergessen zu erwähnen. Kommentare und Einrücken wie beschrieben. Und farblich hervorheben kannst Du ja auch. Ich habe z. Bsp.: Hintergrund schwarz, Kommentare grün (wie auf nem alten CNC- Bildschirm, schluchz, jammer, Schmerz des Verlorenen....), Variablen rot usw.


Grüsse,

Michael
 
Wenn du ein Programm ändern willst, an dem du 2 Monate nicht mehr dran
warst und es sind keine Kommentare drin ... => Schmeiß es weg und mach
es nochmal. Die Einarbeitungszeit übersteigt meißt die Zeit die man fürs neu
machen braucht.

Hi Dino!

So ganz kann ich diese Meinung auch nicht teilen, aber es hängt vermutlich mit der Größe des Programmes zusammen. ;)

Ich versuche meistens meine Programme immer in der gleichen Weise aufzubauen. Natürlich sind sie in der Funktion immer anders, aber das Grundgerüst ist meist immer gleich.

Natürlich mache ich auch mal den einen oder anderen Kommentar, aber nicht so umfangreich wie du. ;)
Dafür nehme ich meist den Schaltplan und notieren mir einige Dinge auf einem separaten Blatt des Plans. Denke mal, dass dies nicht nur bei meinem geliebten sPlan möglich ist. :D

Gruß,
Cassio
 
Du sollst doch nicht tiefstapeln....:rolleyes:

Hi Grandpa!

Nee nee, lass mal.... das passt schon!

Nehmen wir mal an, dass Markus in Punkto BASCOM-Programmierung eine 100 jährige Eiche darstellt, dann bin ich wohl eher das Laub vom letzen Jahr. ;)

Gruß,
Cassio :ciao:
 
Hi Dino,

ich schreibe meist nur wenige Begriffe als Kommentar. Ganze Programmteile, die sich irgendwie selbst erklären (anhand der Variablennamen oder Algorithmen) bleiben sogar unkommnentiert.
Hab ich beim Gfa- Basic auch so gemacht; Gewohnheiten legt man nur schwerlich ab.

Nach 2 Monaten das Programm sogleich verstehen - BASCOM machts möglich ;):p.


Grüsse,

Michael
 
Hi Cassio,

Nee nee, lass mal.... das passt schon!

Nehmen wir mal an, dass Markus in Punkto BASCOM-Programmierung eine 100 jährige Eiche darstellt, dann bin ich wohl eher das Laub vom letzen Jahr. ;)

na, ich habe bei Dir genug gesehen....;) Doch der Vergleich ist amüsant.


Grüsse,

Michael
 
Ich muß sagen, so umfangreich hatte ich mir das noch nicht vorgestellt.
Kein vergleich zu den alten S3 S5 oder S7 Dokumentationen die ich normalerweise mache.
Ganz zu schweigen vom alten Basic des CPC.
OK, ich muß zugeben, das hat was wenn man nach längerer Zeit was ändern muß.
Vielen Dank für die Super Antworten.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)