Hoeksche Waard NL
Offline
Newbie
Karma: 2
Posts: 22
het leven is een feest, maar je moet zelf de slingers ophangen
|
 |
« on: June 29, 2012, 12:00:33 pm » |
Waarde Forumleden, Binnen dit forum is wel duidelijk geworden hoe het moet, dus dat hoef ik niet te vertellen. De voorbeeldprogramma’s zijn in de taal C geschreven. Bascom programma's zijn eenvoudiger, makkelijker, simpeler en daardoor begrijpelijker. Probeer het eens, en geef je mening. BASCOM (voor uno) Het is mijn bedoeling om Arduino met Bascom te programmeren. Bascom is een basic dialect. Downloaden van www.mcselec.com. kies voor Bascom AVR (ik heb verzie 2.0.7.1). Na installeren, selecteer je via: options > compiler > chip = m328pdef.dat Dit is het hart van Arduino. Via dit menu kan je diverse zaken instellen, daarover later meer. Het selecteren van de juiste chip is belangrijk. Ook de kristalfrequentie moet worden ingesteld. Dit doe je via: options > compiler > communication > frequency = 16000000 Hz Dit is belangrijk omdat alle timer en communicatie snelheiden door het kristal wordt bepaald. Direct uploaden naar Arduino gaat (nog) niet. Daarvoor zijn er wat hulpprogramma’s nodig. WINAVR Downloaden van: http://sourceforge.net/projects/winavr/files/latest/download?source=filesNa downloaden moet je dit installeren en je hebt er verder geen omkijken meer naar. Dit met grote dank aan Abraham Vreugdenhil uit het Westland, die mij hierop attendeerde. XLOADER Hiermee upload je het HEX bestand in de Arduino. (Een HEX bestand is het programmabestand voor de Arduino.) Downloaden van: http://xloader.russemotto.com/ daar staat dan xloader.zip v1.00 678kb. Start Xloader en zet de communicatie op 115100 bps Kies het device Uno(Atmega328) Xloader heeft een beperking, je kan geen com-poort hoger dan 9 kiezen. Mocht het zo zijn dat de Uno een hogere poort heeft toegewezen gekregen, dan moet je dat wijzigen. Het is nu een kwestie van hex-bestand kiezen, dit hex bestand is door Bascom gemaakt. De Sketch van Arduino maakt ook een hex-bestand, maar slaat dit niet op, zoals Bascom wel doet. Selecteer het te uploaden bestand en je bent in zaken, uploaden en het werkt. Wijzigen com-poort Ga (in Windows) naar: configuratiescherm > systeem > apparaatbeheer > poorten Kies de Uno en wijs een lager poortnummer toe. Nu is het een kwestie van ervaring opdoen. Door de in C geschreven voorbeeldprogramma’s in Bascom te vertalen. Controle doe je door de werking van beide programma’s met elkaar te vergelijken. Groeten, Dré Jansen.
|
|
|
|
|
Logged
|
(groot)vader van 3 kinderen, 2 kleinkinderen. werkzaam als onderhoudsmonteur in een toltunnel hobby's mechanotronica en (tour)fietsen.
|
|
|
|
Hoeksche Waard NL
Offline
Newbie
Karma: 2
Posts: 22
het leven is een feest, maar je moet zelf de slingers ophangen
|
 |
« Reply #1 on: July 01, 2012, 04:57:29 am » |
Geacht Forum,
Ik heb hieronder drie maal het programma van het knipperledje (D13) in Bascom herschreven. Hierover zou ik uw mening willen horen.
BLINK-1 Het programma zoals het in Bascom geschreven zou kunnen worden. Commentaar staat achter een ' (apostrofje)
BLINK-2 Hier worden de Arduino-namen toegepast. De vertaling gebeurd IN het hoofdprogramma zelf
BLINK-3 Hier is een apart bestand geschreven, waarin de aliassen worden benoemd. Het doel: hoofdprogramma overzichtelijk houden.
Dit programma heeft een aanvulling: ' Arduino_configuratie.bas In die aanvulling worden additionele zaken benoemd, zoals aliassen Als voorbeeld heb ik hier meerdere zaken benoemd, die voor het knipperledje niet worden gebruikt.
Persoonlijk kies ik er voor om de alias-benamingen IN het hoofdprogramma te plaatsen. De reden is, dat je dan alles bij elkaar hebt. Met commentaar en verwijzingen zal het programma toch wel overzichtelijk blijven Uiteraard kan het in de toekomst toch anders blijken te zijn, de tijd zal het leren. Verder ben ik van mening om als ik een alias voor portB.5 gebruik, dit dan maar meteen LEDje te noemen. D13 is net zo onduidelijk als B5. daarmee zijn de Arduino benamingen om zeep geholpen. Bovendien programmeren we hier in Bascom, niet in C.
Wat is uw mening hierover? Programma's zijn rechtstereeks in Bascom over te nemen.
================================ ' BLINK-1
' on board LEDje op D13 knipperen
$regfile = "m328def.dat" ' Atmega-328 $crystal = 16000000 ' 16 Mhz Kristal ' de twee instellingen (Regfile en crystal) mogen ook worden weggelaten, omdat dit al in de compiler is aangegeven. ' omdat de compiler zijn instellingen wel eens 'vergeet' zou ik dit als standaard blijven gebruiken.
Ddrb.5 = 1 ' maak van poort B5 een uitgang
Do ' begin van het programma Toggle Portb.5 ' verander poort b5 van waarde is hij hoog, dan wordt hij laag. Waitms 1000 ' wacht 1000 ms Loop ' einde programma, begin opnieuw End
===================================== ' BLINK-2 ' ' on board LEDje op D13 knipperen ' bij deze vertaling wordt de poortnaam vooraf aangepast aan de naam die bij Arduino wordt gebruikt ' de Bascomnaam B5 krijgt een alias D13 (D13 Alias PORTB.5) ' als je dan toch aliassen gebruikt, benoem dan niet de poortnaam, maar geef het de naam van de toepassing ' bijvoorbeeld portb.5 = motor (motor Alias portb.5)
$regfile = "m328def.dat" ' Atmega-328 $crystal = 16000000 ' 16 Mhz Kristal
D13 Alias Portb.5 ' je kan hier elke willekeurige benaming toewijzen. Ddrb.5 = 1 ' maak van poort D13 een uitgang
Do ' begin van het programma Toggle D13 ' verander poort D13 van waarde Waitms 1000 ' wacht 1000 ms Loop ' einde programma, begin opnieuw End
=======================================
' BLINK-3 ' ' on board LEDje op D13 laten knipperen
$regfile = "m328def.dat" ' Atmega-328 $crystal = 16000000 ' 16 Mhz Kristal
$include "blink-3_config.bas" ' hierin worden onder andere de namen toegewezen ' dit bestand mag elke naam en extensie hebben.
Do ' begin van het programma Toggle D13 ' verander poort D13 van waarde Waitms 1000 ' wacht 1000 ms Loop ' einde programma, begin opnieuw End
========================================== ' Arduino configuratie
' digitale variabelen D0 Alias Portd.0 ' = RxD D1 Alias Portd.1 ' = TxD D2 Alias Portd.2 D3 Alias Portd.3 ' = PWM D4 Alias Portd.4 D5 Alias Portd.5 ' = PWM D6 Alias Portd.6 ' = PWM D7 Alias Portd.7 D8 Alias Portb.0 D9 Alias Portb.1 ' = PWM D10 Alias Portb.2 ' = PWM D11 Alias Portb.3 ' = PWM D12 Alias Portb.4 D13 Alias Portb.5 ' onboard LEDje
' analoge variabelen A0 Alias 0 ' Portc.0 A1 Alias 1 ' Portc.1 A2 Alias 2 ' Portc.2 A3 Alias 3 ' Portc.3 A4 Alias 4 ' Portc.4 A5 Alias 5 ' Portc.5
' aan en uit waarden Const Aan = 1 ' pin = hoog Const Uit = 0 ' pin = laag
=========================================== groeten, Dré Jansen
|
|
|
|
|
Logged
|
(groot)vader van 3 kinderen, 2 kleinkinderen. werkzaam als onderhoudsmonteur in een toltunnel hobby's mechanotronica en (tour)fietsen.
|
|
|
|
Hoeksche Waard NL
Offline
Newbie
Karma: 2
Posts: 22
het leven is een feest, maar je moet zelf de slingers ophangen
|
 |
« Reply #2 on: July 08, 2012, 07:42:40 am » |
Aanvulling:
vertaalde programma's: AnalogReadSerial; BareMinium; Blink; DitalReadSerial; Fade; ReadAlalogVoltage. ik ga rustig verder, leer er veel van, maar hier komen geen reacties.
de vertalingen omvatten de volgende bestanden: het originele xx.ino bestand; xx.bas en xx.hex het hex bestand is het eigenlijke programma dat ook door Arduino wordt geupload maar helaas niet laat zien.
hieronder de BAS bestanden, het origineel hebben jullie al, en aan een HEX bestand zie je niet veel. download het gratis Bascom programma van MCSelec.com en je kan zelf het HEX bestand maken.
============= '( AnalogReadSerial Leest de analoge ingang port A0 (= C.0) en geeft het resultaat op de monitor. sluit de loper van een potmeter aan op A0 en de overige twee op massa en +5V ') $regfile = "m328def.dat" ' Atmega-328p $crystal = 16000000 ' 16 Mhz Kristal $baud = 9600 'communicatiesnelheid terminal $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'A-D convertor inschakelen
Do ' begin van het programma Print "{012}" 'maak het scherm schoon. Print "waarde is " ; Getadc(0) 'druk waarde af (op beeldscherm) Waitms 100 ' wacht 1000 ms Loop ' einde programma, begin opnieuw End
========================
'( BareMinimum het minimale dat nodig is voor het programmeren. het eerste gedeelte de instellingen en declaraties ook subroutines moeten worden gedeclareerd. Tussen do en loop komt het zich herhalende deel van het programma ') $regfile = "m328pdef.dat" ' Atmega-328p $crystal = 16000000 ' 16 Mhz Kristal $baud = 9600 'communicatiesnelheid terminal $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space
' hier de declaraties en instellingen
Do ' begin van het programma
' hier de zich steeds herhalende routines
Loop ' begin opnieuw bij do End ' einde programma
=======================
'( Blink laat onboard ledje knipperen 1 seconde aan, een seconde uit. dit ledje zit aangesloten op digitale poort B5 bij Arduino bekend als D13 ')
$regfile = "m328def.dat" ' Atmega-328 $crystal = 16000000 ' 16 Mhz Kristal Ddrb.5 = 1 ' maak van poort B5 een uitgang
Do ' begin van het programma Toggle Portb.5 ' verander poort b5 van waarde is hij hoog, dan wordt hij laag en andersom. Waitms 1000 ' wacht 1 seconde Loop ' einde programma, begin opnieuw End
==========================
'( DigitalReadSerial leest de waarde van datapootje D2 en presenteert dit op de monitor. let op, de interne pull-up weerstand is UITgeschakeld, zelf toevoegen! schakel naar massa met pull-up weerstandje naar +5V het knopje moet een naam krijgen: ik noem hem: 'knopje' ') $regfile = "m328pdef.dat" ' Atmega-328p $crystal = 16000000 ' 16 Mhz Kristal $baud = 9600 ' communicatiesnelheid terminal $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space
Ddrd.2 = 0 ' maakt van poort D pootje 2 een ingang Knopje Alias Pind.2 ' geeft naam: knopje aan de latch van poort D2
Do If Knopje = 0 Then ' bij ingedrukt knopje ligt de ingang aan massa potentiaal Print "knopje ingedrukt" Else Print "knopje los" ' bij een losgelaten knopje zorgt de pull-up weerstand voor 5V op de ingang End If Loop End
=========================
'( DigitalReadSerial-2 Leest De Waarde Van Datapootje D2 En Presenteert dit Op De Monitor. in dit programma wordt de interne pull-up weerstand ingeschakeld het on-board LEDje wordt ook aangestuurd. verder is dit programma gelijk aan het origineel uitsluitend een knopje is vodoende, schakel D2 naar massa. het knopje moet een naam krijgen: ik noem hem: 'knopje' hier is nog geen rekening met debounce gehouden. ') $regfile = "m328pdef.dat" ' Atmega-328p $crystal = 16000000 ' 16 Mhz Kristal $baud = 9600 'communicatiesnelheid terminal $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space
Ddrb.5 = 1 'maakt van poort D13 een uitgang (LEDje) Ddrd.2 = 0 'maakt van poort D2 een ingang Portd.2 = 1 'schakel voor D2 de pull-up weerstand in Knopje Alias Pind.2 ' geeft naam: knopje aan de latch van poort D2
Do Print "{012}" ' scherm schoonmaken If Knopje = 0 Then ' bij ingedrukt knopje ligt de ingang aan massa potentiaal Print "knopje ingedrukt" Set Portb.5 ' ledje aan Else Print "knopje los" ' bij een losgelaten knopje zorgt de pull-up weerstand voor 5V op de ingang Reset Portb.5 ' ledje uit End If Waitms 100 ' voor wat rust in de tent Loop End
================================
' Fade ' het faden van een led op pootje D9 met PWM ' fade van helder naar 0 in stapjes van 5 met pauzes van 30 ms
$regfile = "m328pdef.dat" ' Atmega-328p $crystal = 16000000 ' 16 Mhz Kristal $baud = 9600 ' communicatiesnelheid terminal $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space
Ledje Alias Pwm1a ' PWM poort naam van ledje geven Config Timer1 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down ' PWM generator instellen Dim Helder As Byte ' lichtintensiteit van ledje
Do ' begin For Helder = 0 To 255 Step 5 ' in stapjes van 5 naar donker Pwm1a = Helder ' lampje aansturen Waitms 30 ' effe wachte Next Helder ' volgende stap
For Helder = 255 To 0 Step -5 'terugstappen naar vol licht Pwm1a = Helder ' lampje instellen Waitms 30 ' effe wachte Next Helder ' volgende stapje Loop ' overnieuw End
=======================================
tot zo ver deze vertalingen mocht er geen belangstelling zijn, dan was dit mijn laatste mailing. groeten, Dré
|
|
|
|
|
Logged
|
(groot)vader van 3 kinderen, 2 kleinkinderen. werkzaam als onderhoudsmonteur in een toltunnel hobby's mechanotronica en (tour)fietsen.
|
|
|
|
Forum Moderator
Belgium
Offline
Edison Member
Karma: 34
Posts: 1117
Arduino rocks; but with my plugin it can fly rocking the world ;-)
|
 |
« Reply #3 on: July 08, 2012, 12:35:50 pm » |
Op zich vind ik het eel goed van jou dat je dit doet  Maar ik zie echt niet in hoe Bascom simpler is dan de Arduino taal. Met vriendelijke groet Jantje
|
|
|
|
|
Logged
|
|
|
|
|
The Netherlands
Offline
Newbie
Karma: 0
Posts: 5
|
 |
« Reply #4 on: July 10, 2012, 03:32:40 am » |
Beste Dre,
Dit valt onder het hooftstuk 'waarom makkelijk als het ook moeilijk kan...' De standaard taal voor de Arduino is C. Nu kun je wel koppig aan je voorliefde voor BASIC vasthouden, maar ik vrag me af wat je daar mee opschiet. Er zullen weinig mensen zijn die je kunnen, of willen, helpen bij eventuele problemen en er zullen, denk ik, ook weinig zijn die in je BASIC excersities geinteresseerd zullen zijn.
Het is je goed recht om je hobby op jouw eigen manier te beoefenen. Maar als je ideeen uit wilt wisselen met anderen kun je beter overgaan op C.
Groetjes, Henk SWT
|
|
|
|
|
Logged
|
|
|
|
|
Hoeksche Waard NL
Offline
Newbie
Karma: 2
Posts: 22
het leven is een feest, maar je moet zelf de slingers ophangen
|
 |
« Reply #5 on: July 10, 2012, 10:30:36 am » |
hoi Jantje en Henk,
Bij nader inzien hebben jullie gelijk, het is inderdaad niet slim om in deze C wereld Bascom te promoten. Ik heb met FEZ (een ander C platform) onprettige ervaringen met C opgedaan.
In een grijs verleden had ik positieve Bascom ervaringen, die mij ooit een eerste prijs hebben opgeleverd (reisje naar Californië). Binnen de B-plus groep, waarvan ik lid ben, wordt uitsluitend met Bascom gewerkt. Daar vind ik veel ondersteuning. In de Robotica groep waar ik ook al lid van ben, zijn twee kampen, het C# en Bascom kamp. Allebij erg goed. Ik heb voldoende ondersteuning, mogelijk zijn er meerderen die met mij meevoelen, vandaar dit proefbalonnetje.
Als iemand binnen dit forum C toch te moeilijk vind, dan moet hij Bascom eens proberen. Andersom kan en mag natuurlijk ook. Uitproberen kost niets, er is een gratis demoverzie. Jullie zijn helemal los op C, houden zo!
groeten, Dré Jansen
|
|
|
|
|
Logged
|
(groot)vader van 3 kinderen, 2 kleinkinderen. werkzaam als onderhoudsmonteur in een toltunnel hobby's mechanotronica en (tour)fietsen.
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9551
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #6 on: July 11, 2012, 01:29:46 pm » |
Hoi Dre,
Hoewel ik zelf niet snel in BASCOM zal gaan programmeren zie ik in elk geval wel een paar pareltjes. - Toggle() is een vaak gebruikt iets dus daar wil ik wel een C-variant van, - WaitMs() vind ik 10x duidelijker dan delay() vanwege de toevoeging ms.
Om de discussie aan te scherpen, in bladen als ELEKTOR staan vaak BASCOM listings, en deze zijn downloadbaar en mezelf kennende heb ik geen zin om deze in C++ te vertalen. Dus op een gegeven moment komt die BASCOM omgeving vanzelf.
Verder een vraag: Hoe werkt het met het zelf maken van libraries in BASCOM? bv voor een sensor of actuator of een statistical lib etc.
gr. Rob
|
|
|
|
|
Logged
|
|
|
|
|
Hoeksche Waard NL
Offline
Newbie
Karma: 2
Posts: 22
het leven is een feest, maar je moet zelf de slingers ophangen
|
 |
« Reply #7 on: July 24, 2012, 11:29:01 am » |
Hoi Rob,
Inderdaad, als je met C vertrouwd bent dan is dat natuurlijk de juiste weg. Voor mij is dat Basic, en Bascom is voor mij de juiste weg. Ik heb er lang niets meer aan gedaan, dus ben ik de Arduino voorbeeld programma's in Bascom aan het vertalen Niet dat de mensheid hierop zit te wachten, maar ik steek ver veel van op, heb er plezier in, en daar draait het uiteindelijk allemaal om. Het werkt prima, als je interesse hebt in mijn schrijfsels, dan kan je ze krijgen.
Ik ben nu bezig met het voorbeeld van het keyboard, het muziek instrument. Ik zoek naar de druk gevoelige weerstanden, daarom kom ik weer op dit forum, waar ik al bijna gewist was. Maar gelukkig kan en mag ik er toch nog op komen. (dank u, moderator)
In dat keyboard programma wordt gebruik gemaakt van een bibliotheek. ik kan de C-programma's wel lezen, de toelichting en commentaren kan ik ook lezen, dat is de bron van mijn geknutsel. de bibliotheek kan ik wel lezen, maar of ik er wat aan heb? dat weet ik nog niet. Ik vermoed dat er met PWM een toon wordt gemaakt, de bibliotheek staan de voorgebakken noten. Of dat werkelijk zo is, weet ik niet.
In Bascom kan je ook gebruik maken van bibliotheken, dat zal zeker aan de orde komen Ik ben al vanaf eind zestiger jaren lid van Elektuur, later Elektor dus ik ben bekend met die materie. Er heeft enkele jaren geleden een komplete Bascom cursus in Elektor gestaan. Elektor heeft een boek uitgegeven speciaal voor de Atmel (Arduino) processor er is een vergelijkbaar boek over C en Atmega. Ja, ook dat boek heb ik gekocht, en ook het boek van Wim Dolman Micro controllers en de taal C. kortom, ik weet dat C erg moeilijk is.
ik heb meegedaan aan het FEZ project, een robotje. (overigens staat er nu een te koop voor E 50,- kijk maar eens op de HCC robotica site) normaal betaal je meer dan het dubbele. Van een particulier die C ook erg moeilijk vind. Ik doe de mijne nog niet weg, wie weet komt het er ooit nog eens van.
Groeten, Dré
|
|
|
|
|
Logged
|
(groot)vader van 3 kinderen, 2 kleinkinderen. werkzaam als onderhoudsmonteur in een toltunnel hobby's mechanotronica en (tour)fietsen.
|
|
|
|
Vilvoorde Belgium
Offline
Newbie
Karma: 1
Posts: 8
|
 |
« Reply #8 on: August 09, 2012, 10:56:59 am » |
Ik heb me net vandaag ingeschreven op dit forum. Met deze is dit mijn allereerste post.
Ik heb een hele tijd AVR's in C geprogrammeerd (AVR studio) en ben dan overgestapt naar Bascom omdat ik daarmee VEEL sneller werkende code kan schrijven. Ik heb uiteindelijk een ongelimiteerde versie van Bascom gekocht. De grootste applicatie die ik daarmee geschreven heb is een zender voor afstandsbedieningen (RC Transmitter), 30 A4-tjes text en code waarvan heel veel commentaar.
Nu heb ik me recent een Ardiuno aangeschaft en ben ik aan het proberen om mijn transmitter code daarop aan de praat te krijgen. In bascom neemt die code 20k in... ik hoop dat ik dat in een Arduino van 30k ook kan laden. (Zou in C toch minstens even efficiënt moeten zijn dan in Basic)
Ik kan in ieder geval zeggen dat ik het heel interessant vond om hier te lezen hoe ik Bascom code in een Arduino kan laden.
Mijn hoofdreden om een Arduino te kopen was dat er daar een heel goedkope (12 Euro) versie van bestaat (de mini of was het de nano) en dat je geen programmer nodig hebt om je code daarin te laden. Als ik er dan in slaag om mijn transmitter daarin te programmeren dan zouden er velen zijn die mijn transmitter ook zelf kunne bouwen wardoor ze voor minder dan 200 euro een behoorlijk high-end transmitter hebben.
Tenslotte wil ik ook nog meegeven dat de C++-gebaseerde Arduino taal HEEL attractief is vooral omdat er een set objecten is die klaar zijn voor gebruik. Als je ooit zelf een LCD driver in C hebt "moeten" schrijven dan weet je ook waarom ik Bascom zo leuk vond en waarom ik de Arduino nu ook zo geweldig vind.
Ik probeer nog deze avond mijn eerste library te (beginnen) schrijven: Een Pulse_place_modulation_signal generator, dat is de core van mijn transmitter.
Groeten,
Jan Huygh
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 16
|
 |
« Reply #9 on: September 04, 2012, 01:04:07 pm » |
net aangemeld en kom ik dit tegen
ben al gewend met de duinomite mega in basic te programmeren
soms snap ik ook niet het gebruik van C want in basic is het vaak ook te doen zelfs makkelijker en sneller en waarom zou je moeilijk doen met C code als het ook makkelijker kan in basic code.
helaas zie ik niet hoe ik het programma kan downloaden zonder eerste even 200 euro neer te leggen.. geen basis versie te krijgen?
--edit
heb me de volgende code bij elkaar gescraapt maar de timer werkt niet de led onboard doet niks
' Arduino configuratie
' digitale variabelen 'D0 Alias Portd.0 ' = RxD 'D1 Alias Portd.1 ' = TxD 'D2 Alias Portd.2 'D3 Alias Portd.3 ' = PWM 'D4 Alias Portd.4 ' D5 Alias Portd.5 ' = PWM 'D6 Alias Portd.6 ' = PWM ' D7 Alias Portd.7
'D8 Alias Portb.0 ' D9 Alias Portb.1 ' = PWM 'D10 Alias Portb.2 ' = PWM ' D11 Alias Portb.3 ' = PWM 'D12 Alias Portb.4 'D13 Alias Portb.5 ' onboard LEDje
' analoge variabelen ' A0 Alias 0 ' Portc.0 'A1 Alias 1 ' Portc.1 ' A2 Alias 2 ' Portc.2 'A3 Alias 3 ' Portc.3 'A4 Alias 4 ' Portc.4 'A5 Alias 5 ' Portc.5
' aan en uit waarden 'Const Aan = 1 ' pin = hoog 'Const Uit = 0 ' pin = laag
'Ddrb.5 = 1 ' maak van poort D13 een uitgang ' Ddrb.5 = 0 ' maak van poort D13 een ingang ' on board LEDje op D13 knipperen ' bij deze vertaling wordt de poortnaam vooraf aangepast aan de naam die bij Arduino wordt gebruikt ' de Bascomnaam B5 krijgt een alias D13 (D13 Alias PORTB.5) ' als je dan toch aliassen gebruikt, benoem dan niet de poortnaam, maar geef het de naam van de toepassing ' bijvoorbeeld portb.5 = motor (motor Alias portb.5)
$regfile = "m328pdef.dat" ' Atmega-328p $crystal = 16000000 ' 16 Mhz Kristal $baud = 9600 'communicatiesnelheid terminal $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 'default use 40 for the frame space
'Now define Alias (optional, but easier to read)
Onboardled Alias Portd.5 'LEDs Cellogloop Alias Portd.1 Enablerelay1 Alias Portd.2 Enablerelay2 Alias Portd.3 Externled Alias Portd.4 Powercontrol Alias Portd.5 Alarmcontrol Alias Portd.6
Startup: 'Power Up Delay to stabilize the system (optional). Waitms 2000
'Define Program Variables: Dim Ttc As Word 'TickTock ISR Counter
'Set up Timer0, 8 Bit, with F = 8 MHz, PS = 64, 490.196 Intr / Sec Config Timer0 = Timer , On Timer0 Ticktock 'Run ISR
'Enable, (Turn On), the interrupts: Enable Interrupts Enable Timer0
Main: 'Main Loop Flashes LED0 using a Delay routine 'Toggle the LED On and Off 'Which state is On depends on how it is wired... 'STK500 uses 0 to turn On the LED, Reverse Logic 'This LED has a 50% duty cycle 'Do ' Reset Portd.5 ' Waitms 5000 '500 mSec delay ' Set Portd.5 ' Waitms 5000 'Loop
Ticktock: 'Timer0, 8 Bit, ISR 'F = 8 MHz, PS = 64, 490 Intr / Sec 'Increment TickTockCounter on each interrupt, reset it to zero every second. 'On STK500 Reset, (low), pin turns ON the LED, (Reverse logic). Ttc = Ttc + 1 'Increment TickTock Counter If Ttc >= 490 Then 'One Second Rollover Ttc = 0 End If
'Flash LED1 briefly each second. 'Duration of the flash is under software control. If Ttc > 2000 Then 'Turn on LED1 Set Portd.5 Else Reset Portd.5 End If Return
|
|
|
|
« Last Edit: September 04, 2012, 03:18:03 pm by LG046 »
|
Logged
|
|
|
|
|
Vilvoorde Belgium
Offline
Newbie
Karma: 1
Posts: 8
|
 |
« Reply #10 on: September 05, 2012, 11:50:12 am » |
Je kan best je bascom code op het Bascom forum posten als je hulp zoekt. Daar zijn er veel meer mensen die met Bascom werken dan hier. Maar beste... in Ticktock zeg je eerst "resetTtc als die groter is dan 490"... en later zeg je "zet bit als Ttc groter is dan 2000"... dat zal natuurlijk nooit voorkomen.
Jan Huygh
|
|
|
|
|
Logged
|
|
|
|
|
Hoeksche Waard NL
Offline
Newbie
Karma: 2
Posts: 22
het leven is een feest, maar je moet zelf de slingers ophangen
|
 |
« Reply #11 on: September 06, 2012, 12:45:52 pm » |
hoi LG046, Nee, je hoeft geen 200 euro te betalen, mag wel (op mijn rekening natuurlijk) Het kan gratis! vandaar die brede grijns op mijn gezicht ;-) Bascom downloaden van www.mcselec.com kies voor Bascom AVR. Na installeren selecteer je via: options > compiler > chip = m328pdef.dat Er zijn wat hulp programma’s nodig, zoals WINAVR downloaden van: http://sourceforge.net/projects/winavr/files/latest/download?source=filesNa downloaden moet je dit installeren en je hebt er verder geen omkijken meer naar. Dan is er nog AVRDUDE downloaden van http://www.nongnu.org/avrdude/. Maak een map aan op C:\avrdude Plaats hier het gedownloade zip bestand: avrdude-5.11-Patch7610-win32.zip Start het reeds geïnstalleerde Bascom programma, klik op: OPTIONS >> PROGRAMMER Selecteer: EXTERNAL PROGRAMMER. Geef het programma met pad aan C:\AVRDUDE\avrdude.exe Daaronder de parameter: -C c:\avrdude\avrdude.conf -p m328p -P com19 -c arduino -b 115200 -U flash:w:{FILE}:i Da’s een hele volle regel, het beste is om te kopiëren en de plakken. Vergeet vooral niet ‘use HEX file’ aan te vinken! LET OP!! Er is nóg iets dat je niet mag vergeten, in de instellingregel staat ergens ….com19…. Verander dat in jouw communicatiepoort, want anders werkt het natuurlijk niet! Klik op OK om de instellingen op te slaan. Als je met de PC wilt communiceren, dan is dat met de volgende instellingen: 9600 8 n 1 er is een Bascom forum op. http://www.mcselec.com/ daar vind je ook alle uitleg, handleiding etc etc. groeten, en veel suc6 ! Dré Jansen
|
|
|
|
|
Logged
|
(groot)vader van 3 kinderen, 2 kleinkinderen. werkzaam als onderhoudsmonteur in een toltunnel hobby's mechanotronica en (tour)fietsen.
|
|
|
|
BELGIUM
Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #12 on: November 05, 2012, 12:47:01 pm » |
Beste dre jansen,
Misschien een late reactie maar ik zou u graag bedanken voor uw nuttige info. Ik heb dagen gezocht naar hoe ik de uno kon programmeren via bascom. Ik wist wel hoe dit moest voor de Duemilanove maar dit bleek niet te werken. Ik ben nog vrij nieuw met heel het arduino gebeuren dus dat is al opzich eventjes gewoon worden he. Nu moet ik zeggen als leek op vlak van arduino vind ik bascom eigenlijk ook vrij soepel werken.
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Online
Sr. Member
Karma: 3
Posts: 435
A naughty mind is a joy forever.
|
 |
« Reply #13 on: December 03, 2012, 09:13:37 pm » |
Hoi Dre,
Na een tijdje het arduino-forum niet bezocht te hebben, wil ik je vertellen dat ik je bascom-verhaal waardeer. Zelf ben ik min of meer begonnen met Arduino daar ik A, met microcontrollers aan de slag wou en B. als vastgeroest Basic-fanaat (ben er al sinds de Apple II mee bezig) ook eens met C(++) aan de gang wou gaan.
Of het nu om een C++ of een Basic-project gaat, mij maakt het dus ook niet zoveel uit. Met name de gelijkenis tussen QB (waar ik de meeste ervaring in heb) en Bascom maken Bascom wel zeer interessant.
Door de mogelijkheid om veel meer code in een chip te proppen met Bascom, gebruik ik het ook nog met enige regelmaat, zeker bij chips met wat minder geheugen. Met een attiny2313 (2Kb) heb ik bijv. al een led-matrix-display gebouwd waar ik met arduino al gauw een 8-16 KB chip voor nodig had gehad. Waarom... zou ik dus ook een 8-12 euro Arduino kopen als ik het ook met een atmega8 van 80 cent en een paar extra onderdeeltjes (als ik die al nodig heb) en bascom kan realiseren ?
De mogelijkheid om zo'n beetje elke Atmel 8-bit chip zo... in Bascom te kunnen programmeren, AVR of 8051, terwijl je bij Arduino eerst ff flink opzoek zal moeten gaan/zelf er het juiste configuratie-bestand voor moet schrijven (8051 kan je daarbij wel op je buik kan schrijven), is naar mijn idee ook een geweldige pré voor Bascom.
De "strijd" tussen Basic- en C++- "fanaten", simpelweg daar de een met basic en de ander met c++ is begonnen, laat me eerlijk gezegd koud. C++ wordt beter ondersteund en er is in de arduino-wereld dus ook meer over te vinden, maar daarom is de basic variant naar mijn idee niet slechter of beter. Het is maar net... waar je de meeste ervaring mee hebt. Als er een redelijke atmega-compiler voor Cobol, Fortran, Pascal of andere talen was geweest (weet eigenlijk niet of die er zijn), dan hadden we waarschijnlijk een gelijke discussie over die talen gehad.
Het beste blijft waarschijnlijk assembler, maar voordat je dat voor Atmel-chips totaal onder de knie hebt ben je gauw x jaar verder en assembler lijkt het me ook niet echt een discussie voor een site die opgezet is om mensen in contact te brengen met het begrip microcontroller, al kan je het in principe wel in beide talen gebruiken.
|
|
|
|
« Last Edit: December 03, 2012, 09:28:26 pm by Simpson_Jr »
|
Logged
|
|
|
|
|
|