Mega328 programmeren met Arduino?

Hallo allen,

ik heb hier enkele printplaatjes voor een ventilatie systeem, met een Atmel Mega328P die ik graag volledig zou willen hergebruiken.

De printjes hebben een IAQ Core C sensor https://www.mouser.be/datasheet/2/18/AAS-920-634F-Telaire-T6713-Series….

Een ULN2003 voor de klepaansturing in luchtkanaal

Een 8P dipswitch voor hun adres

En een RJ45 connector

Er zit ook een SPI aansluiting op, dat doet me vermoeden dat ze toch herprogrammeerbaar zijn?

Gisterenavond es begonnen zoeken, en vind vooral veel info terug om ze te programmeren met een Arduino.
https://www.arduino.cc/en/Tutorial/ArduinoISP#toc4
https://www.electronics-lab.com/project/installing-the-arduino-bootloa…

Met deze site's ben ik aan de slag gegaan.
De Arduino ISP laden is me gelukt,
de bootloader branden ook, arduino ide zegt branden gelukt.

Maar als ik nu een programma wil laden, lukt het niet en krijg deze melding avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xfb

Vroeger altijd met microchip gewerkt en ICSP en dat werkte.

Wie weet waar ik de mist in ga?

ASPA-tech.be
benleentje

Golden Member

...

[Bericht gewijzigd door benleentje op maandag 7 september 2020 17:02:06 (98%)

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Heb je voor het flashen van de bootloader de juiste programmer geselecteerd?

PE2BAS
Lucky Luke

Golden Member

Als je ze via de ISP-connector wilt programmeren heb je geen bootloader nodig (maar wel steeds de programmer of dus een arduino-als-ISP).

Je kunt die methode ook alleen gebruiken om de bootloader er in te zetten, en ze daarna via de seriele poort benaderen, b.v. met een USB serial converter. Dan werkt het helemaal hetzelfde als een arduino.

Maar de bootloader gebruiken via de ISP connector gaat niet.

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

@hardbass, ik heb Arduino as ISP gekozen, als board de arduino duemilanove/diecimila.
Met deze instellingen kan ik de bootloader flashen, en krijg ook succes bij einde.

@Lucky Luke, duidelijk, bedankt.
Ik heb al een poging gedaan om serieel te flashen na de bootloader er in gezet te hebben via ISP, maar lukt me nog niet.

Heb op het te hergebruiken printje draden op de rx en tx gesoldeerd en aangesloten op rx tx van Arduino.
Telkens ik een test wil uploaden, bv blink krijg ik foutmelding.
Zelfde instellingen zoals hierboven

Gaat doel mcu niet in program mode?

ASPA-tech.be
bprosman

Golden Member

@hardbass, ik heb Arduino as ISP gekozen, als board de arduino duemilanove/diecimila.
Met deze instellingen kan ik de bootloader flashen, en krijg ook succes bij einde.

Dan kun je op deze manier toch ook je code er in flashen ?
Waarom wil je per se een bootloader dan ?

De jongere generatie loopt veel te vaak zijn PIC achterna.

Je kan de arduino als "programmer" gebruiken. Dan kan je vanalles in je target systeem proppen. Een bootloader bijvoorbeeld. Maar dat lijkt me in jou geval niet handig.

Met de bootloader kan je via RX/TX serieel een programma naar je ventilatie-systeem-printjes sturen. Heb je die aangesloten? Nee? Nou, dan gaat dat niet werken.

Of de arduino omgeving de mogelijkheid heeft om niet via bootloader maar via een programmer een sketch in een target systeem te zetten weet ik niet. De bootloader op die manier wel, maar een gewone sketch: ik weet het niet. Nog nooit geprobeerd.

Ik heb het net even geprobeerd. Als je "arduino nano" o.i.d. selecteert heeft ie een paar regels lager in het "tools" menu de programmer staan. De "AVR ISP MKII" is de programmer die de bootloader nadoet: De bootloader reageert alsof het gewoon een programmer is die een ANDERE atmega aan het programmeren is, maar in werkelijkheid programmeert hij zichzelf.

Als je een paar regels lager "ArduinoISP" selecteert denk ik dat je sketch via de arduino naar je targetbordje gaat.

Ik zou aanraden gewoon een programmer te kopen:
https://www.ebay.com/itm/USBasp-USBISP-51-AVR-10-Pin-USB-Programmer-3-…
Duurt effe totdat je hem hebt, tot die tijd kan je je arduino blijven gebruiken maar als ie er is, dan komt je arduino vrij voor andere projectjes.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Wel dat had ik dus ook zo in gedachten...
Een ESP8266 ofzo kan ik wel goed flashen met arduino bord. Zelden problemen.

Om op bprosman te reageren, daar had ik ook aan gedacht,
maar krijg dan dezelfde fout terug
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xb3

Maar laat ik de arduino de bootloader flashen, krijg ik geen errors, enkel dat bootloader flashen gelukt is. Ook al andere instellingen geprobeerd, maar dan wil ie zelfs al niet beginnen aan de bootloader.

Om nog even bij rew te komen, na de het flashen van bootloader heb ik de benodigde bedrading verwijderd, Vcc gnd rx en tx aangesloten, maar zelfde verhaal.

Een andere programmer kopen voor enkel dit vind ik nutteloos?
Tis tenslotte wel de zelfde chip he, enkel een ander formaat.

ASPA-tech.be
bprosman

Golden Member

Ik heb een paar van deze programmers, (USBASP), drama dingen qua drivers (Windows 10). Heb op een gegeven moment de moed maar opgegeven en zo iets gekocht :
https://www.ebay.com/itm/AVRISP-AVR-ISP-mkII-Programmer-AVRISPmkII-ATA…

Of een Arduino (Uno) opofferen en daar een programmer van maken:
https://www.circuitsonline.net/forum/view/132006/33

Dat doe je al, dan zou je "Blink" er in moeten krijgen en laten werken mits je de LED aan het goede pootje definieert natuurlijk.
Die RX/TX hoeft geen level shifter tussen ?

De jongere generatie loopt veel te vaak zijn PIC achterna.

Voor zover ik al gelezen heb zouden de io's 5V tolerant zijn.
Target voed ik met 3,3V

Kan het zijn dat het target de programmering tegenhoud?
Op het target bordje is er een 6pins header, SPI connectie.

Verder nog een 3 polige header met 1x gnd 1 pin loopt naar de RJ45 en de andere nog niet gevonden

ASPA-tech.be
bprosman

Golden Member

Voor zover ik al gelezen heb zouden de io's 5V tolerant zijn.

Ja, maar je seriele poort (van je laptop/PC) is geen 5V, of heb je er al een converter tussen gezet ?

Maar even stapje terug.
Bootloader krijg je er in geflashed, dus je processor houd het programmeren niet tegen.

Ik zie 2 leds, RX en CVE, zeker weten dat TX naar buiten uitgevoerd is ? Ik zou beginnen met eens het schema uit te tekenen.

Heb je "Blink" geprobeerd er in te krijgen ?

stk500_getsync()

Als de bootloader er in zit gaat verder programmeren vervolgens via de seriele poort. Hoe heb je die op je PC/Laptop aangesloten ?

[Bericht gewijzigd door bprosman op dinsdag 8 september 2020 11:42:51 (15%)

De jongere generatie loopt veel te vaak zijn PIC achterna.
eSe

Honourable Member

Beste, staan je "fuses" goed? Er is een lockbit dat het programmeren via SPI tegenhoud/toelaat. (SPIEN = 0 -> SPI programeren ok, SPIEN = 1 -> SPI programeren niet toegestaan.

Ik gebruik "avrdudegui" om mijn ATMega's te programeren, kan je ook makkelijk de 'lockbits' instellen.

Groetjes,
eSe

CChheecckk yyoouurr dduupplleexx sswwiittcchh..

Als seriele poort gebruik ik de Rx en Tx van arduino,
zoals te vinden op volgende site https://www.electronics-lab.com/project/programming-atmega328p-microco…

eSe, voor zover ik begrepen had worden de fuses goed gezet bij het flashen van bootloader.
Heb avrdudegui geinstalleerd, kan target kiezen, maar niet de juiste compoort...

ASPA-tech.be

Nadat je de bootloader hebt geprogrammeerd zou je via de seriële je sketch moeten kunnen uploaden naar je eigen board, maar..

In de Arduino boards zit de reset lijn van de target ook nog vast aan de RTS/DTS lijn van de USB naar serieel convertor. Hiermee wordt de target gereset voordat hij serieel geprogrammeerd kan worden.

Als jou board niet over deze verbindingen beschikt zal de serieel upload niet werken.

bprosman

Golden Member

Fuses worden gewoon overschreven met programmeren.

Als seriele poort gebruik ik de Rx en Tx van arduino,
zoals te vinden op volgende site https://www.electronics-lab.com/project/programming-atmega32...duino-i…

En die heb je met een USB naar serieel convertertje aangesloten ?
Is de COM poort van de converter wel te zien in de "Device manager" ?
(Even er van uitgaande dat je windows gebruikt).

Maar nogmaals, waarom al deze moeite.
Je maakt een "Sketch" met je eigen programma, die compileer je, daar komt een .HEX file uit.
Vervolgens programmeer je die via de ICSP connector in de ATMEGA328.
Waarom toch dat gedoe met een bootloader als je een ICSP connector hebt ?

In de Arduino boards zit de reset lijn van de target ook nog vast aan de RTS/DTS lijn van de USB naar serieel convertor.

Bij een "Nano" is dat de DTR lijn die via een C'tje van 100n aan de /RESET van de processor hangt.

Als jou board niet over deze verbindingen beschikt zal de serieel upload niet werken.

Het kan wel maar dan moet je op het juiste moment op de RESET button drukken, hoop gedoe.
Upload a sketch, and when you click the upload button in the IDE, also press the reset button of the Nano. Release the reset button when the IDE changes from Compiling to Uploading.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Via bootloader of via iscp maakt me niet uit.

"En die heb je met een USB naar serieel convertertje aangesloten ?
Is de COM poort van de converter wel te zien in de "Device manager" ?
(Even er van uitgaande dat je windows gebruikt)."
Ik gebruik de arduino als seriele poort, en ja die zie ik in win10 als com5.

ASPA-tech.be
bprosman

Golden Member

Via bootloader of via iscp maakt me niet uit.

Waarom programmeer je dan je eigen programma er niet meteen via ICSP in ?

Ik gebruik de arduino als seriele poort, en ja die zie ik in win10 als com5.

Of ik begrijp je niet of je begrijpt niet hoe een bootloader werkt.
Via de bootloader is een ander "PAD" van connectie (zie afbeelding).

De jongere generatie loopt veel te vaak zijn PIC achterna.

Gelukt!!

Heb es een nano genomen ipv een Uno, ICSP verbonden, instelling goed gezet en voila.

Als test nog es de Arduino Uno er aan gehangen, en werkt niet

Waarom weet ik niet.
Kan nu verder met testen.

Aan allen een welgemeende DANK U

ASPA-tech.be
eSe

Honourable Member

Fuses worden gewoon overschreven met programmeren.

Niet altijd, dit kan je in avrdude in of uitschakelen. Volgens mij is er geen 'default' fuse waarde (behalve bij een nieuwe, ongeprogrammeerde AVR)

Als ik een xtal of de inwendige osc. gebruik, dan kan ik de fuses zetten voor dat gebruik. Ik hoef deze niet bij iedere upgrade/wijziging van mijn programma terug te herprogrameren.

Groetjes,
eSe

CChheecckk yyoouurr dduupplleexx sswwiittcchh..
Lucky Luke

Golden Member

Wacht ff. Gebruik je een arduino als usb-serial convertor soms?

Dan gaat ondertussen de Atmega op die arduino ook op seriele informatie reageren, tenzij je ' m in reset houd (resetlijn aan gnd leggen).

Heb je wel tx van je USB-serial convertor op RX van je chip-met-bootloader en RX van je USB-serial-converter aan TX van je chip-met-bootloader? En dus niet RX op RX en TX op TX? (Anders staan ze met 2 monden op elkaar gedrukt te schreeuwen en met 2 oren op mekaar gedrukt te luisteren. Dat werkt niet)

(Daarom is MISO/MOSI dus zo geniaal, dat is eenduidig. Nu alleen nog even politiek correcte termen ervoor verzinnen, en genderneutrale connectoren, en we zijn er. Not even completely kidding: als er mensen blij worden van hernoemen moet dat kunnen, en met genderneutrale connectoren heb je ook nooit meer het verkeerde gender op voorraad en tekort aan de goeie.)

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

@Lucky, ja dat deed ik idd, heb zelfs om te testen de mega uit het arduino bord gehaald. Geen succes
En tx op rx en rx op tx :)

Deze namiddag zag ik dan een werkloze Nano liggen, ISCP nano naar target ISCP, instelling in arduino gezet zoals gistern, dus board:
arduino duemilanove/diecimila.

Programmer: arduino to ISCP

Dus niks geflashed op de nano en dan direct de blink sketch in target geflashed. Zag direct aan de leds dat de communicatie oànderling er nu wel was en blink zat in target. :)

Nu kan ik verder met het projectje( heb es 5 kleppen gekregen en nooit aan toe gekomen om iet mee te doen...)

Mijn doel is om diy versie te maken van bijgevoegde foto.
De box waar de ventilator inzit en de kleppen op aangesloten zijn heb ik al, er zit een redelijke slakkenhuisventilator in, aangestuurd door een yaskawa freq die zn commando krijgt van een siemens plc'tje die via mqtt communiceert met Home Assistant en Pimatic.
Gans die zooi heb ik al daaien in testfase, kon enkel nog niet de stand van de kleppen regelen...

ASPA-tech.be